[PATCH] MS ABI: Improve selection of an inheritance model
    Richard Smith 
    richard at metafoo.co.uk
       
    Wed Jan 15 14:10:12 PST 2014
    
    
  
================
Comment at: include/clang/Basic/Attr.td:1355-1356
@@ -1354,3 +1354,4 @@
                    Accessor<"IsUnspecified", [Keyword<"">]>];
   // This index is based off the Spellings list and corresponds to the empty
   // keyword "spelling."
+  let AdditionalMembers = [{
----------------
This comment is out of date.
================
Comment at: lib/Sema/SemaType.cpp:5068
@@ -5096,1 +5067,3 @@
 
+    // We lock-in the inheritance model once somebody has asked us to ensure
+    // that a pointer-to-member type is complete.
----------------
"lock in"; "lock-in" is a noun =)
================
Comment at: lib/Sema/SemaType.cpp:5077
@@ +5076,3 @@
+              ->getAsCXXRecordDecl()
+              ->getMostRecentDecl()
+              ->setMSInheritanceModel();
----------------
Reid Kleckner wrote:
> I'm curious, why is it necessary to get the most recent decl?
Consider:
  struct A;
  typedef int A::*p;
  struct __single_inheritance A;
  p my_ptr;
We want to look at the inheritance model of the latest declaration when requiring the type `p` to be complete.
We should probably have a testcase covering this.
================
Comment at: test/SemaCXX/microsoft-abi-ptm.cpp:11
@@ +10,2 @@
+static_assert(sizeof(int B::*) == sizeof(int) * 3, "pointer-to-member should be sizeof(int)*4");
+struct B { };
----------------
Maybe test that `sizeof(int B::*)` is still 12 after this line?
http://llvm-reviews.chandlerc.com/D2548
    
    
More information about the cfe-commits
mailing list