https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115881
Uroš Bizjak <ubizjak at gmail dot com> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2024-07-11
Target Milestone|--- |15.0
Ever confirmed|0 |1
--- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> ---
Confirmed, _late_combine2 is doing:
trying to combine definition of r1 in:
6: {dx:DI=sp:DI+0xc;clobber flags:CC;}
REG_EQUIV frame:DI-0x4
into:
46: cx:DI=dx:DI
successfully matched this instruction to *leadi:
(set (reg:DI 2 cx [118])
(plus:DI (reg/f:DI 7 sp)
(const_int 12 [0xc])))
31: {di:DI=zero_extend(dx:SI+0x1);clobber flags:CC;}
successfully matched this instruction to addsi_1_zext:
(parallel [
(set (reg:DI 5 di)
(zero_extend:DI (plus:SI (subreg:SI (reg/f:DI 7 sp) 0)
(const_int 13 [0xd]))))
(clobber (reg:CC 17 flags))
])
which then triggers:
(define_peephole2
[(set (match_operand:DI 0 "register_operand")
(zero_extend:DI
(plus:SI (match_operand:SI 1 "nonmemory_operand")
(match_operand:SI 2 "register_operand"))))]
"TARGET_64BIT && !TARGET_OPT_AGU
&& REGNO (operands[0]) == REGNO (operands[2])
&& peep2_regno_dead_p (0, FLAGS_REG)"
[(parallel [(set (match_dup 0)
(zero_extend:DI (plus:SI (match_dup 2) (match_dup 1))))
(clobber (reg:CC FLAGS_REG))])])
However, there should be no SUBREG RTXes after reload.