clover: Pass device to llvm::create_compiler_instance
We'll be using dev.device_clc_version to select the default language version soon along with the existing ir_target field. Signed-off-by: Aaron Watry <awatry@gmail.com> Reviewed-by: Pierre Moreau <pierre.morrow@free.fr> Reviewed-by: Jan Vesely <jan.vesely@rutgers.edu> Reviewed-by: Francisco Jerez <currojerez@riseup.net> v4: Pass the device down instead of device_clc_version as a separate field v3: Revise to acknowledge that we now have the device in compile/link_program instead of the string values. v2: (Pierre) Move changes to create_compiler_instance invocation to correct patch to prevent temporary build breakage. (Jan) Use device_clc_version instead of device_version for compile/link
This commit is contained in:
@@ -94,7 +94,7 @@ namespace {
|
||||
}
|
||||
|
||||
std::unique_ptr<clang::CompilerInstance>
|
||||
create_compiler_instance(const target &target,
|
||||
create_compiler_instance(const device &dev,
|
||||
const std::vector<std::string> &opts,
|
||||
std::string &r_log) {
|
||||
std::unique_ptr<clang::CompilerInstance> c { new clang::CompilerInstance };
|
||||
@@ -108,6 +108,8 @@ namespace {
|
||||
const std::vector<const char *> copts =
|
||||
map(std::mem_fn(&std::string::c_str), opts);
|
||||
|
||||
const target &target = dev.ir_target();
|
||||
|
||||
if (!clang::CompilerInvocation::CreateFromArgs(
|
||||
c->getInvocation(), copts.data(), copts.data() + copts.size(), diag))
|
||||
throw invalid_build_options_error();
|
||||
@@ -208,8 +210,7 @@ clover::llvm::compile_program(const std::string &source,
|
||||
debug::log(".cl", "// Options: " + opts + '\n' + source);
|
||||
|
||||
auto ctx = create_context(r_log);
|
||||
auto c = create_compiler_instance(dev.ir_target(),
|
||||
tokenize(opts + " input.cl"), r_log);
|
||||
auto c = create_compiler_instance(dev, tokenize(opts + " input.cl"), r_log);
|
||||
auto mod = compile(*ctx, *c, "input.cl", source, headers, dev.ir_target(),
|
||||
opts, r_log);
|
||||
|
||||
@@ -276,7 +277,7 @@ clover::llvm::link_program(const std::vector<module> &modules,
|
||||
erase_if(equals("-create-library"), options);
|
||||
|
||||
auto ctx = create_context(r_log);
|
||||
auto c = create_compiler_instance(dev.ir_target(), options, r_log);
|
||||
auto c = create_compiler_instance(dev, options, r_log);
|
||||
auto mod = link(*ctx, *c, modules, r_log);
|
||||
|
||||
optimize(*mod, c->getCodeGenOpts().OptimizationLevel, !create_library);
|
||||
|
||||
Reference in New Issue
Block a user