diff options
author | Jason Merrill <jason@redhat.com> | 2012-10-25 11:53:40 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2012-10-25 11:53:40 -0400 |
commit | 57c3feb40a875ec85620513b49c758c6076a289a (patch) | |
tree | 8e1f9e7c2a795ddbe9e700d189b8b3e3f12c5d5f | |
parent | 4514a96b2ac1f53606fed91f2a6e40f5267bfd8b (diff) | |
download | gcc-57c3feb40a875ec85620513b49c758c6076a289a.zip gcc-57c3feb40a875ec85620513b49c758c6076a289a.tar.gz gcc-57c3feb40a875ec85620513b49c758c6076a289a.tar.bz2 |
* semantics.c (finish_omp_threadprivate): Call complete_type.
From-SVN: r192812
-rw-r--r-- | gcc/cp/ChangeLog | 2 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/gomp/tls-template1.C | 13 | ||||
-rw-r--r-- | libgomp/testsuite/libgomp.c++/tls-init1.C | 2 |
4 files changed, 18 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 38e79f5..278a668 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,7 @@ 2012-10-25 Jason Merrill <jason@redhat.com> + * semantics.c (finish_omp_threadprivate): Call complete_type. + * class.c (one_inherited_ctor): Warn about variadic inherited ctor. 2012-10-25 Marc Glisse <marc.glisse@inria.fr> diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 63b364c..073ee97 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -4360,7 +4360,7 @@ finish_omp_threadprivate (tree vars) error ("%qE declared %<threadprivate%> after first use", v); else if (! TREE_STATIC (v) && ! DECL_EXTERNAL (v)) error ("automatic variable %qE cannot be %<threadprivate%>", v); - else if (! COMPLETE_TYPE_P (TREE_TYPE (v))) + else if (! COMPLETE_TYPE_P (complete_type (TREE_TYPE (v)))) error ("%<threadprivate%> %qE has incomplete type", v); else if (TREE_STATIC (v) && TYPE_P (CP_DECL_CONTEXT (v)) && CP_DECL_CONTEXT (v) != current_class_type) diff --git a/gcc/testsuite/g++.dg/gomp/tls-template1.C b/gcc/testsuite/g++.dg/gomp/tls-template1.C new file mode 100644 index 0000000..5865ce3 --- /dev/null +++ b/gcc/testsuite/g++.dg/gomp/tls-template1.C @@ -0,0 +1,13 @@ +// { dg-require-effective-target tls } + +template <class T> struct B +{ + T t; +}; + +class A { + static B<int> b; +#pragma omp threadprivate(b) +}; + +B<int> A::b; diff --git a/libgomp/testsuite/libgomp.c++/tls-init1.C b/libgomp/testsuite/libgomp.c++/tls-init1.C index 4cbaccb..d62e96b 100644 --- a/libgomp/testsuite/libgomp.c++/tls-init1.C +++ b/libgomp/testsuite/libgomp.c++/tls-init1.C @@ -1,3 +1,5 @@ +// { dg-require-alias } + extern "C" void abort(); struct A |