aboutsummaryrefslogtreecommitdiff
path: root/gcc/jit
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2024-07-05 13:22:12 +0200
committerGeorg-Johann Lay <avr@gjlay.de>2024-07-05 13:24:43 +0200
commit23a0935262d6817097406578b1c70563f424804b (patch)
treef6b2f09d39e5106fb3c5ad1fdb12d1d445d63e94 /gcc/jit
parentf63896ff5a4fa4fe451f9ec7f16026eb97ed8e6d (diff)
downloadgcc-23a0935262d6817097406578b1c70563f424804b.zip
gcc-23a0935262d6817097406578b1c70563f424804b.tar.gz
gcc-23a0935262d6817097406578b1c70563f424804b.tar.bz2
AVR: target/87376 - Use nop_general_operand for DImode inputs.
The avr-dimode.md expanders have code like emit_move_insn(acc_a, operands[1]) where acc_a is a hard register and operands[1] might be a non-generic address-space memory reference. Such loads may clobber hard regs since some of them are implemented as libgcc calls /and/ 64-moves are expanded as eight byte-moves, so that acc_a or acc_b might be clobbered by such a load. This patch simply denies non-generic address-space references by using nop_general_operand for all avr-dimode.md input predicates. With the patch, all memory loads that require library calls are issued before the expander codes from avr-dimode.md are run. PR target/87376 gcc/ * config/avr/avr-dimode.md: Use "nop_general_operand" instead of "general_operand" as predicate for all input operands. gcc/testsuite/ * gcc.target/avr/torture/pr87376.c: New test.
Diffstat (limited to 'gcc/jit')
0 files changed, 0 insertions, 0 deletions