diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cp/cp-lang.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/cpp1y/vla6.C | 14 |
3 files changed, 20 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 6ccc776..ae2c174 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,5 +1,9 @@ 2013-05-30 Jason Merrill <jason@redhat.com> + PR c++/57404 + * cp-lang.c (cp_classify_record): Handle structs without + TYPE_LANG_SPECIFIC. + PR c++/52377 * class.c (common_enclosing_class): New. * cp-tree.h: Declare it. diff --git a/gcc/cp/cp-lang.c b/gcc/cp/cp-lang.c index 47a6004..a7fa8e4 100644 --- a/gcc/cp/cp-lang.c +++ b/gcc/cp/cp-lang.c @@ -127,7 +127,8 @@ cxx_dwarf_name (tree t, int verbosity) static enum classify_record cp_classify_record (tree type) { - if (CLASSTYPE_DECLARED_CLASS (type)) + if (TYPE_LANG_SPECIFIC (type) + && CLASSTYPE_DECLARED_CLASS (type)) return RECORD_IS_CLASS; return RECORD_IS_STRUCT; diff --git a/gcc/testsuite/g++.dg/cpp1y/vla6.C b/gcc/testsuite/g++.dg/cpp1y/vla6.C new file mode 100644 index 0000000..b725e7b --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp1y/vla6.C @@ -0,0 +1,14 @@ +// PR c++/57404 +// { dg-options "-std=c++11 -g" } + +void f (int i) +{ + int a[i]; + [&a] {}; +} + +void g (int i) +{ + int a[i]; + [&a] {} (); +} |