I get an internal compiler error when compiling the code below. The compiler error goes away if the "-fno-tree-ccp" is added to the command line. The exact error message is:
gccbug.cpp: In constructor 'Controller_t::Controller_t()': gccbug.cpp:41: internal compiler error: in get_indirect_ref_operands, at tree-ssa-operands.c:1453 This is not a duplicate of #21167. That patch already appears to be in 4.0.2. The "-v" option gives this configuration: Using built-in specs. Target: powerpc-603e-eabi Configured with: /c/GCC/src/gcc-4.0.2/configure --target=powerpc-603e-eabi --prefix=/c/GCC/powerpc-603e-eabi --with-headers=/c/GCC/powerpc-603e-eabi/powerpc-603e-eabi/include --with-local-prefix=/c/GCC/powerpc-603e-eabi/powerpc-603e-eabi --with-newlib --with-cpu=603e --enable-cxx-flags=-mcpu=603e --disable-multilib --with-dwarf2 --enable-libstdcxx-debug --disable-c-mbchar --disable-nls --disable-threads --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --disable-shared --enable-c99 --enable-long-long --with-dwarf2 Thread model: single gcc version 4.0.2 /c/gcc/powerpc-603e-eabi/bin/../libexec/gcc/powerpc-603e-eabi/4.0.2/cc1plus.exe -quiet -v -iprefix /c/gcc/powerpc-603e-eabi/bin/../lib/gcc/powerpc-603e-eabi/4.0.2/ gccbug.cpp -quiet -dumpbase gccbug.cpp -mcpu=603e -auxbase gccbug -O2 -version -o /c/DOCUME~1/djohnson/LOCALS~1/Temp/cckcPKQy.s The exact code that generates this error is: ------------------ // Compile with -O2. // compiler error goes away if "-fno-tree-ccp" is added typedef unsigned long uint32_t; // compiler error goes away if "const" is removed typedef volatile uint32_t* const hwreg_t; struct RegisterLayout { uint32_t intmask; }; struct Controller_t { public: Controller_t(); inline void disableInterrupt() { *mpMaskRegister = 0; }; static hwreg_t mpMaskRegister; }; extern char SimulatedRegisters[]; // compiler error goes away if "volatile" is remove #define MACHINE \ (reinterpret_cast<volatile RegisterLayout*>(SimulatedRegisters)) hwreg_t Controller_t::mpMaskRegister = &MACHINE->intmask; Controller_t::Controller_t() { disableInterrupt(); } -- Summary: internal compiler error: get_indirect_ref_operands Product: gcc Version: 4.0.2 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: darin at usa dot net GCC host triplet: CYGWIN_NT-5.0 GCC target triplet: powerpc-603e-eabi http://gcc.gnu.org/bugzilla/show_bug.cgi?id=24665