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



             Bug #: 55121

           Summary: ICE in if-convertion with PGO (ARM)

    Classification: Unclassified

           Product: gcc

           Version: unknown

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: gcov-profile

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: christophe.l...@st.com





Created attachment 28555

  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=28555

patch 1



Hi,

 As discussed in 

http://gcc.gnu.org/ml/gcc/2012-10/msg00330.html

 then

http://gcc.gnu.org/ml/gcc/2012-10/msg00341.html

 there is an ICE when compiling SPEC2k's GAP bench with GCC for ARM using

profiling data.



My tests are based upon SVN rev #191819, with 4 patches (attached)

submitted by Matthew Gretton-Dann.



You can reproduce the ICE with:



$ XXXX/cc1 -fpreprocessed eval.i -quiet -dumpbase eval.c -march=armv7-a

-mtune=cortex-a9 -mthumb -mfpu=neon -mvectorize-with-neon-quad

-mfloat-abi=softfp -mtls-dialect=gnu -auxbase-strip eval.o -g -O3 -version

-fprofile-use=YYY -fno-common -o eval.s

eval.c: In function 'Ge':

eval.c:792:1: internal compiler error: in df_compact_blocks, at df-core.c:1570

 0x6917c1 df_compact_blocks()

        

/work1/lyon/Work/ARM/Linaro/sources/gcc-fsf-hot-cold-pgo/gcc/df-core.c:1570

 0x62c3f6 compact_blocks()

         /work1/lyon/Work/ARM/Linaro/sources/gcc-fsf-hot-cold-pgo/gcc/cfg.c:165

 0x659b89 relink_block_chain(bool)

        

/work1/lyon/Work/ARM/Linaro/sources/gcc-fsf-hot-cold-pgo/gcc/cfgrtl.c:3112

 0xeb7061 reorder_basic_blocks

        

/work1/lyon/Work/ARM/Linaro/sources/gcc-fsf-hot-cold-pgo/gcc/bb-reorder.c:2172

 0xeb71b8 rest_of_handle_reorder_blocks

       

/work1/lyon/Work/ARM/Linaro/sources/gcc-fsf-hot-cold-pgo/gcc/bb-reorder.c:2237





It could be that calls to merge_blocks() in merge_if_block() should be

guarded by e.g. can_merge_blocks_p (combo_bb, join_bb).



Adding this line before calling

       merge_blocks (combo_bb, join_bb);

makes the compilation succeed.



However, the resulting code is still not functional but that problem

may come from another module of the bench.



Also attached: eval.i and eval.gcda

Reply via email to