Commit c4fa3572 by Jason Merrill Committed by Jason Merrill

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

From-SVN: r210019
parent 43b781fa
2014-05-02 Jason Merrill <jason@redhat.com> 2014-05-02 Jason Merrill <jason@redhat.com>
* decl2.c (vague_linkage_p): Local statics have vague linkage.
PR c++/60992 PR c++/60992
* lambda.c (lambda_capture_field_type): Wrap anything dependent * lambda.c (lambda_capture_field_type): Wrap anything dependent
other than 'this'. other than 'this'.
......
...@@ -1804,12 +1804,19 @@ vague_linkage_p (tree decl) ...@@ -1804,12 +1804,19 @@ vague_linkage_p (tree decl)
/* Unfortunately, import_export_decl has not always been called /* Unfortunately, import_export_decl has not always been called
before the function is processed, so we cannot simply check before the function is processed, so we cannot simply check
DECL_COMDAT. */ DECL_COMDAT. */
return (DECL_COMDAT (decl) if (DECL_COMDAT (decl)
|| (((TREE_CODE (decl) == FUNCTION_DECL || (((TREE_CODE (decl) == FUNCTION_DECL
&& DECL_DECLARED_INLINE_P (decl)) && DECL_DECLARED_INLINE_P (decl))
|| (DECL_LANG_SPECIFIC (decl) || (DECL_LANG_SPECIFIC (decl)
&& DECL_TEMPLATE_INSTANTIATION (decl))) && DECL_TEMPLATE_INSTANTIATION (decl)))
&& TREE_PUBLIC (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, /* Determine whether or not we want to specifically import or export CTYPE,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment