[llvm] [ObjCARC] Improve empty autorelease pool elimination in OptimizeAutoreleasePools (PR #200310)
via llvm-commits
llvm-commits at lists.llvm.org
Tue Jun 2 19:12:10 PDT 2026
mike-goutokuji wrote:
> This doesn't look like an NFC change. It changes what gets eliminated, so it needs a test case demonstrating the behavioral difference.
>
>
>
> Previously, on an AutoreleasepoolPop whose argument doesn't match the innermost push, the code popped the top of `PoolStack` before the mismatch check and then bailed. That left the outer entries on the stack, so a later pop could still match an outer push and eliminate that pair. Now a mismatched pop clears the whole stack, so nothing after it gets eliminated.
>
>
>
> Consider a single block with the sequence `push0`, `push1`, `pop(X)`, `pop0`, where `pop(X)` is a pop that doesn't match the top push (`push1`), and `pop0` matches `push0`. Before this change, the `push0`/`pop0` pair was eliminated. After it, it isn't. Could you add a test along those lines that captures the new behavior?
Well where did I say it was NFC?
https://github.com/llvm/llvm-project/pull/200310
More information about the llvm-commits
mailing list