]> git.ipfire.org Git - thirdparty/gcc.git/commit
[ira] avoid resetting ira_reg_equiv for function invariants
authorAlexandre Oliva <oliva@adacore.com>
Fri, 19 Sep 2025 19:45:19 +0000 (16:45 -0300)
committerAlexandre Oliva <oliva@gnu.org>
Fri, 19 Sep 2025 19:45:19 +0000 (16:45 -0300)
commit12992edaa96897d4ce26c3d48fa19c142b0aef28
treeb4500e3a4fb55aa03f627f14a4613a138e7d8847
parent401d457c373eeb33303700042b63523fa7753ff6
[ira] avoid resetting ira_reg_equiv for function invariants

An aarch64 toolchain built with --enable-default-pie fails
gcc.target/aarch64/sme/nonlocal_goto_[123].c because the register
allocator ends up resetting equivalences, so it concludes it needs to
preserve a rematerializable function invariant across a call instead
of rematerializing it.

Restore the find_reg_equiv_invariant_const logic that was in place
before commit 55a2c3226a3e90a6d65f19710bab1ac377054234 rewrote it and
added a (spurious?) requirement for non-function-invariants to retain
an equivalence when other PIC-related conditions didn't apply.  That
requirement seems either reversed or unnecessary.

for  gcc/ChangeLog

* ira.cc (setup_reg_equiv): Retain function invariant
equivalences.
gcc/ira.cc