]> git.ipfire.org Git - thirdparty/gcc.git/commit
asf: Skip when an instruction doesn't satisfy the constraints [PR119795]
authorKonstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>
Wed, 25 Jun 2025 11:24:52 +0000 (13:24 +0200)
committerPhilipp Tomsich <philipp.tomsich@vrull.eu>
Tue, 29 Jul 2025 13:46:58 +0000 (15:46 +0200)
commit04f33a278557c09d3aba978fe205cc2a6caa8efb
tree2f4b22c3ff51133aadf00ca15554d1add50ea628
parent8166458f19846fb795e31d5cf2475e0bade9f546
asf: Skip when an instruction doesn't satisfy the constraints [PR119795]

While scanning the instructions and upon reaching an instruction that
doesn't satisfy the constraints that we have set, we were removing the
already detected stores, but we were continuing adding stores from that
point onward. This was causing issues when the address ranges from later
stores overlapped with the load's address, leading to partial and wrong
update of the register containing the loaded value.

With this patch, we are skipping the tranformation for stores that operate
on the load's address range, when stores that operate on the same range
have been deleted due to constraint violations.

PR rtl-optimization/119795

gcc/ChangeLog:

* avoid-store-forwarding.cc
(store_forwarding_analyzer::avoid_store_forwarding): Skip
transformations for stores that operate on the same address
range as deleted ones.

gcc/testsuite/ChangeLog:

* gcc.target/i386/pr119795.c: New test.
gcc/avoid-store-forwarding.cc
gcc/testsuite/gcc.target/i386/pr119795.c [new file with mode: 0644]