http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60141

--- Comment #3 from Teresa Johnson <tejohnson at google dot com> ---
On Thu, Feb 13, 2014 at 9:22 AM, Teresa Johnson <tejohn...@google.com> wrote:
> This appears to have been exposed, not caused, by the change to the
> pass ordering. It is in fact a duplicate of PR middle-end/43631, which
> was fixed on trunk by r197994 on 4/15/13. I will backport the fix to
> google-4_8.

Backported fix as r207766:

2014-02-13  Teresa Johnson  <tejohn...@google.com>

        For Google b/12971524, backport r197994 to fix PR60141.

        2013-04-16  Steven Bosscher  <ste...@gcc.gnu.org>

        PR middle-end/43631
        * emit-rtl.c (make_note_raw): New function.
        (link_insn_into_chain): New static inline function.
        (add_insn): Use it.
        (add_insn_before, add_insn_after): Factor insn chain linking code...
        (add_insn_before_nobb, add_insn_after_nobb): ...here, new functions
        using link_insn_into_chain.
        (note_outside_basic_block_p): New helper function for emit_note_after
        and emit_note_before.
        (emit_note_after): Use nobb variant of add_insn_after if the note
        should not be contained in a basic block.
        (emit_note_before): Use nobb variant of add_insn_before if the note
        should not be contained in a basic block.
        (emit_note_copy): Use make_note_raw.
        (emit_note): Likewise.
        * bb-reorder.c (insert_section_boundary_note): Remove hack to set
        BLOCK_FOR_INSN to NULL manually for NOTE_INSN_SWITCH_TEXT_SECTIONS.
        * jump.c (cleanup_barriers): Use reorder_insns_nobb to avoid making
        the moved barrier the tail of the basic block it follows.
        * var-tracking.c (pass_variable_tracking): Add TODO_verify_flow.


Teresa

