$ cat foo.i
typedef long double Tal2ldouble __attribute__((aligned (2)));
struct S2015 { Tal2ldouble a; };
extern struct S2015 check2015 ();
extern void checkx2015 (struct S2015);
void test2015 (void) { checkx2015 (check2015 ()); }
boltzmann ~/devel/irun $ cat foo.i
typedef long double Tal2ldouble __attribute__((aligned (2)));
struct S2015 { Tal2ldouble a; };
extern struct S2015 check2015 ();
extern void checkx2015 (struct S2015);
void test2015 (void) { checkx2015 (check2015 ()); }
boltzmann ~/devel/irun $ ./bin/gcc foo.i
gcc: Internal error: Segmentation fault (program cc1)

$ ./bin/gcc foo.i
gcc: Internal error: Segmentation fault (program cc1)

The backtrace for the segfault is:

Program received signal SIGSEGV, Segmentation fault.
0x1014a75c in mips_cannot_change_mode_class (from=TImode, to=DImode,
    class=FP_REGS) at ../../trunk/gcc/config/mips/mips.c:8732
8732    {
(gdb) bt
#0  0x1014a75c in mips_cannot_change_mode_class (from=TImode, to=DImode,
    class=FP_REGS) at ../../trunk/gcc/config/mips/mips.c:8732
#1  0x104b7ef4 in simplify_subreg (outermode=DImode, op=0x40bb280,
    innermode=TImode, byte=0) at ../../trunk/gcc/simplify-rtx.c:5021
#2  0x104b8bec in simplify_gen_subreg (outermode=TImode, op=0xa,
    innermode=SImode, byte=0) at ../../trunk/gcc/simplify-rtx.c:5218
#3  0x1020d0a0 in emit_move_multi_word (mode=TImode, x=0x50e1660, y=0x40bb280)
    at ../../trunk/gcc/expr.c:3265
#4  0x10209e50 in emit_move_insn (x=0x50e1660, y=0x40bb280)
    at ../../trunk/gcc/expr.c:3408
#5  0x101aaef4 in copy_to_reg (x=0x40bb280) at ../../trunk/gcc/explow.c:617
#6  0x1018fc6c in operand_subword_force (op=0x40bb280, offset=0, mode=TImode)
    at ../../trunk/gcc/emit-rtl.c:1448
#7  0x1020d2b0 in emit_move_multi_word (mode=TImode, x=0x50e1640, y=0x40bb280)
    at ../../trunk/gcc/expr.c:3276
#8  0x10209e50 in emit_move_insn (x=0x50e1640, y=0x40bb280)
    at ../../trunk/gcc/expr.c:3408
#9  0x101aaef4 in copy_to_reg (x=0x40bb280) at ../../trunk/gcc/explow.c:617
#10 0x1018fc6c in operand_subword_force (op=0x40bb280, offset=0, mode=TImode)
    at ../../trunk/gcc/emit-rtl.c:1448


-- 
           Summary: Segfault in mips_cannot_change_mode_class
           Product: gcc
           Version: 4.3.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: target
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: fxcoudert at gcc dot gnu dot org
 GCC build triplet: mips-sgi-irix6.5
  GCC host triplet: mips-sgi-irix6.5
GCC target triplet: mips-sgi-irix6.5


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

Reply via email to