From 7764c14217382f1da6cc992712b112d607c95953 Mon Sep 17 00:00:00 2001 From: "William S. Moses" Date: Sun, 3 Dec 2023 18:52:47 +0100 Subject: [PATCH] Handle load from global constant in gc fixup --- src/compiler/optimize.jl | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/compiler/optimize.jl b/src/compiler/optimize.jl index d522dcce39..a74a26b516 100644 --- a/src/compiler/optimize.jl +++ b/src/compiler/optimize.jl @@ -239,6 +239,18 @@ function nodecayed_phis!(mod::LLVM.Module) return getparent(operands(v)[1], offset, true) end + if addr == 13 && isa(v, LLVM.ConstantExpr) + if opcode(v) == LLVM.API.LLVMAddrSpaceCast + v2 = operands(v)[1] + if addrspace(value_type(v2)) == 0 + if addr == 13 && isa(v, LLVM.ConstantExpr) + v2 = const_addrspacecast(operands(v)[1], LLVM.PointerType(eltype(value_type(v)), 10)) + return v2, offset, hasload + end + end + end + end + if isa(v, LLVM.AddrSpaceCastInst) if addrspace(value_type(operands(v)[1])) == 0 v2 = addrspacecast!(b, operands(v)[1], LLVM.PointerType(eltype(value_type(v)), 10))