>
> Teresa
>
> On Mon, Feb 10, 2014 at 4:49 PM, shenhan at google dot com
> <gcc-bugzi...@gcc.gnu.org> wrote:
>> http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60141
>>
>>             Bug ID: 60141
>>            Summary: ICE in i386.c distance_non_agu_define_in_bb
>>            Product: gcc
>>            Version: 4.8.3
>>             Status: UNCONFIRMED
>>           Severity: normal
>>           Priority: P3
>>          Component: rtl-optimization
>>           Assignee: unassigned at gcc dot gnu.org
>>           Reporter: shenhan at google dot com
>>                 CC: llozano at google dot com, tejohnson at google dot com
>>
>> This only fails for google/gcc-4_8
>>
>> To reproduce -
>>   configure:
>>      ~/gcc.git/configure --disable-bootstrap --enable-languages='c,c++'
>> --disable-multilib --disable-libatomic     --disable-libmudflap
>> --disable-libssp --enable-libgomp --enable-__cxa_atexit
>> --enable-checking=release     --disable-libquadmath --disable-libitm
>> --enable-esp --with-arch=atom --with-tune=atom --enable-frame-pointer
>>   Build -
>>      make -j40
>>   Compile a testcase -
>>    ./gcc/xgcc -B./gcc -g -O2 -fpic -c -m32 ~/SROA.pp.cpp
>>   Output -
>>    SROA.cpp: In member function ‘void
>> {anonymous}::AllocaPartitioning::UseBuilder::operator()()’:
>> SROA.cpp:873:3: internal compiler error: Segmentation fault
>> 0x8d0baf crash_signal
>>         ../../../gcc.git/gcc/toplev.c:346
>> 0xa798c8 distance_non_agu_define_in_bb
>>         ../../../gcc.git/gcc/config/i386/i386.c:17506
>> 0xa79cad distance_non_agu_define
>>         ../../../gcc.git/gcc/config/i386/i386.c:17564
>> 0xa79cad ix86_lea_outperforms
>>         ../../../gcc.git/gcc/config/i386/i386.c:17730
>> 0xb8e6ca output_89
>>         ../../../gcc.git/gcc/config/i386/i386.md:2152
>> 0x72a5c3 final_scan_insn(rtx_def*, _IO_FILE*, int, int, int*)
>>         ../../../gcc.git/gcc/final.c:2895
>> 0x72ae84 final(rtx_def*, _IO_FILE*, int)
>>         ../../../gcc.git/gcc/final.c:1986
>> 0x72b46d rest_of_handle_final
>>         ../../../gcc.git/gcc/final.c:4432
>> Please submit a full bug report,
>> with preprocessed source if appropriate.
>> Please include the complete backtrace with any bug report.
>> See <http://gcc.gnu.org/bugs.html> for instructions.
>>
>> Debugging shows that in distance_non_agu_define_in_bb (i386.c),
>> BLOCK_FOR_INSN(start) returns zero, which caused this ICE.
>>
>> A preliminary bisecting in google/gcc-4_8 shows that the follow CL introduces
>> this ICE. (So I cc'ed Teresa Johnson)
>>
>>
>> commit 907fca49eae2da51a328eb192c691cc24f69e6af
>> Author: tejohnson <tejohnson@138bc75d-0d04-0410-961f-82ee72b054a4>
>> Date:   Mon Dec 2 18:28:19 2013 +0000
>>
>>     Backport the last few fixes for -freorder-blocks-and-partition from
>>     trunk to google/4_8: r204985, r205057 and r205243
>>
>>     ------------------------------------------------------------------------
>>         r204985 | tejohnson | 2013-11-18 14:38:51 -0800 (Mon, 18 Nov 2013) | 
>> 15
>> lines
>>
>>         This patch fixes an lto profiledbootstrap failure with
>>         -freorder-blocks-and-partition enabled. Currently compgotos
>>         is the only pass that goes into cfglayout mode after bb reordering,
>>         which is undesireable (and in the case of
>> -freorder-blocks-and-partition
>>         can cause illegal partitioning) because of the optimizations 
>> performed
>>         on the cfg when going into cfglayout mode. Moved compgoto before
>>         bb reordering to avoid these problems.
>>
>>         2013-11-18  Teresa Johnson  <tejohn...@google.com>
>>
>>         * gcc/cfgrtl.c (cfg_layout_initialize): Assert if we
>>         try to go into cfglayout after bb reordering.
>>         * gcc/passes.def: Move compgotos before bb reordering
>>         since it goes into cfglayout.
>>
>>     ------------------------------------------------------------------------
>>     ------------------------------------------------------------------------
>>         r205057 | tmsriram | 2013-11-19 14:12:21 -0800 (Tue, 19 Nov 2013) | 7
>> lines
>>
>>         Emit a label for the split cold function part.  Label name is formed 
>> by
>>         suffixing the original function name with "cold".
>>
>>         Patch tested for bootstrap on all default languages on x86_64 and
>>         regression testsuite checked for parity with RUNTESTFLAGS -m32 and 
>> m64.
>>
>>         2013-11-19  Sriraman Tallam  <tmsri...@google.com>
>>
>>         * final.c (final_scan_insn): Emit a label for the split
>>         cold function part.  Label name is formed by suffixing
>>         the original function name with "cold".
>>
>>         2013-11-19  Sriraman Tallam  <tmsri...@google.com>
>>
>>         * gcc.dg/tree-prof/cold_partition_label.c: New testcase.
>>
>>     ------------------------------------------------------------------------
>>     ------------------------------------------------------------------------
>>         r205243 | tejohnson | 2013-11-21 20:16:47 -0800 (Thu, 21 Nov 2013) | 
>> 6
>> lines
>>
>>         2013-11-21  Teresa Johnson  <tejohn...@google.com>
>>
>>         * cfgcleanup.c (outgoing_edges_match): Walk up past note instructions
>>         not understood by old_insns_match_p.
>>
>>     ------------------------------------------------------------------------
>>
>>
>>     git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/google/gcc-4_8@205594
>> 138bc75d-0d04-0410-961f-82ee72b054a4
>>
>> --
>> You are receiving this mail because:
>> You are on the CC list for the bug.
>
>
>
> --
> Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413

Reply via email to