diff options
author | Aaron Watry <[email protected]> | 2017-08-05 20:18:48 -0500 |
---|---|---|
committer | Aaron Watry <[email protected]> | 2018-03-05 20:09:46 -0600 |
commit | fc629e359485bdac175d2c63fd4154b490094d39 (patch) | |
tree | 8c4ca84cfa76dbf3ce9bc227fde22cf4fc8ba270 /src/gallium/state_trackers/clover/llvm | |
parent | dd81ca3883845abb4939a8007b51e802315c3421 (diff) |
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 <[email protected]>
Reviewed-by: Pierre Moreau <[email protected]>
Reviewed-by: Jan Vesely <[email protected]>
Reviewed-by: Francisco Jerez <[email protected]>
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
Diffstat (limited to 'src/gallium/state_trackers/clover/llvm')
-rw-r--r-- | src/gallium/state_trackers/clover/llvm/invocation.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp index c8c0311a3a0..2635064bec7 100644 --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp @@ -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); |