aboutsummaryrefslogtreecommitdiff
path: root/include/clang/Basic/Attr.td
diff options
context:
space:
mode:
authorReid Kleckner <reid@kleckner.net>2013-03-26 18:30:28 +0000
committerReid Kleckner <reid@kleckner.net>2013-03-26 18:30:28 +0000
commit852e3d7143cda1cdf6771c17559d38822cc296b3 (patch)
tree4d0c5c0a14493cf502a244aebefd33defd0076a5 /include/clang/Basic/Attr.td
parent94d46b55103bf7ba0dc5425baf1eb7e4adcaa7ea (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.td14
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">];
}