[Bug target/25160] New: ICE in print_operand if using -mfloat-gprs w/ non-854x -mcpu option

rmansfield at qnx dot com gcc-bugzilla@gcc.gnu.org
Tue Nov 29 19:06:00 GMT 2005


void foo(double a) {}
ryan@avarice:~$
/archive/bt/crosstool/powerpc-linux-gnuspe/head-glibc-2.3.3/bin/powerpc-linux-gnuspe-gcc
-mfloat-gprs=double -mcpu=common ~/t.c
/home/ryan/t.c: In function 'foo':
/home/ryan/t.c:1: internal compiler error: in print_operand, at
config/rs6000/rs6000.c:10674
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

ryan@avarice:~$
/archive/bt/crosstool/powerpc-linux-gnuspe/head-glibc-2.3.3/bin/powerpc-linux-gnuspe-gcc
-v
Using built-in specs.
Target: powerpc-linux-gnuspe
Configured with:
/archive/bt/ryan/crosstool-0.28-rc37/build/powerpc-linux-gnuspe/head-glibc-2.3.3/head/configure
--target=powerpc-linux-gnuspe --host=i686-host_pc-linux-gnu
--prefix=/archive/bt/crosstool/powerpc-linux-gnuspe/head-glibc-2.3.3
--with-local-prefix=/archive/bt/crosstool/powerpc-linux-gnuspe/head-glibc-2.3.3/powerpc-linux-gnuspe
--disable-multilib --with-newlib --without-headers --disable-nls
--enable-threads=no --enable-symvers=gnu --enable-__cxa_atexit
--enable-languages=c --disable-shared
Thread model: single
gcc version 4.2.0 20051129 (experimental)

According to the documentation, -mfloat-gprs is only available on the
MPC8540/MPC8548. So should there be a check like the following? 

Index: rs6000.c
===================================================================
--- rs6000.c    (revision 107671)
+++ rs6000.c    (working copy)
@@ -1789,6 +1789,8 @@

     case OPT_mfloat_gprs_:
       rs6000_explicit_options.float_gprs = true;
+      if (rs6000_cpu != PROCESSOR_PPC8540)
+         error ("unsupported architecture for -mfloat-gprs");
       if (! strcmp (arg, "yes") || ! strcmp (arg, "single"))
        rs6000_float_gprs = 1;
       else if (! strcmp (arg, "double"))

Also, I have another test case which may* cause an ICE in extract_insn, at
recog.c when using -mfloat-gprs=double and -mcpu=common. Since they are caused
by the same invalid combination of switches, should I open a PR for it or will
this one suffice?

*I found the ICE on the e500 branch. The test case is in C++ so I haven't have
time to build powerpc-linux-gnuspe-g++ from the head yet.


-- 
           Summary: ICE in print_operand if using -mfloat-gprs w/ non-854x
                    -mcpu option
           Product: gcc
           Version: 4.2.0
            Status: UNCONFIRMED
          Severity: minor
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: rmansfield at qnx dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-host_pc-linux-gnu
GCC target triplet: powerpc-linux-gnuspe


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25160



More information about the Gcc-bugs mailing list