GCC trunk gets this ICE when building glibc. The ICE happens on gcc 4.1 too. This happens when -O2 is turned on. Here is a reduced testcase to reproduce the problem.
example.c ================== __thread int *a = 0; void foo (void) { extern int *b; b = (int *) ((*a)); } how to reproduce mips-elf-gcc -O2 -c example.c example.c: In function 'foo': example.c:7: error: unrecognizable insn: (insn 14 13 15 3 (set (reg/f:SI 193) (mem/c/i:SI (lo_sum:SI (reg:SI 195) (const:SI (unspec:SI [ (symbol_ref:SI ("a") [flags 0x22] <var_decl 0xb7c4a840 a>) ] 114))) [2 a+0 S4 A32])) -1 (nil) (nil)) example.c:7: internal compiler error: in extract_insn, at recog.c:2036 Please submit a full bug report, with preprocessed source if appropriate. See <URL:http://gcc.gnu.org/bugs.html> for instructions. -- Summary: ICE in in extract_insn, at recog.c:2036 Product: gcc Version: 4.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: raj dot khem at gmail dot com GCC build triplet: i386-redhat-linux GCC host triplet: i386-redhat-linux GCC target triplet: mips-unknown-elf http://gcc.gnu.org/bugzilla/show_bug.cgi?id=26765