From 440e982a2137c05e9386b806f743d4a2856f49c2 Mon Sep 17 00:00:00 2001 From: Julian P Samaroo Date: Thu, 18 Jun 2020 11:14:26 -0500 Subject: [PATCH] GCN: Workaround Julia's broken alloca handling --- src/irgen.jl | 4 ++-- src/optim.jl | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/src/irgen.jl b/src/irgen.jl index b5311da3..8958b787 100644 --- a/src/irgen.jl +++ b/src/irgen.jl @@ -164,9 +164,9 @@ function compile_method_instance(job::CompilerJob, method_instance::Core.MethodI llvm_specfunc = LLVM.Function(llvm_specfunc_ref) # configure the module - triple!(llvm_mod, llvm_triple(job.target)) + triple!(llvm_mod, llvm_triple(NativeCompilerTarget())) if llvm_datalayout(job.target) !== nothing - datalayout!(llvm_mod, llvm_datalayout(job.target)) + datalayout!(llvm_mod, llvm_datalayout(NativeCompilerTarget())) end return llvm_specfunc, llvm_mod diff --git a/src/optim.jl b/src/optim.jl index df95e7ac..31a7b55f 100644 --- a/src/optim.jl +++ b/src/optim.jl @@ -1,11 +1,12 @@ # LLVM IR optimization function optimize!(job::CompilerJob, mod::LLVM.Module) - tm = llvm_machine(job.target) + # FIXME: Workaround for GCN + tm = Ref{TargetMachine}(llvm_machine(NativeCompilerTarget())) function initialize!(pm) add_library_info!(pm, triple(mod)) - add_transform_info!(pm, tm) + add_transform_info!(pm, tm[]) end global current_job @@ -40,6 +41,12 @@ function optimize!(job::CompilerJob, mod::LLVM.Module) run!(pm, mod) end + tm[] = llvm_machine(job.target) + triple!(mod, llvm_triple(job.target)) + if llvm_datalayout(job.target) !== nothing + datalayout!(mod, llvm_datalayout(job.target)) + end + # target-specific optimizations ModulePassManager() do pm initialize!(pm)