https://gcc.gnu.org/bugzilla/show_bug.cgi?id=125852
Bug ID: 125852
Summary: [16/17 Regression] Failure to late-combine address
generation with load/store
Product: gcc
Version: 16.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: rtl-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: law at gcc dot gnu.org
Target Milestone: ---
pr120811 started failing after this change:
ommit 3ebe697f32197ec4a429fbf8dd9cce3155c0c9ba
Author: Andrew Pinski <[email protected]>
Date: Fri Jan 9 02:02:01 2026 -0800
cfgcleanup: Protect latches always [PR123417]
So it turns out LOOPS_MAY_HAVE_MULTIPLE_LATCHES is set in places
along compiling. Setting it only means there might be multiple
latches currently. It does not mean let's go in an delete them
all; which is what remove_forwarder_block does currently. This
was happening before my set of patches too but since it was
only happening in merge_phi pass, latches were not cleared away
al of the time and then recreated.
[ ... ]
>From a quick review of the dumps it seems like we're simply no longer trying to
combine the address generation with the load intruction after reload. Note
that the test was matching too aggressively, so you actually need to verify
that the 2047 offset shows up in the memory reference, not as a distinct add
instruction.