http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47715
--- Comment #5 from H.J. Lu <hjl.tools at gmail dot com> 2011-02-17 14:31:59 UTC --- Another one: [hjl@gnu-33 ilp32-23]$ cat x.i struct gomp_team_state { struct gomp_team_state *prev_ts; unsigned team_id; unsigned level; }; struct gomp_thread { void *data; struct gomp_team_state ts; }; extern __thread struct gomp_thread gomp_tls_data; int foo (int level) { struct gomp_team_state *ts = &gomp_tls_data.ts; if (level < 0 || level > ts->level) return -1; for (level = ts->level - level; level > 0; --level) ts = ts->prev_ts; return ts->team_id; } [hjl@gnu-33 ilp32-23]$ make /export/build/gnu/gcc-x32/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc-x32/build-x86_64-linux/gcc/ -S -o x.s -mx32 -O2 -g x.i x.i: In function \u2018foo\u2019: x.i:22:1: error: unrecognizable insn: (insn 11 10 12 6 (set (reg:SI 78) (const:SI (plus:SI (symbol_ref:SI ("gomp_tls_data") [flags 0x60] <var_decl 0x7f9c2345a000 gomp_tls_data>) (const_int 4 [0x4])))) x.i:19 -1 (nil)) x.i:22:1: internal compiler error: in extract_insn, at recog.c:2109 Please submit a full bug report, with preprocessed source if appropriate. See <http://gcc.gnu.org/bugs.html> for instructions. make: *** [x.s] Error 1 [hjl@gnu-33 ilp32-23]$