codegen: make gcroots for argument-derived values (#53501)
This function might previously refuse to make gc roots for any of the
function's arguments (i.e. it potentially assumed everything was in an
alloca), which was only valid if we could guarantee that no IPO passes
run. This commit aims to make that safe, but deferring such decisions
about their source until llvm-late-gc-lowering can make them valid.
This should make inlining-safe gc annotations for
code_llvm(raw=true, optimize=false, (Some{Int},)) do x; GC.@preserve x
GC.safepoint(); end
and also better annotations even without inlining for
code_llvm(raw=true, optimize=false, (Some{Any},)) do x; GC.@preserve x
GC.safepoint(); end