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