summaryrefslogtreecommitdiffstats
path: root/eval
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2019-09-28 20:10:17 +0200
committerTor Egge <Tor.Egge@broadpark.no>2019-09-29 14:31:11 +0200
commitf0c589e562914c22b71ec316ddf53b6d698ebe5d (patch)
tree60434daa24bbf5c518c2c099e687142a265fa04c /eval
parenta3daaac29a529cab2765885abe918b9267a13b7a (diff)
Handle llvm 9 changes.
Diffstat (limited to 'eval')
-rw-r--r--eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp b/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
index cac24c6514f..c613a5fa94b 100644
--- a/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
+++ b/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
@@ -12,7 +12,14 @@
#include <llvm/Analysis/Passes.h>
#include <llvm/IR/DataLayout.h>
#include <llvm/Transforms/Scalar.h>
+#if LLVM_VERSION_MAJOR == 9 && defined(__clang__)
+// Avoid reference to undefined symbol llvm::cfg::Update<llvm::BasicBlock*>::dump() const
+#define NDEBUG
+#endif
#include <llvm/LinkAllPasses.h>
+#if LLVM_VERSION_MAJOR == 9 && defined(__clang__)
+#undef NDEBUG
+#endif
#include <llvm/Transforms/IPO/PassManagerBuilder.h>
#include <vespa/eval/eval/check_type.h>
#include <vespa/vespalib/stllike/hash_set.h>
@@ -329,11 +336,24 @@ struct FunctionBuilder : public NodeVisitor, public NodeTraverser {
llvm::Value *a = pop_double();
push(builder.CreateCall(fun, a));
}
+#if LLVM_VERSION_MAJOR >= 9
+ void make_call_1(llvm::FunctionCallee fun) {
+ if (!fun || fun.getFunctionType()->getNumParams() != 1) {
+ return make_error(1);
+ }
+ llvm::Value *a = pop_double();
+ push(builder.CreateCall(fun, a));
+ }
+#endif
void make_call_1(const llvm::Intrinsic::ID &id) {
make_call_1(llvm::Intrinsic::getDeclaration(&module, id, builder.getDoubleTy()));
}
void make_call_1(const char *name) {
+#if LLVM_VERSION_MAJOR >= 9
+ make_call_1(module.getOrInsertFunction(name, make_call_1_fun_t()));
+#else
make_call_1(llvm::dyn_cast<llvm::Function>(module.getOrInsertFunction(name, make_call_1_fun_t())));
+#endif
}
void make_call_2(llvm::Function *fun) {
@@ -344,11 +364,25 @@ struct FunctionBuilder : public NodeVisitor, public NodeTraverser {
llvm::Value *a = pop_double();
push(builder.CreateCall(fun, {a, b}));
}
+#if LLVM_VERSION_MAJOR >= 9
+ void make_call_2(llvm::FunctionCallee fun) {
+ if (!fun || fun.getFunctionType()->getNumParams() != 2) {
+ return make_error(2);
+ }
+ llvm::Value *b = pop_double();
+ llvm::Value *a = pop_double();
+ push(builder.CreateCall(fun, {a, b}));
+ }
+#endif
void make_call_2(const llvm::Intrinsic::ID &id) {
make_call_2(llvm::Intrinsic::getDeclaration(&module, id, builder.getDoubleTy()));
}
void make_call_2(const char *name) {
+#if LLVM_VERSION_MAJOR >= 9
+ make_call_2(module.getOrInsertFunction(name, make_call_2_fun_t()));
+#else
make_call_2(llvm::dyn_cast<llvm::Function>(module.getOrInsertFunction(name, make_call_2_fun_t())));
+#endif
}
//-------------------------------------------------------------------------