https://gcc.gnu.org/bugzilla/show_bug.cgi?id=93119
Bug ID: 93119
Summary: [ICE] The traditional TLS support of aarch64-ilp32
target may be not perfect while enable fPIC
Product: gcc
Version: 10.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
Assignee: unassigned at gcc dot gnu.org
Reporter: pengliren at huawei dot com
Target Milestone: ---
My code:
#cat 1.c
__thread int g_tlsdata;
int func1()
{
g_tlsdata++;
return g_tlsdata;
}
gcc version:
gcc version 10.0.0 20191228 (experimental)
#./gcc 1.c -c -mabi=ilp32 -fPIC -mtls-dialect=trad
1.c: In function ‘func1’:
1.c:8:1: error: unrecognizable insn:
8 | }
| ^
(call_insn/u 5 2 6 2 (parallel [
(set (reg:DI 0 x0)
(call (mem:DI (symbol_ref:DI ("__tls_get_addr") [flags 0x41]
<function_decl 0xffff9b969d00 __tls_get_addr>) [0 S8 A8])
(const_int 1 [0x1])))
(unspec:DI [
(const_int 0 [0])
] UNSPEC_CALLEE_ABI)
(unspec:DI [
(symbol_ref:DI ("g_tlsdata") [flags 0x10] <var_decl
0xffffa90442d0 g_tlsdata>)
] UNSPEC_GOTSMALLTLS)
(clobber (reg:DI 30 x30))
]) "1.c":6:12 -1
(expr_list:REG_EH_REGION (const_int -2147483648 [0xffffffff80000000])
(nil))
(expr_list (clobber (reg:DI 17 x17))
(expr_list (clobber (reg:DI 16 x16))
(nil))))
during RTL pass: vregs
1.c:8:1: internal compiler error: in extract_insn, at recog.c:2294
0x5e788f _fatal_insn(char const*, rtx_def const*, char const*, int, char
const*)
../../gcc-616fb84/gcc/rtl-error.c:108
0x5e78c3 _fatal_insn_not_found(rtx_def const*, char const*, int, char const*)
../../gcc-616fb84/gcc/rtl-error.c:116
0xa56e6f extract_insn(rtx_insn*)
../../gcc-616fb84/gcc/recog.c:2294
0x845f63 instantiate_virtual_regs_in_insn
../../gcc-616fb84/gcc/function.c:1656
0x845f63 instantiate_virtual_regs
../../gcc-616fb84/gcc/function.c:1977
0x845f63 execute
../../gcc-616fb84/gcc/function.c:2026
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
I have read the Bug 78382 - ICE when compiling on aarch64 in ILP32 mode with
traditional thread local storage and pic
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78382, it was fixed, but ICE
trigger while using gcc 10.0.0 to compile my code.