diff options
author | Tor Egge <Tor.Egge@broadpark.no> | 2019-09-28 20:10:17 +0200 |
---|---|---|
committer | Tor Egge <Tor.Egge@broadpark.no> | 2019-09-29 14:31:11 +0200 |
commit | f0c589e562914c22b71ec316ddf53b6d698ebe5d (patch) | |
tree | 60434daa24bbf5c518c2c099e687142a265fa04c /eval | |
parent | a3daaac29a529cab2765885abe918b9267a13b7a (diff) |
Handle llvm 9 changes.
Diffstat (limited to 'eval')
-rw-r--r-- | eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp | 34 |
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 } //------------------------------------------------------------------------- |