Bogus rtx generated?

Toshiyasu Morita
Mon Mar 16 03:56:00 GMT 1998

I'm tracking down a bug which causes gcc to crash; it looks like reload is
crashing when trying to generate reloads for the following rtx:

(insn 349 33 350 (parallel[
            (set (subreg:SI (reg/v:DI 46) 0)
                (ashift:SI (subreg:SI (reg/v:DI 44) 0)
                    (const_int 1)))
            (set (reg:SI 18 t)
                (lt:SI (subreg:SI (reg/v:DI 44) 0)
                    (const_int 0)))
        ] ) -1 (nil)

Is this a reasonable rtx? I don't understand why you would have a parallel
shift with a compare, so this seems rather fishy to me.

It looks like the previous rtx is generated by the first scheduling pass;
here's the rtx before scheduling:

(insn 35 33 36 (parallel[
            (set (subreg:SI (reg/v:DI 46) 0)
                (ashiftrt:SI (subreg:SI (reg/v:DI 44) 0)
                    (const_int 31)))
            (clobber (reg:SI 18 t))
        ] ) 68 {ashrsi2_31} (nil)
    (expr_list:REG_UNUSED (reg:SI 18 t)

but after try_split() is called, the first rtx is generated...


More information about the Gcc-bugs mailing list