On Mon, 2016-07-04 at 12:32 -0700, Francisco Jerez wrote: > Jan Vesely <jan.ves...@rutgers.edu> writes: > > > On Sun, 2016-07-03 at 17:51 -0700, Francisco Jerez wrote: > > > Some assorted and mostly trivial clean-ups for the source to > > > bitcode > > > compilation path. > > > > > > Reviewed-by: Serge Martin <edb+m...@sigluy.net> > > > --- > > > .../state_trackers/clover/llvm/invocation.cpp | 52 > > > +++++++++------------- > > > 1 file changed, 22 insertions(+), 30 deletions(-) > > > > > > diff --git > > > a/src/gallium/state_trackers/clover/llvm/invocation.cpp > > > b/src/gallium/state_trackers/clover/llvm/invocation.cpp > > > index 9c102d2..e9b3db6 100644 > > > --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp > > > +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp > > > @@ -195,13 +195,11 @@ namespace { > > > return c; > > > } > > > > > > - llvm::Module * > > > - compile_llvm(LLVMContext &ctx, clang::CompilerInstance &c, > > > - const std::string &source, const header_map > > > &headers, > > > - const std::string &name, const std::string > > > &target, > > > - const std::string &opts, std::string &r_log) { > > > - clang::EmitLLVMOnlyAction act(&ctx); > > > - > > > + std::unique_ptr > > > + compile(LLVMContext &ctx, clang::CompilerInstance &c, > > > + const std::string &name, const std::string &source, > > > + const header_map &headers, const std::string &target, > > > + const std::string &opts, std::string &r_log) { > > > c.getFrontendOpts().ProgramAction = > > > clang::frontend::EmitLLVMOnly; > > > c.getHeaderSearchOpts().UseBuiltinIncludes = true; > > > c.getHeaderSearchOpts().UseStandardSystemIncludes = true; > > > @@ -210,32 +208,27 @@ namespace { > > > // Add libclc generic search path > > > c.getHeaderSearchOpts().AddPath(LIBCLC_INCLUDEDIR, > > > clang::frontend::Angled, > > > - false, false > > > - ); > > > + false, false); > > > > > > // Add libclc include > > > c.getPreprocessorOpts().Includes.push_back("clc/clc.h"); > > > > > > // clc.h requires that this macro be defined: > > > c.getPreprocessorOpts().addMacroDef("cl_clang_storage_clas > > > s_specifiers"); > > > > The above can be dropped for llvm 3.9, extensions are handled by > > clang. > > We can also use -finclude-default-header option instead of > > clc/clc.h > > I have no idea what the plans are with that, or whether we'd need > > to > > change this in the future. > > > > Does it hurt to keep it around for now in order to keep earlier LLVM > versions working?
No, it's just something that might come back in the future. although libclc already requires llvm >=3.9 (since r260777). Jan > > > Jan > > > > > - > > > - c.getPreprocessorOpts().addRemappedFile(name, > > > - llvm::MemoryBuffer > > > ::getMemBuffer(source).release()); > > > + c.getPreprocessorOpts().addRemappedFile( > > > + name, > > > ::llvm::MemoryBuffer::getMemBuffer(source).release()); > > > > > > if (headers.size()) { > > > const std::string tmp_header_path = "/tmp/clover/"; > > > > > > c.getHeaderSearchOpts().AddPath(tmp_header_path, > > > clang::frontend::Angled > > > , > > > - false, false > > > - ); > > > - > > > - for (header_map::const_iterator it = headers.begin(); > > > - it != headers.end(); ++it) { > > > - const std::string path = tmp_header_path + > > > std::string(it->first); > > > - c.getPreprocessorOpts().addRemappedFile(path, > > > - llvm::MemoryBuffer::getMemBuffer(it- > > > >second.c_str()).release()); > > > - } > > > + false, false); > > > + > > > + for (const auto &header : headers) > > > + c.getPreprocessorOpts().addRemappedFile( > > > + tmp_header_path + header.first, > > > + ::llvm::MemoryBuffer::getMemBuffer(header.second) > > > .release()); > > > } > > > > > > // Tell clang to link this file before performing any > > > @@ -249,10 +242,11 @@ namespace { > > > LIBCLC_LIBEXECDIR + target + > > > ".bc"); > > > > > > // Compile the code > > > + clang::EmitLLVMOnlyAction act(&ctx); > > > if (!c.ExecuteAction(act)) > > > throw compile_error(); > > > > > > - return act.takeModule().release(); > > > + return act.takeModule(); > > > } > > > > > > std::vector > > > @@ -794,10 +788,9 @@ clover::compile_program_llvm(const > > > std::string &source, > > > // CompilerInvocation class to recognize it as an OpenCL > > > source file. > > > const auto c = create_compiler_instance(target, tokenize(opts > > > + " input.cl"), > > > r_log); > > > - Module *mod = compile_llvm(*ctx, *c, source, headers, > > > "input.cl", > > > - target, opts, r_log); > > > + auto mod = compile(*ctx, *c, "input.cl", source, headers, > > > target, opts, r_log); > > > > > > - optimize(mod, c->getCodeGenOpts().OptimizationLevel); > > > + optimize(&*mod, c->getCodeGenOpts().OptimizationLevel); > > > > > > if (get_debug_flags() & DBG_LLVM) { > > > std::string log; > > > @@ -817,17 +810,16 @@ clover::compile_program_llvm(const > > > std::string &source, > > > m = module(); > > > break; > > > case PIPE_SHADER_IR_LLVM: > > > - m = build_module_llvm(mod, *c); > > > + m = build_module_llvm(&*mod, *c); > > > break; > > > case PIPE_SHADER_IR_NATIVE: { > > > - std::vector code = compile_native(mod, target, > > > + std::vector code = compile_native(&*mod, target, > > > get_debug_flags > > > () & DBG_ASM, > > > r_log); > > > - m = build_module_native(code, mod, *c, r_log); > > > + m = build_module_native(code, &*mod, *c, r_log); > > > break; > > > } > > > } > > > - // The user takes ownership of the module. > > > - delete mod; > > > + > > > return m; > > > } -- Jan Vesely <jan.ves...@rutgers.edu>
signature.asc
Description: This is a digitally signed message part
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev