diff options
author | Reid Kleckner <reid@kleckner.net> | 2013-03-26 18:30:28 +0000 |
---|---|---|
committer | Reid Kleckner <reid@kleckner.net> | 2013-03-26 18:30:28 +0000 |
commit | 852e3d7143cda1cdf6771c17559d38822cc296b3 (patch) | |
tree | 4d0c5c0a14493cf502a244aebefd33defd0076a5 /include/clang/Basic/Attr.td | |
parent | 94d46b55103bf7ba0dc5425baf1eb7e4adcaa7ea (diff) |
[ms-cxxabi] Give the MS inheritance attributes a base class
Required making a handful of changes to the table generator. Also adds
an unspecified inheritance attribute. This opens the path for us to
apply these attributes to C++ records implicitly.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@178054 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Basic/Attr.td')
-rw-r--r-- | include/clang/Basic/Attr.td | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/include/clang/Basic/Attr.td b/include/clang/Basic/Attr.td index 47905bf8b1..37aa332b81 100644 --- a/include/clang/Basic/Attr.td +++ b/include/clang/Basic/Attr.td @@ -956,18 +956,26 @@ def Ptr64 : InheritableAttr { let Spellings = [Keyword<"__ptr64">]; } -def SingleInheritance : InheritableAttr { +class MSInheritanceAttr : InheritableAttr; + +def SingleInheritance : MSInheritanceAttr { let Spellings = [Keyword<"__single_inheritance">]; } -def MultipleInheritance : InheritableAttr { +def MultipleInheritance : MSInheritanceAttr { let Spellings = [Keyword<"__multiple_inheritance">]; } -def VirtualInheritance : InheritableAttr { +def VirtualInheritance : MSInheritanceAttr { let Spellings = [Keyword<"__virtual_inheritance">]; } +// This attribute doesn't have any spellings, but we can apply it implicitly to +// incomplete types that lack any of the other attributes. +def UnspecifiedInheritance : MSInheritanceAttr { + let Spellings = []; +} + def Unaligned : IgnoredAttr { let Spellings = [Keyword<"__unaligned">]; } |