]> granicus.if.org Git - clang/commitdiff
Add a BaseSubobject class to uniquely identify a base class subobject. Not yet used.
authorAnders Carlsson <andersca@mac.com>
Wed, 13 Jan 2010 20:11:15 +0000 (20:11 +0000)
committerAnders Carlsson <andersca@mac.com>
Wed, 13 Jan 2010 20:11:15 +0000 (20:11 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@93345 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGVtable.h

index d1ffe7daa90cc757646468a26cbadf99db1c8738..b47981412304c5453654d4e16067c5759fc2bbd0 100644 (file)
@@ -61,6 +61,31 @@ public:
   ThunkAdjustment ReturnAdjustment;
 };
 
+// BaseSubobject - Uniquely identifies a direct or indirect base class. 
+// Stores both the base class decl and the offset from the most derived class to
+// the base class.
+class BaseSubobject {
+  /// Base - The base class declaration.
+  const CXXRecordDecl *Base;
+  
+  /// BaseOffset - The offset from the most derived class to the base class.
+  uint64_t BaseOffset;
+  
+public:
+  BaseSubobject(const CXXRecordDecl *Base, uint64_t BaseOffset)
+    : Base(Base), BaseOffset(BaseOffset) { }
+  
+  /// getBase - Returns the base class declaration.
+  const CXXRecordDecl *getBase() const { return Base; }
+
+  /// getBaseOffset - Returns the base class offset.
+  uint64_t getBaseOffset() const { return BaseOffset; }
+  
+  friend bool operator==(const BaseSubobject &LHS, const BaseSubobject &RHS) {
+    return LHS.Base == RHS.Base && LHS.BaseOffset == RHS.BaseOffset;
+ }
+};
+  
 class CGVtableInfo {
 public:
   typedef std::vector<std::pair<GlobalDecl, ThunkAdjustment> >