diff options
author | Alexandre Oliva <oliva@adacore.com> | 2020-02-17 17:08:11 -0300 |
---|---|---|
committer | Alexandre Oliva <oliva@gnu.org> | 2020-02-17 17:08:11 -0300 |
commit | 96bae436e0cb2b3e14ea7f16854e1b535a72ca66 (patch) | |
tree | add8279bb9b95dc60a2acd439ae488277b67df5e /gcc/tree-ssa.c | |
parent | bc0f8df124f6ee12c82c5a6c1335868a15bcaecb (diff) | |
download | gcc-96bae436e0cb2b3e14ea7f16854e1b535a72ca66.zip gcc-96bae436e0cb2b3e14ea7f16854e1b535a72ca66.tar.gz gcc-96bae436e0cb2b3e14ea7f16854e1b535a72ca66.tar.bz2 |
Do not call null register_common in emutls
Thread-local variables with DECL_COMMON trigger an internal compiler
error on targets that use emulated TLS without register_common, when
we attempt to expand a call to the NULL register_common, with
testcases as simple as gcc.dg/tls/emutls-2.c.
The documentation states that, on such targets, common variables would
fall back to explicitly initialized. This patch rearranges the code
that deals with initialization of common and non-common variables,
complementing code that is already in place to detect
register_common-less targets.
for gcc/ChangeLog
* tree-emutls.c (new_emutls_decl, emutls_common_1): Complete
handling of register_common-less targets.
for gcc/testsuite/ChangeLog
* gcc.dg/tls/emutls-3.c: New, combining emutls-2.c and
thr-init-2.c into an execution test with explicitly common
variables.
Diffstat (limited to 'gcc/tree-ssa.c')
0 files changed, 0 insertions, 0 deletions