mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-31 15:31:11 +08:00
re PR c++/45520 ([C++0x] compiler segmentation fault on decltype in lambda-declarator)
PR c++/45520 * tree.c (maybe_dummy_object): Check current_class_ref against context, not current_class_type. From-SVN: r168654
This commit is contained in:
parent
5826c8d29e
commit
41d04a8dfe
@ -1,3 +1,9 @@
|
||||
2011-01-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/45520
|
||||
* tree.c (maybe_dummy_object): Check current_class_ref against
|
||||
context, not current_class_type.
|
||||
|
||||
2011-01-08 Nicola Pero <nicola.pero@meta-innovation.com>
|
||||
|
||||
PR objc/47078
|
||||
|
@ -2374,12 +2374,12 @@ maybe_dummy_object (tree type, tree* binfop)
|
||||
if (binfop)
|
||||
*binfop = binfo;
|
||||
|
||||
if (current_class_ref && context == current_class_type
|
||||
/* Kludge: Make sure that current_class_type is actually
|
||||
correct. It might not be if we're in the middle of
|
||||
tsubst_default_argument. */
|
||||
&& same_type_p (TYPE_MAIN_VARIANT (TREE_TYPE (current_class_ref)),
|
||||
current_class_type))
|
||||
if (current_class_ref
|
||||
/* current_class_ref might not correspond to current_class_type if
|
||||
we're in tsubst_default_argument or a lambda-declarator; in either
|
||||
case, we want to use current_class_ref if it matches CONTEXT. */
|
||||
&& (same_type_ignoring_top_level_qualifiers_p
|
||||
(TREE_TYPE (current_class_ref), context)))
|
||||
decl = current_class_ref;
|
||||
else if (current != current_class_type
|
||||
&& context == nonlambda_method_basetype ())
|
||||
|
@ -1,3 +1,8 @@
|
||||
2011-01-11 Jason Merrill <jason@redhat.com>
|
||||
|
||||
PR c++/45520
|
||||
* g++.dg/cpp0x/lambda/lambda-this3.C: New.
|
||||
|
||||
2011-01-11 Iain Sandoe <iains@gcc.gnu.org>
|
||||
|
||||
* objc-obj-c++-shared/next-mapping.h: Add copyright header.
|
||||
|
14
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this3.C
Normal file
14
gcc/testsuite/g++.dg/cpp0x/lambda/lambda-this3.C
Normal file
@ -0,0 +1,14 @@
|
||||
// PR c++/45520
|
||||
// { dg-options -std=c++0x }
|
||||
|
||||
struct M {
|
||||
int i;
|
||||
};
|
||||
|
||||
struct S {
|
||||
M m;
|
||||
|
||||
void f() {
|
||||
auto lambda=[&](decltype(m.i) & i) { };
|
||||
}
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user