Repository navigation
Revert "codegen: Propagate ipo_purity_bits to LLVM function attributes (#61394)" - #62697
Conversation
|
Proposed fix instead #62698 |
|
I've been trying to get Claude to show some additional specific examples of #62613. It makes a lot of claims, but I don't think most of them are necessarily valid (its unclear exactly what we promise around WeakRef and finalizers and llvm IPO / Attributor behaviors and raw pointer_from_objref). The original claim also isn't clear if it really is a bug, or is rescued normally by late-gc-rooting semantics anyways. But it did find one other claimed risk with #62613 that does sound definite and real to me:
The suggested alternative (
. |
Calls tagged "julia.safepoint" are Julia calls whose memory effects codegen narrowed from inferred effects. They can still reach a GC safepoint, so LocalScan must treat them as safepoints regardless of what the memory effects claim, and the effects must be stripped before any post-lowering pass could use them against the now-explicit GC frame stores. This is the rooting half of re-landing JuliaLang#61394 (reverted in JuliaLang#62697, see JuliaLang#62613): rooting no longer depends on pass ordering having stripped the attributes first. Assisted-by: Claude Code (Fable 5.1)
Calls tagged "julia.safepoint" are Julia calls whose memory effects codegen narrowed from inferred effects. They can still reach a GC safepoint, so LocalScan must treat them as safepoints regardless of what the memory effects claim, and the effects must be stripped before any post-lowering pass could use them against the now-explicit GC frame stores. This is the rooting half of re-landing #61394 (reverted in #62697, see #62613): rooting no longer depends on pass ordering having stripped the attributes first. Assisted-by: Claude Code (Fable 5.1)
This reverts commit d50d2a5 to close #62613 correctness regression.