diff --git a/src/gallium/state_trackers/clover/llvm/codegen/native.cpp b/src/gallium/state_trackers/clover/llvm/codegen/native.cpp index 409f8ac32f0..21f6c8c88a8 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 2e070b2eefc..42a671b7fa3 100644 --- a/src/gallium/state_trackers/clover/llvm/compat.hpp +++ b/src/gallium/state_trackers/clover/llvm/compat.hpp @@ -245,6 +245,17 @@ namespace clover { ::llvm::WriteBitcodeToFile(mod, os); #else ::llvm::WriteBitcodeToFile(&mod, os); +#endif + } + + template + 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 } }