diff options
author | Jason Merrill <jason@redhat.com> | 2014-01-31 12:30:03 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2014-01-31 12:30:03 -0500 |
commit | 6962711f951cc6dc8f9cc3ef1e8adee993d1ca4b (patch) | |
tree | d7b168a7addcf0dc04a04fcfae52a1bfc9d0e2e8 /gcc | |
parent | 99a82a1e1698a3bf85e5bcf32843c8070c508119 (diff) | |
download | gcc-6962711f951cc6dc8f9cc3ef1e8adee993d1ca4b.zip gcc-6962711f951cc6dc8f9cc3ef1e8adee993d1ca4b.tar.gz gcc-6962711f951cc6dc8f9cc3ef1e8adee993d1ca4b.tar.bz2 |
re PR c++/58672 ([c++11] ICE with thread_local and variable of broken class)
PR c++/58672
* decl2.c (handle_tls_init): Handle null init fn.
From-SVN: r207363
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cp/decl2.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/tls/thread_local-ice2.C | 11 |
3 files changed, 16 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4f38a6d..858510d 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,8 @@ 2014-01-31 Jason Merrill <jason@redhat.com> + PR c++/58672 + * decl2.c (handle_tls_init): Handle null init fn. + PR c++/55800 * decl2.c (get_tls_init_fn): Copy DECL_EXTERNAL from the variable. diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 2216591..35707a0 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -4036,6 +4036,8 @@ handle_tls_init (void) if (TREE_PUBLIC (var)) { tree single_init_fn = get_tls_init_fn (var); + if (single_init_fn == NULL_TREE) + continue; cgraph_node *alias = cgraph_same_body_alias (cgraph_get_create_node (fn), single_init_fn, fn); diff --git a/gcc/testsuite/g++.dg/tls/thread_local-ice2.C b/gcc/testsuite/g++.dg/tls/thread_local-ice2.C new file mode 100644 index 0000000..53bc297 --- /dev/null +++ b/gcc/testsuite/g++.dg/tls/thread_local-ice2.C @@ -0,0 +1,11 @@ +// PR c++/58672 +// { dg-options "-std=c++11" } +// { dg-require-effective-target tls } + +struct A +{ + A(int); + i; // { dg-error "" } +}; + +thread_local A a(0); |