http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47908
Summary: attribute((optimize(2))) causes ICE in m68k_sched_issue_rate Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: mi...@it.uu.se When targeting m68k-linux, if a function declaration has __attribute__((__optimize__(2))), then gcc ICEs in m68k_sched_issue_rate: > cat O16384.c __attribute__((__optimize__(2))) void foo (void) { } > objdir/gcc/xgcc -Bobjdir/gcc -S O16384.c O16384.c: In function 'foo': O16384.c:1:1: internal compiler error: in m68k_sched_issue_rate, at config/m68k/m68k.c:6055 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. The immediate cause is that m68k_sched_cpu indicates a non-ColdFire target, and m68k_sched_issue_rate explicitly calls gcc_unreachable in that case. I don't know why attribute((optimize(2))) causes scheduling to be attempted, esp. since m68k_option_override seems to disable a number of scheduling-related flags. This bug causes gcc.dg/O16384.c to fail with gcc-4.4.5/4.5.2/4.6.0 on m68k-linux. With gcc-4.3.5 the optimize attribute is ignored and there is no ICE. > objdir/gcc/xgcc -v Using built-in specs. COLLECT_GCC=objdir/gcc/xgcc Target: m68k-unknown-linux Configured with: /tmp/gcc-4.6-20110219/configure --target=m68k-unknown-linux --prefix=/home/mikpe/pkgs/linux-x86/cross-m68k --with-gmp=/home/mikpe/pkgs/linux-x86/gmp-4.3.2 --with-mpfr=/home/mikpe/pkgs/linux-x86/mpfr-2.4.2 --with-mpc=/home/mikpe/pkgs/linux-x86/mpc-0.8.2 --disable-plugin --disable-lto --disable-nls --enable-shared --disable-libmudflap --disable-multilib --enable-threads=posix --enable-checking=release --enable-languages=c Thread model: posix gcc version 4.6.0 20110219 (experimental) (GCC)