------- Additional Comments From steven at gcc dot gnu dot org 2004-12-10 11:44 ------- Minimal test case: $ cat t.c static __thread void *foo[2]; test1 () { void **ivtmp12; while (&foo[1] != ivtmp12); }
$ ../cc1 t.c -fdump-rtl-expand-details test1 t.c: In function 'test1': t.c:6: error: unrecognizable insn: (insn 9 7 10 1 (set (reg/f:DI 58 [ D.1471 ]) (const:DI (plus:DI (symbol_ref:DI ("foo") [flags 0x22] <var_decl 0x2a9598f540 foo>) (const_int 8 [0x8])))) -1 (nil) (nil)) t.c:6: internal compiler error: in extract_insn, at recog.c:2020 Removing __thread makes the ICE go away. It definitely looks related to the error from comment #6, the insn that causes the ICE is precisely the statement that is rejected when I feed the gimplified test case to the compiler: ;; D.1471 = &foo[1] (insn 9 7 0 (set (reg:DI 58 [ D.1471 ]) (const:DI (plus:DI (symbol_ref:DI ("foo") [flags 0x22] <var_decl 0x2a9598f540 foo>) (const_int 8 [0x8])))) -1 (nil) (nil)) -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=18910