41 lines
1.5 KiB
Diff
41 lines
1.5 KiB
Diff
|
diff --git a/src/gallium/state_trackers/clover/llvm/codegen/native.cpp b/src/gallium/state_trackers/clover/llvm/codegen/native.cpp
|
||
|
index 409f8ac32f..4b589ef50c 100644
|
||
|
--- a/src/gallium/state_trackers/clover/llvm/codegen/native.cpp
|
||
|
+++ b/src/gallium/state_trackers/clover/llvm/codegen/native.cpp
|
||
|
@@ -126,13 +126,12 @@ namespace {
|
||
|
{
|
||
|
compat::pass_manager pm;
|
||
|
::llvm::raw_svector_ostream os { data };
|
||
|
- compat::raw_ostream_to_emit_file fos(os);
|
||
|
|
||
|
mod.setDataLayout(compat::get_data_layout(*tm));
|
||
|
tm->Options.MCOptions.AsmVerbose =
|
||
|
(ft == TargetMachine::CGFT_AssemblyFile);
|
||
|
|
||
|
- if (tm->addPassesToEmitFile(pm, fos, ft))
|
||
|
+ if (compat::add_passes_to_emit_file(*tm, pm, os, ft))
|
||
|
fail(r_log, build_error(), "TargetMachine can't emit this file");
|
||
|
|
||
|
pm.run(mod);
|
||
|
diff --git a/src/gallium/state_trackers/clover/llvm/compat.hpp b/src/gallium/state_trackers/clover/llvm/compat.hpp
|
||
|
index 2e070b2eef..96ba798970 100644
|
||
|
--- a/src/gallium/state_trackers/clover/llvm/compat.hpp
|
||
|
+++ b/src/gallium/state_trackers/clover/llvm/compat.hpp
|
||
|
@@ -245,6 +245,16 @@ namespace clover {
|
||
|
::llvm::WriteBitcodeToFile(mod, os);
|
||
|
#else
|
||
|
::llvm::WriteBitcodeToFile(&mod, os);
|
||
|
+#endif
|
||
|
+ }
|
||
|
+ template<typename TM, typename PM, typename OS, typename FT>
|
||
|
+ bool add_passes_to_emit_file(TM &tm, PM &pm, OS &os, FT &ft)
|
||
|
+ {
|
||
|
+ compat::raw_ostream_to_emit_file fos(os);
|
||
|
+#if HAVE_LLVM >= 0x0700
|
||
|
+ return tm.addPassesToEmitFile(pm, fos, nullptr, ft);
|
||
|
+#else
|
||
|
+ return tm.addPassesToEmitFile(pm, fos, ft);
|
||
|
#endif
|
||
|
}
|
||
|
}
|