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

Reply via email to