Index: cp/decl2.c =================================================================== --- cp/decl2.c (revision 195043) +++ cp/decl2.c (working copy) @@ -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)); Index: testsuite/g++.dg/tls/thread_local-ice.C =================================================================== --- testsuite/g++.dg/tls/thread_local-ice.C (revision 0) +++ testsuite/g++.dg/tls/thread_local-ice.C (working copy) @@ -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" }