aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2010-04-07 18:16:15 -0400
committerJason Merrill <jason@gcc.gnu.org>2010-04-07 18:16:15 -0400
commitfb4117f8d9d9e0f7c91649164920d4bb85b7e653 (patch)
tree52afc5ab370ab2f7d764d883232d5b3ce453cc70
parentaae43040a07d9ab956df339e419549963f86e6ee (diff)
downloadgcc-fb4117f8d9d9e0f7c91649164920d4bb85b7e653.zip
gcc-fb4117f8d9d9e0f7c91649164920d4bb85b7e653.tar.gz
gcc-fb4117f8d9d9e0f7c91649164920d4bb85b7e653.tar.bz2
re PR c++/43016 ([C++0x] Inappropriate multiple definition error for lambda function when inside inline functions)
PR c++/43016 * decl.c (start_preparsed_function): Do defer nested functions. From-SVN: r158095
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/decl.c4
2 files changed, 4 insertions, 3 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 4ea2565..fa01fcb 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2010-04-07 Jason Merrill <jason@redhat.com>
+ PR c++/43016
+ * decl.c (start_preparsed_function): Do defer nested functions.
+
PR c++/11094, DR 408
* cp-tree.h (VAR_HAD_UNKNOWN_BOUND, SET_VAR_HAD_UNKNOWN_BOUND): New.
* decl2.c (finish_static_data_member_decl): Set it.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 7a82ed6..32aeda2 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -12023,9 +12023,7 @@ start_preparsed_function (tree decl1, tree attrs, int flags)
if ((DECL_DECLARED_INLINE_P (decl1)
|| DECL_TEMPLATE_INSTANTIATION (decl1))
- && ! DECL_INTERFACE_KNOWN (decl1)
- /* Don't try to defer nested functions for now. */
- && ! decl_function_context (decl1))
+ && ! DECL_INTERFACE_KNOWN (decl1))
DECL_DEFER_OUTPUT (decl1) = 1;
else
DECL_INTERFACE_KNOWN (decl1) = 1;