Reloads broken on VAX. (after sunday)

Matt Thomas
Tue Oct 1 23:44:00 GMT 2002

When compiling libf2c/libI77/backspace.c, the following two insn's are
incorrectly merged.

(insn 3 523 4 0 0x0 (set (reg/v/f:SI 22)
         (mem/f:SI (plus:SI (reg/f:SI 12 %ap)
                 (const_int 4 [0x4])) [5 a+0 S4 A32])) 16 {movsi} (nil)
     (expr_list:REG_EQUIV (mem/f:SI (plus:SI (reg/f:SI 12 %ap)
                 (const_int 4 [0x4])) [5 a+0 S4 A32])

(insn 13 12 14 0 0x484455ac (set (reg:SI 153)
         (mem/s:SI (plus:SI (reg/v/f:SI 22)
                 (const_int 4 [0x4])) [4 <variable>.aunit+0 S4 A32])) 16 

Get merged to (in postreload):

(insn 13 12 14 0 0x484455ac (set (reg:SI 1 %r1 [153])
         (mem/s:SI (plus:SI (mem/f:SI (plus:SI (reg/f:SI 12 %ap)
                         (const_int 4 [0x4])) [5 a+0 S4 A32])
                 (const_int 4 [0x4])) [4 <variable>.aunit+0 S4 A32])) 16 

Now this was never given to GO_IF_LEGITIMATE_ADDRESS to approve but was
given to print_operand_address (which died on it).  This is not related to
the VAX ELF changes since I've been running with them.

I see similar breakage compiling unwind-dw2.c:

(plus:SI (mem:SI (plus:SI (reg/f:SI 13 %fp)
             (const_int -24 [0xffffffe8])) [28 unused_rs S4 A8])
     (const_int 136 [0x88]))
/export/toolchain/gcc/gcc/unwind-dw2.c: In function `execute_cfa_program':
/export/toolchain/gcc/gcc/unwind-dw2.c:892: internal compiler error: in 
print_operand_address, at config/vax/vax.c:357

gcc version 3.3 20020929 (experimental) was working properly
gcc version 3.3 20021001 (experimental) is broken.

Matt Thomas               Internet:
3am Software Foundry      WWW URL:
Cupertino, CA             Disclaimer: I avow all knowledge of this message

More information about the Gcc-bugs mailing list