https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117645
--- Comment #4 from John David Anglin <danglin at gcc dot gnu.org> --- Created attachment 59653 --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=59653&action=edit Prelinary patch to split TImode addti3 Still doesn't work. After reload we have: (code_label 163 15 160 9 19 (nil) [2 uses]) (note 160 163 53 9 [bb 9] NOTE_INSN_BASIC_BLOCK) (insn 53 160 54 9 (set (reg:DI 22 %r22 [orig:129 graphite_IV.10 ] [129]) (reg:DI 19 %r19 [ graphite_IV.10 ])) 130 {*pa.md:4286} (nil)) (insn 54 53 58 9 (set (reg:DI 31 %r31 [orig:130 graphite_IV.10+8 ] [130]) (reg:DI 20 %r20 [orig:91 graphite_IV.10+8 ] [91])) 130 {*pa.md:4286} (nil)) (insn 58 54 56 9 (clobber (reg:TI 5 %r5 [111])) -1 (nil)) (insn 56 58 57 9 (set (reg:DI 5 %r5) (const_int 0 [0])) 130 {*pa.md:4286} (nil)) (insn 57 56 182 9 (set (reg:DI 23 %r23 [137]) (const_int 1 [0x1])) 130 {*pa.md:4286} (nil)) (insn 182 57 185 9 (set (reg:DI 6 %r6 [orig:111+8 ] [111]) (reg:DI 23 %r23 [137])) 130 {*pa.md:4286} (nil)) (insn 185 182 183 9 (clobber (reg:TI 3 %r3 [orig:91 graphite_IV.10 ] [91])) -1 (nil)) (insn 183 185 184 9 (set (reg:DI 3 %r3 [ graphite_IV.10 ]) (reg:DI 19 %r19 [ graphite_IV.10 ])) 130 {*pa.md:4286} (nil)) (insn 184 183 188 9 (set (reg:DI 4 %r4 [orig:91 graphite_IV.10+8 ] [91]) (reg:DI 20 %r20 [orig:91 graphite_IV.10+8 ] [91])) 130 {*pa.md:4286} (nil)) (insn 188 184 59 9 (clobber (reg:TI 5 %r5 [111])) -1 (nil)) (insn 59 188 61 9 (set (reg:TI 19 %r19 [orig:91 graphite_IV.10 ] [91]) (plus:TI (reg:TI 3 %r3 [orig:91 graphite_IV.10 ] [91]) (reg:TI 5 %r5 [111]))) 182 {addti3} (nil)) (jump_insn 61 59 139 9 (set (pc) (if_then_else (gt (reg:DI 1 %r1 [ _20 ]) (reg:DI 22 %r22 [orig:129 graphite_IV.10 ] [129])) (label_ref:DI 163) (pc))) 54 {*pa.md:1479} (nil) -> 163) The initialization insns for registers r5 and r6 get deleted later by DCE. The problem seems to be the clobber (insn 188) inserted by LRA. Don't know why it is inserted. We had following before in the ira pass: (code_label 163 15 160 9 19 (nil) [2 uses]) (note 160 163 53 9 [bb 9] NOTE_INSN_BASIC_BLOCK) (insn 53 160 54 9 (set (reg:DI 129 [ graphite_IV.10 ]) (subreg:DI (reg:TI 91 [ graphite_IV.10 ]) 0)) 130 {*pa.md:4286} (nil)) (insn 54 53 58 9 (set (reg:DI 130 [ graphite_IV.10+8 ]) (subreg:DI (reg:TI 91 [ graphite_IV.10 ]) 8)) 130 {*pa.md:4286} (nil)) (insn 58 54 56 9 (clobber (reg:TI 111)) -1 (nil)) (insn 56 58 57 9 (set (subreg:DI (reg:TI 111) 0) (const_int 0 [0])) 130 {*pa.md:4286} (nil)) (insn 57 56 59 9 (set (subreg:DI (reg:TI 111) 8) (const_int 1 [0x1])) 130 {*pa.md:4286} (nil)) (insn 59 57 61 9 (set (reg:TI 91 [ graphite_IV.10 ]) (plus:TI (reg:TI 91 [ graphite_IV.10 ]) (reg:TI 111))) 182 {addti3} (expr_list:REG_DEAD (reg:TI 111) (nil))) (jump_insn 61 59 139 9 (set (pc) (if_then_else (gt (subreg:DI (reg:TI 77 [ _20 ]) 0) (reg:DI 129 [ graphite_IV.10 ])) (label_ref:DI 163) (pc))) 54 {*pa.md:1479} (nil) -> 163) At peephole2, we have: (code_label 163 15 160 9 19 (nil) [2 uses]) (note 160 163 53 9 [bb 9] NOTE_INSN_BASIC_BLOCK) (insn 53 160 54 9 (set (reg:DI 22 %r22 [orig:129 graphite_IV.10 ] [129]) (reg:DI 19 %r19 [ graphite_IV.10 ])) 130 {*pa.md:4286} (nil)) (insn 54 53 183 9 (set (reg:DI 31 %r31 [orig:130 graphite_IV.10+8 ] [130]) (reg:DI 20 %r20 [orig:91 graphite_IV.10+8 ] [91])) 130 {*pa.md:4286} (nil)) (insn 183 54 184 9 (set (reg:DI 3 %r3 [ graphite_IV.10 ]) (reg:DI 19 %r19 [ graphite_IV.10 ])) 130 {*pa.md:4286} (expr_list:REG_DEAD (reg:DI 19 %r19 [ graphite_IV.10 ]) (nil))) (insn 184 183 188 9 (set (reg:DI 4 %r4 [orig:91 graphite_IV.10+8 ] [91]) (reg:DI 20 %r20 [orig:91 graphite_IV.10+8 ] [91])) 130 {*pa.md:4286} (nil)) (insn 188 184 195 9 (clobber (reg:TI 5 %r5 [111])) -1 (nil)) (insn 195 188 61 9 (parallel [ (set (reg:DI 20 %r20 [orig:91 graphite_IV.10+8 ] [91]) (plus:DI (reg:DI 4 %r4 [orig:91 graphite_IV.10+8 ] [91]) (reg:DI 6 %r6 [orig:111+8 ] [111]))) (set (reg:DI 19 %r19 [ graphite_IV.10 ]) (plus:DI (plus:DI (reg:DI 3 %r3 [ graphite_IV.10 ]) (reg:DI 5 %r5)) (ltu:DI (reg:DI 20 %r20 [orig:91 graphite_IV.10+8 ] [91]) (reg:DI 4 %r4 [orig:91 graphite_IV.10+8 ] [91])))) ]) 181 {*split_addti3} (expr_list:REG_DEAD (reg:DI 6 %r6 [orig:111+8 ] [111]) (expr_list:REG_DEAD (reg:DI 5 %r5) (expr_list:REG_DEAD (reg:DI 4 %r4 [orig:91 graphite_IV.10+8 ] [91]) (expr_list:REG_DEAD (reg:DI 3 %r3 [ graphite_IV.10 ]) (nil)))))) (jump_insn 61 195 139 9 (set (pc) (if_then_else (gt (reg:DI 1 %r1 [ _20 ]) (reg:DI 22 %r22 [orig:129 graphite_IV.10 ] [129])) (label_ref:DI 163) (pc))) 54 {*pa.md:1479} (nil) -> 163)