targets_initialized = true;
}
}
-} // End anonymous namespace
#define DBG_CLC (1 << 0)
#define DBG_LLVM (1 << 1)
#define DBG_ASM (1 << 2)
-static const struct debug_named_value debug_options[] = {
- {"clc", DBG_CLC, "Dump the OpenCL C code for all kernels."},
- {"llvm", DBG_LLVM, "Dump the generated LLVM IR for all kernels."},
- {"asm", DBG_ASM, "Dump kernel assembly code for targets specifying "
- "PIPE_SHADER_IR_NATIVE"},
- DEBUG_NAMED_VALUE_END // must be last
-};
+ unsigned
+ get_debug_flags() {
+ static const struct debug_named_value debug_options[] = {
+ {"clc", DBG_CLC, "Dump the OpenCL C code for all kernels."},
+ {"llvm", DBG_LLVM, "Dump the generated LLVM IR for all kernels."},
+ {"asm", DBG_ASM, "Dump kernel assembly code for targets specifying "
+ "PIPE_SHADER_IR_NATIVE"},
+ DEBUG_NAMED_VALUE_END // must be last
+ };
+ static const unsigned debug_flags =
+ debug_get_flags_option("CLOVER_DEBUG", debug_options, 0);
+
+ return debug_flags;
+ }
+
+} // End anonymous namespace
module
clover::compile_program_llvm(const compat::string &source,
compat::string &r_log) {
init_targets();
- static unsigned debug_flags = debug_get_flags_option("CLOVER_DEBUG",
- debug_options, 0);
std::vector<llvm::Function *> kernels;
size_t processor_str_len = std::string(target).find_first_of("-");
optimize(mod, optimization_level, kernels);
- if (debug_flags & DBG_CLC)
+ if (get_debug_flags() & DBG_CLC)
debug_log(source, ".cl");
- if (debug_flags & DBG_LLVM) {
+ if (get_debug_flags() & DBG_LLVM) {
std::string log;
llvm::raw_string_ostream s_log(log);
mod->print(s_log, NULL);
break;
case PIPE_SHADER_IR_NATIVE: {
std::vector<char> code = compile_native(mod, triple, processor,
- debug_flags & DBG_ASM, r_log);
+ get_debug_flags() & DBG_ASM,
+ r_log);
m = build_module_native(code, mod, kernels, address_spaces, r_log);
break;
}