]> git.ipfire.org Git - thirdparty/gcc.git/commit
AVR: target/119989 - Add missing clobbers to xload_<mode>_libgcc.
authorGeorg-Johann Lay <avr@gjlay.de>
Wed, 30 Apr 2025 06:43:51 +0000 (08:43 +0200)
committerGeorg-Johann Lay <avr@gjlay.de>
Wed, 30 Apr 2025 06:58:43 +0000 (08:58 +0200)
commit1ca1c1fc3b58ae5e1d3db4f5a2014132fe69f82a
tree1f9dbd91a53d353495c7332d8b90a6e122b546c1
parent3418d740b344e0ba38022f3bed90540ec3de35dd
AVR: target/119989 - Add missing clobbers to xload_<mode>_libgcc.

libgcc's __xload_1...4 is clobbering Z (and also R21 is some cases),
but avr.md had clobbers of respective GPRs only up to reload.
Outcome was that code reading from the same __memx address twice
could be wrong.  This patch adds respective clobbers.

gcc/
* config/avr/avr.md (xload_<mode>_libgcc): Clobber R21, Z.

gcc/testsuite/
* gcc.target/avr/torture/pr119989.h: New file.
* gcc.target/avr/torture/pr119989-memx-1.c: New test.
* gcc.target/avr/torture/pr119989-memx-2.c: New test.
* gcc.target/avr/torture/pr119989-memx-3.c: New test.
* gcc.target/avr/torture/pr119989-memx-4.c: New test.
gcc/config/avr/avr.md
gcc/testsuite/gcc.target/avr/torture/pr119989-memx-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/avr/torture/pr119989-memx-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/avr/torture/pr119989-memx-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/avr/torture/pr119989-memx-4.c [new file with mode: 0644]
gcc/testsuite/gcc.target/avr/torture/pr119989.h [new file with mode: 0644]