From da776f9a8ed641a78196ef77c41449d3b3603eb8 Mon Sep 17 00:00:00 2001 From: Douglas Gregor Date: Mon, 7 Jan 2013 20:03:16 +0000 Subject: Use the C++11 POD definition in C++11 mode to determine whether one can create a VLA of class type. Fixes . llvm-svn: 171783 --- .../SemaCXX/c99-variable-length-array-cxx11.cpp | 26 ++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp (limited to 'clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp') diff --git a/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp b/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp new file mode 100644 index 00000000000..b740e397759 --- /dev/null +++ b/clang/test/SemaCXX/c99-variable-length-array-cxx11.cpp @@ -0,0 +1,26 @@ +// RUN: %clang_cc1 -fsyntax-only -verify -std=c++11 -Wvla %s +struct StillPOD { + StillPOD() = default; +}; + +struct StillPOD2 { + StillPOD np; +}; + +struct NonPOD { + NonPOD(int) {} +}; + +struct POD { + int x; + int y; +}; + +// We allow VLAs of POD types, only. +void vla(int N) { + int array1[N]; // expected-warning{{variable length arrays are a C99 feature}} + POD array2[N]; // expected-warning{{variable length arrays are a C99 feature}} + StillPOD array3[N]; // expected-warning{{variable length arrays are a C99 feature}} + StillPOD2 array4[N][3]; // expected-warning{{variable length arrays are a C99 feature}} + NonPOD array5[N]; // expected-error{{variable length array of non-POD element type 'NonPOD'}} +} -- cgit v1.2.3