diff --git a/src/compiler/utils.jl b/src/compiler/utils.jl index fb2ee4714a..e4825e5226 100644 --- a/src/compiler/utils.jl +++ b/src/compiler/utils.jl @@ -120,6 +120,9 @@ function is_readonly(f::LLVM.Function) if intr == LLVM.Intrinsic("llvm.assume").id return true end + if LLVM.name(f) == "llvm.julia.gc_preserve_begin" || LLVM.name(f) == "llvm.julia.gc_preserve_end" + return true + end for attr in collect(function_attributes(f)) if kind(attr) == kind(EnumAttribute("readonly")) return true @@ -149,6 +152,9 @@ function is_readnone(f::LLVM.Function) if intr == LLVM.Intrinsic("llvm.assume").id return true end + if LLVM.name(f) == "llvm.julia.gc_preserve_begin" || LLVM.name(f) == "llvm.julia.gc_preserve_end" + return true + end for attr in collect(function_attributes(cur)) if kind(attr) == kind(EnumAttribute("readnone")) return true @@ -175,6 +181,9 @@ function is_writeonly(f::LLVM.Function) if intr == LLVM.Intrinsic("llvm.assume").id return true end + if LLVM.name(f) == "llvm.julia.gc_preserve_begin" || LLVM.name(f) == "llvm.julia.gc_preserve_end" + return true + end for attr in collect(function_attributes(cur)) if kind(attr) == kind(EnumAttribute("readnone")) return true