http://gcc.gnu.org/bugzilla/show_bug.cgi?id=52660
Bug #: 52660 Summary: internal compiler error: in cxx_expand_expr, at cp/expr.c:114 Classification: Unclassified Product: gcc Version: 3.4.5 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: shang_tao_...@163.com The output of gcc -v -save-temps options source-file is: Reading specs from /usr/local-ae32000/bin/../lib/gcc/ae32000-elf/3.4.5/specs Configured with: ../EISC_gcc-3.4.5/configure --target=ae32000-elf --prefix=/usr/local --enable-languages=c,c++ --with-gnu-as --with-gnu-ld --with-headers=/home/kkh/src/ae32000_v265/newlib-1.14.0/newlib/libc/include --with-newlib --enable-shared Thread model: single gcc version 3.4.5 (AE32000 Compiler v2.6.5 | binutils-2.14 | gdb_insight-6.8) (LDI Code motion / Seperated GCCLIB / mulsi3 / Mem index / Floating-point optimized again / Double precision BUG Fixed) /usr/local-ae32000/bin/../libexec/gcc/ae32000-elf/3.4.5/cc1plus.exe -E -quiet -v -I../../header/include -iprefix /usr/local-ae32000/bin/../lib/gcc/ae32000-elf/3.4.5/ -MMD obj/rwflash.d -MFobj/rwflash.d -MP -MTobj/rwflash.d -MQ obj/rwflash.o rwflash.cpp -Wextra -Wall -fmessage-length=0 -o rwflash.ii ignoring nonexistent directory "/usr/local/include/c++/3.4.5" ignoring nonexistent directory "/usr/local/include/c++/3.4.5/ae32000-elf" ignoring nonexistent directory "/usr/local/include/c++/3.4.5/backward" ignoring nonexistent directory "/usr/local/lib/gcc/ae32000-elf/3.4.5/include" ignoring nonexistent directory "/usr/local/ae32000-elf/sys-include" ignoring nonexistent directory "/usr/local/ae32000-elf/include" #include "..." search starts here: #include <...> search starts here: ../../header/include /usr/local-ae32000/bin/../lib/gcc/ae32000-elf/3.4.5/../../../../include/c++/3.4.5 /usr/local-ae32000/bin/../lib/gcc/ae32000-elf/3.4.5/../../../../include/c++/3.4.5/ae32000-elf /usr/local-ae32000/bin/../lib/gcc/ae32000-elf/3.4.5/../../../../include/c++/3.4.5/backward /usr/local-ae32000/bin/../lib/gcc/ae32000-elf/3.4.5/include /usr/local-ae32000/bin/../lib/gcc/ae32000-elf/3.4.5/../../../../ae32000-elf/sys-include /usr/local-ae32000/bin/../lib/gcc/ae32000-elf/3.4.5/../../../../ae32000-elf/include End of search list. /usr/local-ae32000/bin/../libexec/gcc/ae32000-elf/3.4.5/cc1plus.exe -fpreprocessed rwflash.ii -quiet -dumpbase rwflash.cpp -auxbase-strip obj/rwflash.o -Wextra -Wall -version -fmessage-length=0 -o rwflash.s GNU C++ version 3.4.5 (ae32000-elf) compiled by GNU C version 4.3.4 20090804 (release) 1. GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072 rwflash.cpp: In member function `void C_FLASH::dosort()': rwflash.cpp:206: internal compiler error: in cxx_expand_expr, at cp/expr.c:114 I think these statement cause this ICE: typedef bool (C_FLASH::*PMF)(PLO,PLO); if(mPLO.empty()) return; PMF pmf = &C_FLASH::ComparePLO; sort(mPLO.begin(),mPLO.end(),this->*pmf);//this is line 206 of rwflash.cpp PLO is a struct,mPLO is std::vector<PLO>.