Compiling the g++.dg/torture/pr58369.C test with yesterday's trunk (r221640) on powerpc64 (a POWER7 processor) fails with the ICE below. Interestingly, the ICE disappears with -O1. On powerpc64le gcc compiles the test successfully. $ g++ -O0 -c /src/gcc-trunk/gcc/testsuite/g++.dg/torture/pr58369.C /src/gcc-trunk/gcc/testsuite/g++.dg/torture/pr58369.C: In function ‘T ellint_rj_imp(T, T, T, T, Policy&) [with T = long double; Policy = PolicyA]’: /src/gcc-trunk/gcc/testsuite/g++.dg/torture/pr58369.C:88:1: error: unrecognizable insn: } ^ (insn 248 247 99 8 (set (reg:DF 10 10) (mem/u/c:DF (symbol_ref/u:DI ("*.LC0") [flags 0x2]) [0 S8 A64])) /src/gcc-trunk/gcc/testsuite/g++.dg/torture/pr58369.C:70 -1 (nil)) /src/gcc-trunk/gcc/testsuite/g++.dg/torture/pr58369.C:88:1: internal compiler error: in extract_insn, at recog.c:2343 0x109c9f1b _fatal_insn(char const*, rtx_def const*, char const*, int, char const*) /src/gcc-trunk/gcc/rtl-error.c:110 0x109c9f6f _fatal_insn_not_found(rtx_def const*, char const*, int, char const*) /src/gcc-trunk/gcc/rtl-error.c:118 0x1098f907 extract_insn(rtx_insn*) /src/gcc-trunk/gcc/recog.c:2343 0x1098f9c7 extract_insn_cached(rtx_insn*) /src/gcc-trunk/gcc/recog.c:2234 0x106b6817 cleanup_subreg_operands(rtx_insn*) /src/gcc-trunk/gcc/final.c:3137 0x109c74b7 reload(rtx_insn*, int) /src/gcc-trunk/gcc/reload1.c:1278 0x10854af7 do_reload /src/gcc-trunk/gcc/ira.c:5430 0x10854af7 execute /src/gcc-trunk/gcc/ira.c:5589 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.
According to git bisect, 2d5ee2b9035db2414ae3535db18550c1d90e52fd is the first bad commit: commit 2d5ee2b9035db2414ae3535db18550c1d90e52fd Author: meissner <meissner@138bc75d-0d04-0410-961f-82ee72b054a4> Date: Thu Mar 19 22:37:33 2015 +0000 [gcc] 2015-03-19 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/65240 * config/rs6000/predicates.md (easy_fp_constant): Remove special -ffast-math handling that kept non-0 constants live in the RTL until reload. Remove logic testing the number of instructions it took to create a constant in a GPR that was never used, due to a test for soft-float earlier. (memory_fp_constant): Delete, no longer used. * config/rs6000/rs6000.md (mov<MODE>_hardfloat): Remove alternatives for loading non-0 constants into GPRs for hard floating point that is no longer needed due to changes in easy_fp_constant. Add support for loading 0.0 into GPRs. (mov<mode>_hardfloat32): Likewise. (mov<mode>_hardfloat64): Likewise. (mov<mode>_64bit_dm): Likewise. (movtd_64bit_nodm): Likewise. (pre-reload move FP constant define_split): Delete define_split, since it is no longer used. (extenddftf2_internal): Remove GHF constraints that are not valid for extenddftf2. [gcc/testsuite] 2015-03-19 Michael Meissner <meissner@linux.vnet.ibm.com> PR target/65240 * gcc/testsuite/g++.dg/pr65240.h: Add tests for PR 65240. * gcc/testsuite/g++.dg/pr65240-1.C: Likewise. * gcc/testsuite/g++.dg/pr65240-2.C: Likewise. * gcc/testsuite/g++.dg/pr65240-3.C: Likewise. * gcc/testsuite/g++.dg/pr65240-4.C: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@221524 138bc75d-0d04-0410-961f-82ee72b054a4
Both this and pr65576 are caused by the same commit. Closing as duplicate. *** This bug has been marked as a duplicate of bug 65576 ***