diff options
author | Georg-Johann Lay <avr@gjlay.de> | 2024-08-12 14:39:24 +0200 |
---|---|---|
committer | Georg-Johann Lay <avr@gjlay.de> | 2024-08-12 14:52:19 +0200 |
commit | 68da681e614c2750f648dac2cd0b2595999ca5d9 (patch) | |
tree | ec9294de558b62b1006823e249c43a6a3daae1d9 /gcc | |
parent | 24df2ab33c5e805054006e7b4b94d4270d82074f (diff) | |
download | gcc-68da681e614c2750f648dac2cd0b2595999ca5d9.zip gcc-68da681e614c2750f648dac2cd0b2595999ca5d9.tar.gz gcc-68da681e614c2750f648dac2cd0b2595999ca5d9.tar.bz2 |
AVR: target/85624 - Fix non-matching alignment in clrmem* insns.
The clrmem* patterns don't use the provided alignment information,
hence the setmemhi expander can just pass down 0 as alignment to
the clrmem* insns.
PR target/85624
gcc/
* config/avr/avr.md (setmemhi): Set alignment to 0.
gcc/testsuite/
* gcc.target/avr/torture/pr85624.c: New test.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/config/avr/avr.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/avr/torture/pr85624.c | 7 |
2 files changed, 9 insertions, 0 deletions
diff --git a/gcc/config/avr/avr.md b/gcc/config/avr/avr.md index 84dfe4c..359343e 100644 --- a/gcc/config/avr/avr.md +++ b/gcc/config/avr/avr.md @@ -1355,6 +1355,8 @@ gen_int_mode (INTVAL (operands[1]), mode)); rtx addr0 = copy_to_mode_reg (Pmode, XEXP (operands[0], 0)); operands[0] = gen_rtx_MEM (BLKmode, addr0); + // Alignment is unused; just set it to 0. + operands[3] = const0_rtx; }) diff --git a/gcc/testsuite/gcc.target/avr/torture/pr85624.c b/gcc/testsuite/gcc.target/avr/torture/pr85624.c new file mode 100644 index 0000000..b183d45 --- /dev/null +++ b/gcc/testsuite/gcc.target/avr/torture/pr85624.c @@ -0,0 +1,7 @@ +/* { dg-do compile } */ + +int foo (void) +{ + volatile int arr[3] __attribute__((aligned(128))) = { 0 }; + return arr[2]; +} |