------- 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

Reply via email to