The code snippet in the attachment (stripped down real-world code) causes an ICE when compiling with -01 or greater. The ICE does not occur with -O0.
# m68k-rtems4.7-gcc -O1 -c -o startup_rel-cpuboot.o cpuboot.c cpuboot.c: In function `boot_phase_1': cpuboot.c:11: internal compiler error: output_operand: invalid expression as operand Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. # m68k-rtems4.7-gcc --version m68k-rtems4.7-gcc (GCC) 3.4.4 20041114 (prerelease) -- Summary: ICE: output_operand: invalid expression as operand Product: gcc Version: 3.4.4 Status: UNCONFIRMED Severity: normal Priority: P2 Component: target AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: corsepiu at gcc dot gnu dot org CC: gcc-bugs at gcc dot gnu dot org,joel at oarcorp dot com GCC target triplet: m68k-*-elf m68k-rtems* http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18542