Committed: cefcc09723c Thanks!
> On 6 May 2026, at 6:26 PM, Alex Coplan <[email protected]> wrote: > > External email: Use caution opening links or attachments > > > On 06/05/2026 10:13, Soumya AR wrote: >> The narrow_gp_writes pass uses RTL-SSA and updates DF state via >> df_insn_rescan / df_insn_delete. Both routines look up the insn's bb via >> BLOCK_FOR_INSN to mark it dirty after a change, but pass_free_cfg has already >> cleared those per-insn pointers by the time narrow_gp_writes runs. When >> BLOCK_FOR_INSN returns NULL, the dirty-marking step is silently skipped, >> leaving the DF stale. >> >> Move the pass to run before pass_free_cfg. >> >> Bootstrapped and regtested on aarch64-linux-gnu. >> SPEC CPU 2017 shows no codegen differences (compared to previous placement). >> OK for trunk? >> >> Signed-off-by: Soumya AR <[email protected]> >> >> PR target/124895 >> >> gcc/ChangeLog: >> >> * config/aarch64/aarch64-passes.def (INSERT_PASS_BEFORE): Move pass > > I think the text in parens here should be pass_narrow_gp_writes. > > LGTM with that change, but please give others 24 hours to comment. > > Thanks, > Alex > >> before pass_free_cfg. >> >> gcc/testsuite/ChangeLog: >> >> * gcc.target/aarch64/narrow-gp-writes-8.c: New test. >> --- >> gcc/config/aarch64/aarch64-passes.def | 2 +- >> gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c | 10 ++++++++++ >> 2 files changed, 11 insertions(+), 1 deletion(-) >> create mode 100644 gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c >> >> diff --git a/gcc/config/aarch64/aarch64-passes.def >> b/gcc/config/aarch64/aarch64-passes.def >> index f4307aab551..2df7459af92 100644 >> --- a/gcc/config/aarch64/aarch64-passes.def >> +++ b/gcc/config/aarch64/aarch64-passes.def >> @@ -26,4 +26,4 @@ INSERT_PASS_BEFORE >> (pass_late_thread_prologue_and_epilogue, 1, pass_late_track_s >> INSERT_PASS_BEFORE (pass_shorten_branches, 1, pass_insert_bti); >> INSERT_PASS_BEFORE (pass_early_remat, 1, pass_ldp_fusion); >> INSERT_PASS_BEFORE (pass_peephole2, 1, pass_ldp_fusion); >> -INSERT_PASS_BEFORE (pass_cleanup_barriers, 1, pass_narrow_gp_writes); >> +INSERT_PASS_BEFORE (pass_free_cfg, 1, pass_narrow_gp_writes); >> diff --git a/gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c >> b/gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c >> new file mode 100644 >> index 00000000000..94ef761e801 >> --- /dev/null >> +++ b/gcc/testsuite/gcc.target/aarch64/narrow-gp-writes-8.c >> @@ -0,0 +1,10 @@ >> +/* PR target/124895 */ >> +/* { dg-do compile } */ >> +/* { dg-options "-Os -fpath-coverage -fno-tree-ccp -fprofile-generate >> -mnarrow-gp-writes" } */ >> + >> +void >> +foo (unsigned u) >> +{ >> + while (u) >> + ; >> +} >> -- >> 2.43.0
