bootstrap/8362: hard reg not substituted for all pseudos on PowerPC

dje@watson.ibm.com dje@watson.ibm.com
Fri Oct 25 15:12:00 GMT 2002


>Number:         8362
>Category:       bootstrap
>Synopsis:       hard reg not substituted for all pseudos on PowerPC
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    unassigned
>State:          open
>Class:          sw-bug
>Submitter-Id:   net
>Arrival-Date:   Fri Oct 25 14:56:00 PDT 2002
>Closed-Date:
>Last-Modified:
>Originator:     dje@watson.ibm.com
>Release:        gcc version 3.2.1 20021024 (prerelease)
>Organization:
>Environment:
powerpc-ibm-aix.4.3.3.0
>Description:
AIX bootstrap on the 3.2 branch ICEs while building
libstdc++-v3 abi_check.cc with -mcpu=power option.  The
failure turns out to be more general and more serious
because I can reproduce it with a PowerPC compiler using
the string instructions, not POWER-specific instructions.
The ICE is in reload1.c:reload_combine_note_use() testing
that a REG is a hard register and not still a pseudo.  greg
dump file shows:

Reloads for insn # 1856
Reload 0: reload_in (SI) = (plus:SI (reg/f:SI 1 r1)
                                                    (const_int 520 [0x208]))
        BASE_REGS, RELOAD_FOR_INPUT (opnum = 2)
        reload_in_reg: (plus:SI (reg/f:SI 1 r1)
                                                    (const_int 520 [0x208]))
        reload_reg_rtx: (reg:SI 11 r11)

(insn 16488 1853 1856 (set (reg:SI 11 r11)
        (plus:SI (reg/f:SI 1 r1)
            (const_int 520 [0x208]))) 36 {*addsi3_internal1} (nil)
    (nil))

(insn 1856 16488 16458 (parallel[ 
            (set (reg:SI 4 r4)
                (mem/s:SI (reg:SI 11 r11) [0 S4 A128]))
            (set (reg:SI 5 r5)
                (mem/s:SI (plus:SI (reg/f:SI 929)
                        (const_int 4 [0x4])) [0 S4 A32]))
            (set (reg:SI 6 r6)
                (mem/s:SI (plus:SI (reg/f:SI 929)
                        (const_int 8 [0x8])) [0 S4 A64]))
            (set (reg:SI 7 r7)
                (mem/s:SI (plus:SI (reg/f:SI 929)
                        (const_int 12 [0xc])) [0 S4 A32]))
        ] ) 322 {*rs6000.md:8737} (insn_list:REG_DEP_OUTPUT 1843 (insn_list:REG_
DEP_OUTPUT 1846 (insn_list 1842 (insn_list:REG_DEP_ANTI 1849 (nil)))))
    (nil))

r11 only was substituted for the pseudo in one location, not
the multiple locations in the instruction.
>How-To-Repeat:
cd powerpc-ibm-aix4.3.3.0/libstdc++-v3/testsuite
gcc -mstring -O2 -c abi_check.cc
>Fix:

>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the Gcc-bugs mailing list