forked from OSchip/llvm-project
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. llvm-svn: 270461
This commit is contained in:
parent
fa7f948237
commit
7eca8a3d41
|
@ -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.
|
||||
}];
|
||||
}
|
||||
|
|
|
@ -5,3 +5,5 @@ enum __declspec(empty_bases) E {}; // expected-warning{{'empty_bases' attribute
|
|||
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}}
|
||||
|
|
|
@ -8,3 +8,4 @@ auto z = []() __declspec(layout_version(19)) { return nullptr; }; // expected-wa
|
|||
|
||||
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}}
|
||||
|
|
Loading…
Reference in New Issue