summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTor Egge <Tor.Egge@broadpark.no>2020-08-30 21:39:03 +0200
committerTor Egge <Tor.Egge@broadpark.no>2020-08-30 22:02:44 +0200
commit5f2346b7fcc9f37698a719aacd46bd95e3ba7965 (patch)
tree15acbc0d8cc4cc4aa9426c667ac7021bee9c06d6
parent1aebe8440cb867789864c43ddca8a6f1fa9913d7 (diff)
Use llvm 11 on Fedora 33.
-rw-r--r--default_build_settings.cmake2
-rw-r--r--dist/vespa.spec6
-rw-r--r--eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp20
3 files changed, 24 insertions, 4 deletions
diff --git a/default_build_settings.cmake b/default_build_settings.cmake
index 07a70c38d71..75399069619 100644
--- a/default_build_settings.cmake
+++ b/default_build_settings.cmake
@@ -79,7 +79,7 @@ endfunction()
function(setup_vespa_default_build_settings_fedora_33)
message("-- Setting up default build settings for fedora 33")
set(DEFAULT_EXTRA_INCLUDE_DIRECTORY "${VESPA_DEPS}/include" "/usr/include/openblas" PARENT_SCOPE)
- set(DEFAULT_VESPA_LLVM_VERSION "10" PARENT_SCOPE)
+ set(DEFAULT_VESPA_LLVM_VERSION "11" PARENT_SCOPE)
endfunction()
function(setup_vespa_default_build_settings_ubuntu_19_10)
diff --git a/dist/vespa.spec b/dist/vespa.spec
index e49bd74e545..096e5928bc3 100644
--- a/dist/vespa.spec
+++ b/dist/vespa.spec
@@ -97,7 +97,7 @@ BuildRequires: gmock-devel
%endif
%if 0%{?fc33}
BuildRequires: protobuf-devel
-BuildRequires: llvm-devel >= 10.0.0
+BuildRequires: llvm-devel >= 11.0.0
BuildRequires: boost-devel >= 1.69
BuildRequires: gtest-devel
BuildRequires: gmock-devel
@@ -200,8 +200,8 @@ Requires: llvm-libs >= 10.0.0
%endif
%if 0%{?fc33}
Requires: protobuf
-Requires: llvm-libs >= 10.0.0
-%define _vespa_llvm_version 10
+Requires: llvm-libs >= 11.0.0
+%define _vespa_llvm_version 11
%endif
%define _extra_link_directory %{_vespa_deps_prefix}/lib64
%define _extra_include_directory %{_vespa_deps_prefix}/include;/usr/include/openblas
diff --git a/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp b/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
index 6f9bee025c9..a34ab2a09f9 100644
--- a/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
+++ b/eval/src/vespa/eval/eval/llvm/llvm_wrapper.cpp
@@ -200,7 +200,12 @@ struct FunctionBuilder : public NodeVisitor, public NodeTraverser {
}
assert(pass_params == PassParams::LAZY);
assert(params.size() == 2);
+#if LLVM_VERSION_MAJOR >= 11
+ return builder.CreateCall(llvm::cast<llvm::FunctionType>(params[0]->getType()->getPointerElementType()),
+ params[0], {params[1], builder.getInt64(idx)}, "resolve_param");
+#else
return builder.CreateCall(params[0], {params[1], builder.getInt64(idx)}, "resolve_param");
+#endif
}
//-------------------------------------------------------------------------
@@ -252,12 +257,22 @@ struct FunctionBuilder : public NodeVisitor, public NodeTraverser {
llvm::Value *eval_fun = builder.CreateIntToPtr(builder.getInt64((uint64_t)eval_ptr), eval_funptr_t, "inject_eval");
llvm::Value *ctx = builder.CreateIntToPtr(builder.getInt64((uint64_t)forest), builder.getVoidTy()->getPointerTo(), "inject_ctx");
if (pass_params == PassParams::ARRAY) {
+#if LLVM_VERSION_MAJOR >= 11
+ push(builder.CreateCall(llvm::cast<llvm::FunctionType>(eval_fun->getType()->getPointerElementType()),
+ eval_fun, {ctx, params[0]}, "call_eval"));
+#else
push(builder.CreateCall(eval_fun, {ctx, params[0]}, "call_eval"));
+#endif
} else {
assert(pass_params == PassParams::LAZY);
llvm::PointerType *proxy_funptr_t = make_eval_forest_proxy_funptr_t();
llvm::Value *proxy_fun = builder.CreateIntToPtr(builder.getInt64((uint64_t)vespalib_eval_forest_proxy), proxy_funptr_t, "inject_eval_proxy");
+#if LLVM_VERSION_MAJOR >= 11
+ push(builder.CreateCall(llvm::cast<llvm::FunctionType>(proxy_fun->getType()->getPointerElementType()),
+ proxy_fun, {eval_fun, ctx, params[0], params[1], builder.getInt64(stats.num_params)}));
+#else
push(builder.CreateCall(proxy_fun, {eval_fun, ctx, params[0], params[1], builder.getInt64(stats.num_params)}));
+#endif
}
return true;
}
@@ -411,7 +426,12 @@ struct FunctionBuilder : public NodeVisitor, public NodeTraverser {
llvm::PointerType *funptr_t = make_check_membership_funptr_t();
llvm::Value *call_fun = builder.CreateIntToPtr(builder.getInt64((uint64_t)call_ptr), funptr_t, "inject_call_addr");
llvm::Value *ctx = builder.CreateIntToPtr(builder.getInt64((uint64_t)state), builder.getVoidTy()->getPointerTo(), "inject_ctx");
+#if LLVM_VERSION_MAJOR >= 11
+ push(builder.CreateCall(llvm::cast<llvm::FunctionType>(call_fun->getType()->getPointerElementType()),
+ call_fun, {ctx, lhs}, "call_check_membership"));
+#else
push(builder.CreateCall(call_fun, {ctx, lhs}, "call_check_membership"));
+#endif
} else {
// build explicit code to check all set members
llvm::Value *found = builder.getFalse();