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)

Reply via email to