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