{
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);
::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
}
}