https://gcc.gnu.org/bugzilla/show_bug.cgi?id=118067
Uroš Bizjak <ubizjak at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Component|target |rtl-optimization CC| |vmakarov at gcc dot gnu.org Status|UNCONFIRMED |NEW Ever confirmed|0 |1 Last reconfirmed| |2024-12-19 --- Comment #1 from Uroš Bizjak <ubizjak at gmail dot com> --- This is the problematic insn in _.c.322r.ira dump: (insn 9 5 10 2 (parallel [ (set (reg:HI 99 [ _2 ]) (lshiftrt:HI (subreg:HI (reg/v:V32HI 165 [ u ]) 0) (const_int 1 [0x1]))) (clobber (reg:CC 17 flags)) ]) "pr118067.c":10:8 1215 {*lshrhi3_1} (expr_list:REG_UNUSED (reg:CC 17 flags) (nil))) Reload tries to reload input operand with: (insn 193 5 191 2 (set (reg:SI 338) (subreg/j:SI (reg/v:V32HI 165 [ u ]) 0)) "pr118067.c":10:8 96 {*movsi_internal} (nil)) (note 191 193 192 2 NOTE_INSN_DELETED) (insn 192 191 9 2 (set (subreg/j:SI (reg:HI 337) 0) (reg:SI 338)) "pr118067.c":10:8 96 {*movsi_internal} (expr_list:REG_DEAD (reg:SI 338) (nil))) (insn 9 192 10 2 (parallel [ (set (reg:HI 99 [ _2 ]) (lshiftrt:HI (reg:HI 337) (const_int 1 [0x1]))) (clobber (reg:CC 17 flags)) ]) "pr118067.c":10:8 1215 {*lshrhi3_1} (expr_list:REG_DEAD (reg:HI 337) (expr_list:REG_UNUSED (reg:CC 17 flags) (nil)))) ... (insn 209 156 158 2 (set (reg:HI 354 [orig:99 _2 ] [99]) (reg:HI 99 [ _2 ])) "pr118067.c":10:8 97 {*movhi_internal} (expr_list:REG_DEAD (reg:HI 99 [ _2 ]) (nil))) and chooses alternative 1 using mask register reload r337: Choosing alt 1 in insn 9: (0) ?k (1) k (2) Ww {*lshrhi3_1} Creating newreg=337, assigning class ALL_MASK_REGS to r337 and: Creating newreg=338, assigning class NO_REGS to secondary r338 deleting insn with uid = 191. with: Choosing alt 11 in insn 193: (0) m (1) ?v {*movsi_internal} Choosing alt 15 in insn 192: (0) *k (1) *kBk {*movsi_internal} Choosing alt 6 in insn 209: (0) r (1) *k {*movhi_internal} There are plenty of mask registers available, so there is no reason for spill failure. Confirmed as RA problem, CC added.