[PATCH] D21011: [codeview] Add complex record type translation

Reid Kleckner via llvm-commits llvm-commits at lists.llvm.org
Thu Jun 16 11:07:11 PDT 2016

rnk added inline comments.

Comment at: lib/CodeGen/AsmPrinter/CodeViewDebug.cpp:1202
@@ +1201,3 @@
+    if (auto *SP = dyn_cast<DISubprogram>(Element)) {
+      Info.Methods[SP->getRawName()].push_back({ SP, true });
+    } else if (auto *DDTy = dyn_cast<DIDerivedType>(Element)) {
aaboud wrote:
> rnk wrote:
> > Should we claim that all methods are introduced virtual methods, or just the virtual ones?
> Introduce is only for virtual methods, however the "Methods" container holds all methods of the class (virtual and non-virtual).
> I am using the same container to be able to output the methods in the right order, though I am not sure if the order is important!
> See "translateMethodKindFlags" at line 1091, where it consider the "Introduced" variable only for virtual functions.
I guess I'm questioning the usefulness of MethodInfo. The 'Introduced' boolean is always set to true in this code.

How do you propose to calculate whether a method was introduced? Remember, we can't actually walk the class hierarchy because the frontend may not emit complete debug information about base classes, unless -fstandalone-debug-info is on. I think this is something that we will need the frontend to tell us directly, see https://llvm.org/bugs/show_bug.cgi?id=28150.

Anyway, this doesn't need to hold up the patch. With tests I think this is ready and we can iterate on it from there.


More information about the llvm-commits mailing list