gcc-2.95pre: Internal compiler error in `gen_add2_insn'
David Edelsohn
dje@watson.ibm.com
Mon May 31 21:06:00 GMT 1999
On the AIX side, GCC is producing the following code generating
the appropriate reloads:
----- lreg -----
(insn 260 254 255 (set (reg/v:SI 140)
(plus:SI (reg/v:SI 140)
(const_int 1 [0x1]))) 52 {*addsi3_internal1} (nil)
(nil))
----- greg -----
(insn 1974 254 260 (set (reg:SI 8 r8)
(reg/v:SI 66 ctr)) 424 {movsi+1} (nil)
(nil))
(insn 260 1974 1977 (set (reg:SI 8 r8)
(plus:SI (reg:SI 8 r8)
(const_int 1 [0x1]))) 52 {*addsi3_internal1} (nil)
(nil))
----- lreg -----
(insn 272 358 293 (set (reg:SI 170)
(plus:SI (reg/v:SI 140)
(const_int -1 [0xffffffff]))) 52 {*addsi3_internal1} (nil)
(nil))
(insn 280 293 277 (set (reg/v:SI 140)
(plus:SI (reg/v:SI 140)
(const_int 1 [0x1]))) 52 {*addsi3_internal1} (insn_list:REG_DEP_ANTI 272 (nil))
(nil))
(insn 295 277 297 (set (reg:SI 4 r4)
(plus:SI (reg:SI 147)
(reg/v:SI 140))) 52 {*addsi3_internal1} (insn_list 280 (nil))
(expr_list:REG_DEAD (reg/v:SI 140)
(nil)))
----- greg -----
(insn 1980 358 272 (set (reg:SI 9 r9)
(reg/v:SI 66 ctr)) 424 {movsi+1} (nil)
(nil))
(insn 272 1980 2079 (set (reg:SI 0 r0)
(plus:SI (reg:SI 9 r9)
(const_int -1 [0xffffffff]))) 52 {*addsi3_internal1} (nil)
(nil))
(insn 280 293 1989 (set (reg:SI 9 r9)
(plus:SI (reg:SI 9 r9)
(const_int 1 [0x1]))) 52 {*addsi3_internal1} (insn_list:REG_DEP_ANTI 272 (nil))
(nil))
(insn 295 277 297 (set (reg:SI 4 r4)
(plus:SI (reg:SI 13 r13)
(reg:SI 9 r9))) 52 {*addsi3_internal1} (insn_list 280 (nil))
(nil))
In all these cases, CTR is input to an insn, not itself being updated.
For some reason the SVR4 variant of the port is behaving differently --
possibly running out of registers for secondary reload. GCC targeted to
linuxppc should be performing the same types of transformations above.
Because it is not, I agree that there is a deeper problem.
David
More information about the Gcc-bugs
mailing list