[PATCH] D25578: [codeview] support emitting indirect virtual base class information

Bob Haarman via llvm-commits llvm-commits at lists.llvm.org
Fri Oct 14 11:31:18 PDT 2016


inglorion added inline comments.


================
Comment at: include/llvm/DebugInfo/CodeView/TypeRecord.h:1197
   explicit VirtualBaseClassRecord(TypeRecordKind Kind) : TypeRecord(Kind) {}
   VirtualBaseClassRecord(MemberAccess Access, TypeIndex BaseType,
                          TypeIndex VBPtrType, uint64_t Offset, uint64_t Index)
----------------
zturner wrote:
> rnk wrote:
> > Can you remove this ctor? We appear to use the wrong kind in VirtualBaseClassRecord::deserialize.
> Remove which constructor?  `deserialize` still needs to call this constructor right?
I think @rnk wants me to remove the constructor that does not take a Kind parameter, forcing callers to always specify if they want a VirtualBaseClass or an IndirectVirtualBaseClass. Makes sense, and I have updated the code to do that, which I'll send in the next version of this diff.


================
Comment at: test/DebugInfo/COFF/inheritance.ll:33
+; CHECK-NEXT:       AccessSpecifier: Public (0x3)
+; CHECK-NEXT:       BaseType: A ({{.*}})
+; CHECK-NEXT:       VBPtrType: const int* ({{.*}})
----------------
zturner wrote:
> What does the `{{.*}}` syntax mean here?
The {{ and }} are used for regular expression matching. So this matches any sequence of characters enclosed by parentheses. It's the same matching we use in other clauses in the same file, where there needs to be something there, but we don't care about the exact value.


https://reviews.llvm.org/D25578





More information about the llvm-commits mailing list