I'm using gcc 3.4.6 and I get an ICE compiling this:

int setjmp(jmp_buf_t buf)
{
        __asm__ __volatile__
        (
                "movl %%edi,(%0)\n"
                "movl %%esi,4(%0)\n"
                "movl %%ebp,8(%0)\n"
                "movl %%ebx,16(%0)\n"
                "movl %%edx,20(%0)\n"
                "movl %%ecx,24(%0)\n"
                "leal 8(%%ebp),%%eax\n"
                "movl %%eax,32(%0)\n"
                "movl 4(%%ebp),%%eax\n"
                "movl %%eax,36(%0)\n"
        :
        :       "b"(buf)
        );
}

CFLAGS are: -ffreestanding -c -I/home/mike/popcorn-os/kernel/include
-finline-functions -fno-builtin
==> Entering directory kernel...
   -> C compiling: mt.c
./mt.c: In function `mt_init':
./mt.c:14: warning: assignment makes integer from pointer without a cast
./mt.c:23: warning: assignment from incompatible pointer type
./mt.c: In function `setjmp':
./mt.c:28: internal compiler error: in emit_move_insn, at expr.c:2809
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

Line 28 is the __asm__ __volatile__ line. (This is in a kernel I'm writing,
which explains the weird CFLAGS.)

Here's a jmp_buf_t in case it matters:
typedef struct

{

        uint_32 edi, esi, ebp, esp, ebx, edx, ecx, eax;

        uint_32 eip, eflags;

} jmp_buf_t;


-- 
           Summary: [GCC 3.4.6] internal compiler error: in emit_move_insn,
                    at expr.c:2809
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c
        AssignedTo: unassigned at gcc dot gnu dot org
        ReportedBy: mmiikkee13 at gmail dot com
 GCC build triplet: i686-pc-linux-gnu
  GCC host triplet: i686-pc-linux-gnu
GCC target triplet: i686-pc-linux-gnu


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

Reply via email to