https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123070
--- Comment #17 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] 98 100 103 106 117
98 and 100 conflict has overlapping ranges now.
Before they didn't:
;; lr out 6 [bp] 7 [sp] 16 [argp] 19 [frame] 98 103 106 117
So yes this is not exactly a RA issue but rather now we get an overlapping live
ranges as 98 didn't prop for some reason across the if.
Before we had:
```
(insn 26 25 28 5 (parallel [
(set (reg:DI 100 [ ivtmp.7 ])
(plus:DI (reg/v/f:DI 98 [ r ])
(const_int 4 [0x4])))
(clobber (reg:CC 17 flags))
]) "t1.c":11:3 discrim 3 289 {*adddi_1}
(expr_list:REG_DEAD (reg/v/f:DI 98 [ r ])
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil))))
```
And now we have:
```
(insn 29 28 31 6 (parallel [
(set (reg:DI 100 [ ivtmp.7 ])
(plus:DI (reg:DI 100 [ ivtmp.7 ])
(const_int 4 [0x4])))
(clobber (reg:CC 17 flags))
]) "t1.c":11:3 discrim 3 289 {*adddi_1}
(expr_list:REG_UNUSED (reg:CC 17 flags)
(nil)))
```
But 98 is defined as:
(insn 25 24 26 5 (set (reg/v/f:DI 98 [ r ])
(reg:DI 100 [ ivtmp.7 ])) "t1.c":12:12 99 {*movdi_internal}
(nil))