clover: Fix not setting build log if the build succeeds v2
If there were only warnings, they would not be added to the log. v2: - Use compat::string. Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:

committed by
Tom Stellard

parent
d2504ead2f
commit
2ab44f657e
@@ -120,7 +120,7 @@ namespace {
|
||||
compile(llvm::LLVMContext &llvm_ctx, const std::string &source,
|
||||
const std::string &name, const std::string &triple,
|
||||
const std::string &processor, const std::string &opts,
|
||||
clang::LangAS::Map& address_spaces) {
|
||||
clang::LangAS::Map& address_spaces, compat::string &r_log) {
|
||||
|
||||
clang::CompilerInstance c;
|
||||
clang::EmitLLVMOnlyAction act(&llvm_ctx);
|
||||
@@ -224,11 +224,14 @@ namespace {
|
||||
c.getCodeGenOpts().LinkBitcodeFile = libclc_path;
|
||||
|
||||
// Compile the code
|
||||
if (!c.ExecuteAction(act))
|
||||
throw build_error(log);
|
||||
bool ExecSuccess = c.ExecuteAction(act);
|
||||
r_log = log;
|
||||
|
||||
if (!ExecSuccess)
|
||||
throw build_error();
|
||||
|
||||
// Get address spaces map to be able to find kernel argument address space
|
||||
memcpy(address_spaces, c.getTarget().getAddressSpaceMap(),
|
||||
memcpy(address_spaces, c.getTarget().getAddressSpaceMap(),
|
||||
sizeof(address_spaces));
|
||||
|
||||
return act.takeModule();
|
||||
@@ -391,7 +394,8 @@ module
|
||||
clover::compile_program_llvm(const compat::string &source,
|
||||
enum pipe_shader_ir ir,
|
||||
const compat::string &target,
|
||||
const compat::string &opts) {
|
||||
const compat::string &opts,
|
||||
compat::string &r_log) {
|
||||
|
||||
std::vector<llvm::Function *> kernels;
|
||||
size_t processor_str_len = std::string(target.begin()).find_first_of("-");
|
||||
@@ -405,7 +409,7 @@ clover::compile_program_llvm(const compat::string &source,
|
||||
// The input file name must have the .cl extension in order for the
|
||||
// CompilerInvocation class to recognize it as an OpenCL source file.
|
||||
llvm::Module *mod = compile(llvm_ctx, source, "input.cl", triple, processor,
|
||||
opts, address_spaces);
|
||||
opts, address_spaces, r_log);
|
||||
|
||||
find_kernels(mod, kernels);
|
||||
|
||||
|
Reference in New Issue
Block a user