diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 49e924d0196..46583530161 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,9 @@ +2013-01-09 Paolo Carlini + + PR c++/55801 + * decl2.c (var_needs_tls_wrapper): Return false when error_operand_p + of the argument is true. + 2013-01-08 Joel Brobecker * parser.c (cp_parser_initializer_list): Move declaration diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index c5de37e434c..074cf375019 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -1,7 +1,7 @@ /* Process declarations and variables for C++ compiler. Copyright (C) 1988, 1992, 1993, 1994, 1995, 1996, 1997, 1998, - 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007, 2008, 2009, 2010, - 2011, 2012 Free Software Foundation, Inc. + 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2007-2013 + Free Software Foundation, Inc. Hacked by Michael Tiemann (tiemann@cygnus.com) This file is part of GCC. @@ -2807,7 +2807,8 @@ var_defined_without_dynamic_init (tree var) static bool var_needs_tls_wrapper (tree var) { - return (DECL_THREAD_LOCAL_P (var) + return (!error_operand_p (var) + && DECL_THREAD_LOCAL_P (var) && !DECL_GNU_TLS_P (var) && !DECL_FUNCTION_SCOPE_P (var) && !var_defined_without_dynamic_init (var)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 3a3e46a4c4b..f300905689b 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-01-09 Paolo Carlini + + PR c++/55801 + * g++.dg/tls/thread_local-ice.C: New. + 2013-01-09 Andreas Schwab * gcc.dg/guality/pr54693.c: Null-terminate arr. @@ -20,7 +25,7 @@ 2013-01-08 Tejas Belagod - * gcc.target/aarch64/vect-mull-compile.c: Explicitly scan for + * gcc.target/aarch64/vect-mull-compile.c: Explicitly scan for instructions generated instead of number of occurances. 2013-01-08 James Greenhalgh diff --git a/gcc/testsuite/g++.dg/tls/thread_local-ice.C b/gcc/testsuite/g++.dg/tls/thread_local-ice.C new file mode 100644 index 00000000000..174aac42adb --- /dev/null +++ b/gcc/testsuite/g++.dg/tls/thread_local-ice.C @@ -0,0 +1,6 @@ +// PR c++/55801 +// { dg-options "-std=c++11" } +// { dg-require-effective-target tls } + +class C; +thread_local C O, O2 = O; // { dg-error "incomplete" }