aboutsummaryrefslogtreecommitdiff
path: root/gcc/common
diff options
context:
space:
mode:
authorKonstantinos Eleftheriou <konstantinos.eleftheriou@vrull.eu>2025-06-25 13:24:52 +0200
committerPhilipp Tomsich <philipp.tomsich@vrull.eu>2025-07-29 15:46:58 +0200
commit04f33a278557c09d3aba978fe205cc2a6caa8efb (patch)
tree2f4b22c3ff51133aadf00ca15554d1add50ea628 /gcc/common
parent8166458f19846fb795e31d5cf2475e0bade9f546 (diff)
downloadgcc-04f33a278557c09d3aba978fe205cc2a6caa8efb.zip
gcc-04f33a278557c09d3aba978fe205cc2a6caa8efb.tar.gz
gcc-04f33a278557c09d3aba978fe205cc2a6caa8efb.tar.bz2
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.
Diffstat (limited to 'gcc/common')
0 files changed, 0 insertions, 0 deletions