summaryrefslogtreecommitdiff
path: root/community/openshadinglanguage/llvm32.patch
diff options
context:
space:
mode:
Diffstat (limited to 'community/openshadinglanguage/llvm32.patch')
-rw-r--r--community/openshadinglanguage/llvm32.patch71
1 files changed, 71 insertions, 0 deletions
diff --git a/community/openshadinglanguage/llvm32.patch b/community/openshadinglanguage/llvm32.patch
new file mode 100644
index 000000000..5eb63bcf3
--- /dev/null
+++ b/community/openshadinglanguage/llvm32.patch
@@ -0,0 +1,71 @@
+commit c391ceb1936459b70147d6f8ac389ded26a7e028
+Author: Sven-Hendrik Haase <sh@lutzhaase.com>
+Date: Fri Dec 28 09:00:33 2012 +0100
+
+ Fix for LLVM 3.2
+
+diff --git a/src/liboslexec/llvm_headers.h b/src/liboslexec/llvm_headers.h
+index 41a7a11..5ff4384 100644
+--- a/src/liboslexec/llvm_headers.h
++++ b/src/liboslexec/llvm_headers.h
+@@ -45,10 +45,18 @@ namespace llvm = LLVM_NAMESPACE;
+ #include <llvm/LLVMContext.h>
+ #include <llvm/Module.h>
+ #include <llvm/PassManager.h>
++#if OSL_LLVM_VERSION >= 32
++#include <llvm/IRBuilder.h>
++#else
+ #include <llvm/Support/IRBuilder.h>
++#endif
+ #include <llvm/Support/ManagedStatic.h>
+ #include <llvm/Support/MemoryBuffer.h>
+ #include <llvm/Support/raw_ostream.h>
++#if OSL_LLVM_VERSION >= 32
++#include <llvm/DataLayout.h>
++#else
+ #include <llvm/Target/TargetData.h>
++#endif
+
+ #endif /* OSL_LLVM_HEADERS_H */
+diff --git a/src/liboslexec/llvm_instance.cpp b/src/liboslexec/llvm_instance.cpp
+index 8709c8b..3e42557 100644
+--- a/src/liboslexec/llvm_instance.cpp
++++ b/src/liboslexec/llvm_instance.cpp
+@@ -1273,13 +1273,21 @@ RuntimeOptimizer::llvm_setup_optimization_passes ()
+ //
+ m_llvm_func_passes = new llvm::FunctionPassManager(llvm_module());
+ llvm::FunctionPassManager &fpm (*m_llvm_func_passes);
++#if OSL_LLVM_VERSION >= 32
++ fpm.add (new llvm::DataLayout(llvm_module()));
++#else
+ fpm.add (new llvm::TargetData(llvm_module()));
++#endif
+
+ // Specify module-wide (interprocedural optimization) passes
+ //
+ m_llvm_passes = new llvm::PassManager;
+ llvm::PassManager &passes (*m_llvm_passes);
++#if OSL_LLVM_VERSION >= 32
++ passes.add (new llvm::DataLayout(llvm_module()));
++#else
+ passes.add (new llvm::TargetData(llvm_module()));
++#endif
+
+ if (shadingsys().llvm_optimize() >= 1 && shadingsys().llvm_optimize() <= 3) {
+ // For LLVM 3.0 and higher, llvm_optimize 1-3 means to use the
+diff --git a/src/liboslexec/llvm_util.cpp b/src/liboslexec/llvm_util.cpp
+index 135da2e..4e0eefe 100644
+--- a/src/liboslexec/llvm_util.cpp
++++ b/src/liboslexec/llvm_util.cpp
+@@ -42,7 +42,11 @@ namespace pvt {
+ llvm::Type *
+ RuntimeOptimizer::llvm_type_union(const std::vector<llvm::Type *> &types)
+ {
++#if OSL_LLVM_VERSION >= 32
++ llvm::DataLayout target(llvm_module());
++#else
+ llvm::TargetData target(llvm_module());
++#endif
+ size_t max_size = 0;
+ size_t max_align = 1;
+ for (size_t i = 0; i < types.size(); ++i) {