[Bug ipa/63566] New: [5 Regression] i686 bootstrap fails: ICE RTL flag check: INSN_UID used with unexpected rtx code 'set' in INSN_UID, at rtl.h:1326

mliska at suse dot cz gcc-bugzilla@gcc.gnu.org
Thu Oct 16 22:17:00 GMT 2014


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63566

            Bug ID: 63566
           Summary: [5 Regression] i686 bootstrap fails: ICE RTL flag
                    check: INSN_UID used with unexpected rtx code 'set' in
                    INSN_UID, at rtl.h:1326
           Product: gcc
           Version: 5.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: ipa
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mliska at suse dot cz

After introduction of IPA ICF in r216305, i686 fails to bootstrap.
I reduced IPA ICF to just merge a single function:
Semantic equality hit:void mark_oprs_set(rtx_insn*)->void
make_set_regs_unavailable(rtx_insn*).

With this change applied, stage2 compiler is miscompiled and following error
occurs:
../../../libgcc/config/libbid/bid_round.c: In function ‘__bid_round64_2_18’:
../../../libgcc/config/libbid/bid_round.c:210:1: internal compiler error: RTL
flag check: INSN_UID used with unexpected rtx code 'set' in INSN_UID, at
rtl.h:1326

Comparison of object files (compiled with stage1 compiler with and w/o
-fipa-icf) show following difference:

With IPA ICF (cprop.o):
contains .set
_ZL25make_set_regs_unavailableP8rtx_insn,_ZL13mark_oprs_setP8rtx_insn

and the only difference is in usage of the function (IPA ICF):
.L633:
    subl    $12, %esp
    .cfi_def_cfa_offset 108
    pushl    %ebx
    .cfi_def_cfa_offset 112
    call    _ZL25make_set_regs_unavailableP8rtx_insn
    movzwl    (%ebx), %edx
    addl    $16, %esp
    .cfi_def_cfa_offset 96
    cmpb    $0, rtx_length(%edx)
    jne    .L643

while original usage (-fno-ipa-icf) contains:
.L644:
    movl    %ebx, %eax
    call    _ZL25make_set_regs_unavailableP8rtx_insn
    movzwl    (%ebx), %edx
    cmpb    $0, rtx_length(%edx)
    jne    .L654

I am not familiar with x86 calling conventions for aliases, but I suspect this
chunk of code.

Does anyone can see a problem in this chunk?
Thank you for help,
Martin


More information about the Gcc-bugs mailing list