================
Comment at: include/clang/AST/Mangle.h:114
@@ +113,3 @@
+  virtual void mangleCXXVBTable(const CXXRecordDecl *Derived,
+                                llvm::ArrayRef<const CXXRecordDecl *> BasePath,
+                                raw_ostream &Out) = 0;
----------------
Timur Iskhodzhanov wrote:
> I'd prefer if you used `typedef <smth> CXXBaseSubpath` or `VBTablePath` 
> (moved to AST/CXXInheritance.h?) instead.
> Even though you only have 4 uses now, I'll have a few more uses when I finish 
> my VFTable patch.
The only AST header I'm touching is Mangle.h, so I want to put it there.  I'd 
also prefer to call it something generic like "ClassArrayRef".

================
Comment at: lib/AST/MicrosoftMangle.cpp:1741
@@ -1737,3 +1740,3 @@
                                              raw_ostream &Out) {
   // <mangled-name> ::= ? <operator-name> <class-name> <storage-class>
   //                      <cvr-qualifiers> [<name>] @
----------------
Timur Iskhodzhanov wrote:
> Copy this comment and replace `<operator-name>` with `_7`/`_8` in these two 
> functions?
> Ditto for `<storage-class>`.
Done

================
Comment at: lib/AST/MicrosoftMangle.cpp:1769
@@ +1768,3 @@
+  // Only a subset of the bases along the path to the vbtable are included in
+  // the name.  It's up to the caller to pick them correctly.
+  for (llvm::ArrayRef<const CXXRecordDecl *>::iterator I = BasePath.begin(),
----------------
Timur Iskhodzhanov wrote:
> Move this comment to `Mangler.h` ?
Done

================
Comment at: lib/CodeGen/CGVTables.h:48
@@ +47,3 @@
+  /// The GlobalVariable for this vbtable.
+  llvm::GlobalVariable *GV;
+};
----------------
Timur Iskhodzhanov wrote:
> FYI, you won't be able to use GlobalVariable if we decide to move this code 
> to AST.
> How about storing a mangled name instead?
I'm OK with that for now.  Currently this class is passed around by value, so 
I'm not keen to expand it with SmallString.

================
Comment at: lib/CodeGen/CGVTables.cpp:747
@@ +746,3 @@
+public:
+  VBTableBuilder(CodeGenModule &CGM, const CXXRecordDecl *MostDerived)
+    : CGM(CGM), MostDerived(MostDerived),
----------------
Timur Iskhodzhanov wrote:
> I think you can safely use Class or ForClass rather than MostDerived, since 
> we don't have an intermediate "layout" class here as we need for 
> VTableBuilder for Itanium ABI (due to construction tables and stuff).
I'd rather be specific during the recursion.

================
Comment at: lib/CodeGen/CGVTables.cpp:805
@@ +804,3 @@
+                                          VBTablePathVector &Paths) {
+  size_t PathsStart = Paths.size();
+  bool ReuseChildVBPtr = true;
----------------
Timur Iskhodzhanov wrote:
> Should probably add a comment describing why you haven't used `CXXBasePaths`.
Done.

================
Comment at: lib/CodeGen/CGVTables.cpp:822
@@ +821,3 @@
+    CharUnits NextOffset;
+    const CXXRecordDecl *ChildForBase = Base;
+    if (I->isVirtual()) {
----------------
Timur Iskhodzhanov wrote:
> It's not immediately clear what ChildForBase is, so you might want to add a 
> comment.
s/Child/Next/ s/For/Reusing/

Does that help clarify things?  I can't think of a good word for "the class 
whose virtual bases will fill the vbtable".  I'm trying to go with "the 
(potentially derived) class that is reusing this vbtable"

================
Comment at: lib/CodeGen/CGVTables.cpp:960
@@ +959,3 @@
+    CharUnits Offset = DerivedLayout.getVBaseClassOffset(VBase);
+    assert(Offset.getQuantity() >= 0);
+    // Make it relative to the subobject vbptr.
----------------
Timur Iskhodzhanov wrote:
> How about
> 
>   assert(!Offset.isNegative());
> 
> ?
Done.


http://llvm-reviews.chandlerc.com/D636
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to