]> 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 09:31:58 +0000 (11:31 +0200)
commit4dc40eddbe69566869f7aafb78c31c4850b8aeb7
treeadc5cd8f2eb25a2b69f51d9ac1ba5c9aa0f171e3
parente5d1f538bb7d2c7a7a4acf4a4516fa8933dc2888
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.

      Forward-port from 2025-04-30 r14-11703
      PR target/119989
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.target/avr/torture/pr119989-flashx-1.c: New test.
* gcc.target/avr/torture/pr119989-flashx-2.c: New test.
* gcc.target/avr/torture/pr119989-flashx-3.c: New test.
* gcc.target/avr/torture/pr119989-flashx-4.c: New test.

(cherry picked from commit 1ca1c1fc3b58ae5e1d3db4f5a2014132fe69f82a)
gcc/config/avr/avr.md
gcc/testsuite/gcc.target/avr/torture/pr119989-flashx-1.c [new file with mode: 0644]
gcc/testsuite/gcc.target/avr/torture/pr119989-flashx-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/avr/torture/pr119989-flashx-3.c [new file with mode: 0644]
gcc/testsuite/gcc.target/avr/torture/pr119989-flashx-4.c [new file with mode: 0644]
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]