clc_compile_to_llvm_module(const struct clc_compile_args *args,
const struct clc_logger *logger)
{
- LLVMInitializeAllTargets();
- LLVMInitializeAllTargetInfos();
- LLVMInitializeAllTargetMCs();
- LLVMInitializeAllAsmPrinters();
+ clc_initialize_llvm();
std::string log;
std::unique_ptr<LLVMContext> llvm_ctx { new LLVMContext };
const struct clc_logger *logger,
struct clc_binary *out_spirv)
{
- LLVMInitializeAllTargets();
- LLVMInitializeAllTargetInfos();
- LLVMInitializeAllTargetMCs();
- LLVMInitializeAllAsmPrinters();
+ clc_initialize_llvm();
std::unique_ptr<LLVMContext> llvm_ctx{ new LLVMContext };
::llvm::StringRef spir_ref(static_cast<const char*>(in_spir->data), in_spir->size);
{
free(spvbin->data);
}
+
+void
+clc_initialize_llvm(void)
+{
+ LLVMInitializeAllTargets();
+ LLVMInitializeAllTargetInfos();
+ LLVMInitializeAllTargetMCs();
+ LLVMInitializeAllAsmPrinters();
+}
extern "C" {
#endif
+void
+clc_initialize_llvm(void);
+
bool
clc_spirv_get_kernels_info(const struct clc_binary *spvbin,
const struct clc_kernel_info **kernels,