Author: majnemer
Date: Mon May 23 12:32:35 2016
New Revision: 270461

URL: http://llvm.org/viewvc/llvm-project?rev=270461&view=rev
Log:
Address post-commit review feedback to r270457

Add two tests which show our error handling behavior for invalid
parameters in the layout_version and empty_bases attributes.

Amend our documentation to make it more clear that
__declspec(empty_bases) and __declspec(layout_version) can only apply to
classes, structs, and unions.

Modified:
    cfe/trunk/include/clang/Basic/AttrDocs.td
    cfe/trunk/test/SemaCXX/ms-empty_bases.cpp
    cfe/trunk/test/SemaCXX/ms-layout_version.cpp

Modified: cfe/trunk/include/clang/Basic/AttrDocs.td
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/AttrDocs.td?rev=270461&r1=270460&r2=270461&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/AttrDocs.td (original)
+++ cfe/trunk/include/clang/Basic/AttrDocs.td Mon May 23 12:32:35 2016
@@ -1558,6 +1558,7 @@ def EmptyBasesDocs : Documentation {
   let Content = [{
 The empty_bases attribute permits the compiler to utilize the
 empty-base-optimization more frequently.
+This attribute only applies to struct, class, and union types.
 It is only supported when using the Microsoft C++ ABI.
   }];
 }
@@ -1567,6 +1568,7 @@ def LayoutVersionDocs : Documentation {
   let Content = [{
 The layout_version attribute requests that the compiler utilize the class
 layout rules of a particular compiler version.
+This attribute only applies to struct, class, and union types.
 It is only supported when using the Microsoft C++ ABI.
   }];
 }

Modified: cfe/trunk/test/SemaCXX/ms-empty_bases.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/ms-empty_bases.cpp?rev=270461&r1=270460&r2=270461&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/ms-empty_bases.cpp (original)
+++ cfe/trunk/test/SemaCXX/ms-empty_bases.cpp Mon May 23 12:32:35 2016
@@ -5,3 +5,5 @@ enum __declspec(empty_bases) E {}; // ex
 int __declspec(empty_bases) I; // expected-warning{{'empty_bases' attribute 
only applies to classes}}
 typedef struct T __declspec(empty_bases) U; // expected-warning{{'empty_bases' 
attribute only applies to classes}}
 auto z = []() __declspec(empty_bases) { return nullptr; }; // 
expected-warning{{'empty_bases' attribute only applies to classes}}
+
+struct __declspec(empty_bases(1)) X {}; // expected-error{{'empty_bases' 
attribute takes no arguments}}

Modified: cfe/trunk/test/SemaCXX/ms-layout_version.cpp
URL: 
http://llvm.org/viewvc/llvm-project/cfe/trunk/test/SemaCXX/ms-layout_version.cpp?rev=270461&r1=270460&r2=270461&view=diff
==============================================================================
--- cfe/trunk/test/SemaCXX/ms-layout_version.cpp (original)
+++ cfe/trunk/test/SemaCXX/ms-layout_version.cpp Mon May 23 12:32:35 2016
@@ -8,3 +8,4 @@ auto z = []() __declspec(layout_version(
 
 struct __declspec(layout_version(18)) X {}; // 
expected-error{{'layout_version' attribute parameter 18 is out of bounds}}
 struct __declspec(layout_version(20)) Y {}; // 
expected-error{{'layout_version' attribute parameter 20 is out of bounds}}
+struct __declspec(layout_version) Z {}; // expected-error{{attribute takes one 
argument}}


_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to