http://gcc.gnu.org/bugzilla/show_bug.cgi?id=47715
Summary: [x32] TLS doesn't work Product: gcc Version: 4.6.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target AssignedTo: unassig...@gcc.gnu.org ReportedBy: hjl.to...@gmail.com [hjl@gnu-6 ilp32-14]$ cat t.i extern __thread int h_errno; int * __h_errno_location (void) { return &h_errno; } [hjl@gnu-6 ilp32-14]$ /usr/gcc-4.6.0-x32/bin/gcc -mx32 -O2 -S t.i -fPIC t.i: In function \u2018__h_errno_location\u2019: t.i:6:1: error: unrecognizable insn: (call_insn/u 5 4 6 3 (parallel [ (set (reg:DI 0 ax) (call:DI (mem:QI (symbol_ref:DI ("__tls_get_addr")) [0 S1 A8]) (const_int 0 [0]))) (unspec:DI [ (symbol_ref:SI ("h_errno") [flags 0x50] <var_decl 0x7f94def6a000 h_errno>) ] UNSPEC_TLS_GD) ]) t.i:5 -1 (expr_list:REG_EH_REGION (const_int -2147483648 [0xffffffff80000000]) (nil)) (nil)) t.i:6: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. [hjl@gnu-6 ilp32-14]$