diff options
author | Jason Merrill <jason@redhat.com> | 2010-02-10 16:48:25 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2010-02-10 16:48:25 -0500 |
commit | 7a79ff3be3d08ef53b5b6ca9a0adb7fc84ebdb19 (patch) | |
tree | afe62bd4ccd3088cc7038615858d06b65328c19a | |
parent | 56592e03b487f3c20ef54bbd97766d207f77b31d (diff) | |
download | gcc-7a79ff3be3d08ef53b5b6ca9a0adb7fc84ebdb19.zip gcc-7a79ff3be3d08ef53b5b6ca9a0adb7fc84ebdb19.tar.gz gcc-7a79ff3be3d08ef53b5b6ca9a0adb7fc84ebdb19.tar.bz2 |
re PR c++/43016 ([C++0x] Inappropriate multiple definition error for lambda function when inside inline functions)
PR c++/43016
* semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN.
From-SVN: r156671
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/semantics.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C | 12 |
4 files changed, 23 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6bd2eca..fd637fb 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2010-02-10 Jason Merrill <jason@redhat.com> + + PR c++/43016 + * semantics.c (maybe_add_lambda_conv_op): Set DECL_INTERFACE_KNOWN. + 2010-02-10 Shujing Zhao <pearly.zhao@oracle.com> * Make-lang.in (cp/cvt.o, cp/parser.o, cp/search.o): Depend on intl.h. diff --git a/gcc/cp/semantics.c b/gcc/cp/semantics.c index 39085be..f8ced6f 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -5871,6 +5871,8 @@ maybe_add_lambda_conv_op (tree type) DECL_NOT_REALLY_EXTERN (fn) = 1; DECL_DECLARED_INLINE_P (fn) = 1; DECL_STATIC_FUNCTION_P (fn) = 1; + if (nested) + DECL_INTERFACE_KNOWN (fn) = 1; add_method (type, fn, NULL_TREE); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d599f15..c63c1ff 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2010-02-10 Jason Merrill <jason@redhat.com> + + PR c++/43016 + * g++.dg/cpp0x/lambda/lambda-conv.C: Test for weakness. + 2010-02-10 Richard Guenther <rguenther@suse.de> PR tree-optimization/43017 diff --git a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C index e308248..fd7e401 100644 --- a/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C +++ b/gcc/testsuite/g++.dg/cpp0x/lambda/lambda-conv.C @@ -1,6 +1,16 @@ +// Test for conversion from stateless lambda to function pointer, which is +// not yet part of the draft but hopefully will be after the March 2010 +// meeting. + // { dg-options -std=c++0x } +// { dg-final { scan-assembler "weak\[^\n\r\]*_?_ZZ1fvENUlvE_cvPFvvEEv" { target { ! { *-*-darwin* *-*-mingw* *-*-cygwin } } } } } -int main() +inline void f() { void (*pfn)() = []{}; } + +int main() +{ + f(); +} |