[PATCH] D23462: Emit debug info for abstract classes if they are imported from a DLL
Adrian McCarthy via cfe-commits
cfe-commits at lists.llvm.org
Fri Aug 12 13:28:17 PDT 2016
amccarth created this revision.
amccarth added a reviewer: rnk.
amccarth added a subscriber: cfe-commits.
With -debug-info-kind=limited, we omit debug info for abstract classes that live in other TUs. This reduces duplicate type information. When statically linked, the type information comes together. But if your binary has a class derived from a base in a DLL, the base class info is not available to the debugger.
The decision is made in shouldOmitDefinition (CGDebugInfo.cpp). Per a suggestion from rnk, I've tweaked the decision so that we do include definitions for classes marked as DLL imports. This should be a relatively small number of classes, so we don't pay a large price for duplication of the type info, yet it should cover most cases on Windows.
Tested manually on Windows. I'm working on a lit test, and I'll update this patch with it when it's finished.
@@ -1685,7 +1685,8 @@
- if (CXXDecl->hasDefinition() && CXXDecl->isDynamicClass())
+ if (CXXDecl->hasDefinition() && CXXDecl->isDynamicClass() &&
TemplateSpecializationKind Spec = TSK_Undeclared;
-------------- next part --------------
A non-text attachment was scrubbed...
Size: 469 bytes
Desc: not available
More information about the cfe-commits