aboutsummaryrefslogtreecommitdiff
path: root/libphobos/README.gcc
diff options
context:
space:
mode:
authorGeorg-Johann Lay <avr@gjlay.de>2024-11-16 14:26:02 +0100
committerGeorg-Johann Lay <avr@gjlay.de>2024-11-16 19:56:13 +0100
commit083892ba18452383a1f240072d2a96dd72321a4f (patch)
tree134ab4c7a6bf2c9aeaa6ba294eed52c254ae2a1e /libphobos/README.gcc
parent02d7370966ac19af966b827b4c984e8a38fdf728 (diff)
downloadgcc-083892ba18452383a1f240072d2a96dd72321a4f.zip
gcc-083892ba18452383a1f240072d2a96dd72321a4f.tar.gz
gcc-083892ba18452383a1f240072d2a96dd72321a4f.tar.bz2
AVR: target/116781 - Fix ICE due to (clobber (match_dup)) in tablejump.
This patch avoids (clobber (match_dup)) in insn patterns for tablejump. The machine description now uses a scratch_operand instead which is possible since the clobbered entity is known in advance: 3-byte PC : REG_Z 2-byte PC + JMP : REG_Z 2-byte PC + RJMP : None, hence scratch:HI is used. The avr-casesi pass and optimization has to be adjusted to the new patterns. PR target/116781 gcc/ * config/avr/avr.md (*tablejump_split, *tablejump): Add operand 2 as a "scratch_operand" instead of a match_dup. (casesi): Adjust expander operands accordingly. Use a scratch:HI when the jump address is not clobbered. This is the case for a 2-byte PC + has no JMP instruction. In all the other cases, the affected operand is REG_Z (reg:HI 30). (casesi_<mode>_sequence): Adjust matcher to new anatomy. * config/avr/avr-passes.cc (avr_is_casesi_sequence) (avr_is_casesi_sequence, avr_optimize_casesi) (avr_casei_sequence_check_operands): Adjust to new anatomy.
Diffstat (limited to 'libphobos/README.gcc')
0 files changed, 0 insertions, 0 deletions