* decl2.c (vague_linkage_p): Local statics have vague linkage.

From-SVN: r210019
This commit is contained in:
Jason Merrill 2014-05-02 16:56:41 -04:00 committed by Jason Merrill
parent 43b781fac7
commit c4fa357222
2 changed files with 15 additions and 6 deletions

View File

@ -1,5 +1,7 @@
2014-05-02 Jason Merrill <jason@redhat.com>
* decl2.c (vague_linkage_p): Local statics have vague linkage.
PR c++/60992
* lambda.c (lambda_capture_field_type): Wrap anything dependent
other than 'this'.

View File

@ -1804,12 +1804,19 @@ vague_linkage_p (tree decl)
/* Unfortunately, import_export_decl has not always been called
before the function is processed, so we cannot simply check
DECL_COMDAT. */
return (DECL_COMDAT (decl)
|| (((TREE_CODE (decl) == FUNCTION_DECL
&& DECL_DECLARED_INLINE_P (decl))
|| (DECL_LANG_SPECIFIC (decl)
&& DECL_TEMPLATE_INSTANTIATION (decl)))
&& TREE_PUBLIC (decl)));
if (DECL_COMDAT (decl)
|| (((TREE_CODE (decl) == FUNCTION_DECL
&& DECL_DECLARED_INLINE_P (decl))
|| (DECL_LANG_SPECIFIC (decl)
&& DECL_TEMPLATE_INSTANTIATION (decl)))
&& TREE_PUBLIC (decl)))
return true;
else if (DECL_FUNCTION_SCOPE_P (decl))
/* A local static in an inline effectively has vague linkage. */
return (TREE_STATIC (decl)
&& vague_linkage_p (DECL_CONTEXT (decl)));
else
return false;
}
/* Determine whether or not we want to specifically import or export CTYPE,