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

           Summary: mips64: Unrecognizable insn when one noreturn function
                    calling another noreturn function
           Product: gcc
           Version: 4.6.1
            Status: UNCONFIRMED
          Severity: major
          Priority: P3
         Component: target
        AssignedTo: unassig...@gcc.gnu.org
        ReportedBy: mar...@decky.cz
            Target: mips64


Created attachment 24654
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=24654
Preprocessed file

Simple test case:

extern void first(void) __attribute__((noreturn));
extern void second(void) __attribute__((noreturn));

void first(void)
{
    second();
}


Output of /usr/local/cross/mips64/bin/mips64el-linux-gnu-gcc -v:

Using built-in specs.
COLLECT_GCC=/usr/local/cross/mips64/bin/mips64el-linux-gnu-gcc
COLLECT_LTO_WRAPPER=/usr/local/cross/mips64/libexec/gcc/mips64el-linux-gnu/4.6.1/lto-wrapper
Target: mips64el-linux-gnu
Configured with: /root/install/cross/mips64/gcc-4.6.1/configure
--target=mips64el-linux-gnu --prefix=/usr/local/cross/mips64
--program-prefix=mips64el-linux-gnu- --with-gnu-as --with-gnu-ld --disable-nls
--disable-threads --enable-languages=c,objc,c++,obj-c++ --disable-multilib
--disable-libgcj --without-headers --disable-shared --enable-lto
Thread model: single
gcc version 4.6.1 (GCC) 


Command line that triggered the bug:

/usr/local/cross/mips64/bin/mips64el-linux-gnu-gcc  -I../../lib/c/include -O3
-imacros ../../../config.h -fexec-charset=UTF-8 -fwide-exec-charset=UTF-32LE
-finput-charset=UTF-8 -ffreestanding -fno-builtin -nostdlib -nostdinc -Wall
-Wextra -Wno-clobbered -Wno-unused-parameter -Wmissing-prototypes -std=gnu99
-Werror-implicit-function-declaration -Wwrite-strings -pipe -g -D__LE__ -Werror
-mips3 -mabi=o64 -mlong64 -Xassembler -64 -I../../srv/loader/include -c
generic/libc.c -o generic/libc.o


Compiler output:

generic/libc.c: In function 'first':
generic/libc.c:7:1: error: unrecognizable insn:
(insn 16 15 18 2 (parallel [
            (set (mem/c:DI (plus:DI (reg/f:DI 29 $sp)
                        (const_int 32 [0x20])) [2 S8 A64])
                (unspec:SI [
                        (const_int 32 [0x20])
                        (reg:DI 28 $28)
                    ] UNSPEC_POTENTIAL_CPRESTORE))
            (clobber (scratch:DI))
        ]) generic/libc.c:5 -1
     (nil))
generic/libc.c:7:1: internal compiler error: in extract_insn, at recog.c:2109

Reply via email to