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