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