[PATCH] D23462: Emit debug info for dynamic classes if they are imported from a DLL
Adrian McCarthy via cfe-commits
cfe-commits at lists.llvm.org
Tue Aug 16 11:04:44 PDT 2016
amccarth updated this revision to Diff 68225.
amccarth added a comment.
Add comment as requested.
https://reviews.llvm.org/D23462
Files:
lib/CodeGen/CGDebugInfo.cpp
test/CodeGenCXX/debug-info-dllimport-base-class.cpp
Index: test/CodeGenCXX/debug-info-dllimport-base-class.cpp
===================================================================
--- /dev/null
+++ test/CodeGenCXX/debug-info-dllimport-base-class.cpp
@@ -0,0 +1,20 @@
+// RUN: %clang_cc1 -triple i386-pc-windows -emit-llvm -gcodeview -debug-info-kind=limited -fms-compatibility %s -x c++ -o - | FileCheck %s
+
+// Ensure we emit debug info for the full definition of base classes that will
+// be imported from a DLL. Otherwise, the debugger wouldn't be able to show the
+// members.
+
+// CHECK: !DICompositeType(tag: DW_TAG_structure_type, name: "ImportedBase",
+// CHECK-NOT: DIFlagFwdDecl
+// CHECK-SAME: ){{$}}
+
+struct __declspec(dllimport) ImportedBase {
+ ImportedBase();
+ virtual void Foo();
+};
+
+struct DerivedFromImported : public ImportedBase {};
+
+int main() {
+ DerivedFromImported d;
+}
Index: lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- lib/CodeGen/CGDebugInfo.cpp
+++ lib/CodeGen/CGDebugInfo.cpp
@@ -1685,7 +1685,12 @@
if (!CXXDecl)
return false;
- if (CXXDecl->hasDefinition() && CXXDecl->isDynamicClass())
+ // Only emit complete debug info for a dynamic class when its vtable is
+ // emitted. However, Microsoft debuggers don't resolve type information
+ // across DLL boundaries, so skip this optimization if the class is marked
+ // dllimport.
+ if (CXXDecl->hasDefinition() && CXXDecl->isDynamicClass() &&
+ !CXXDecl->hasAttr<DLLImportAttr>())
return true;
TemplateSpecializationKind Spec = TSK_Undeclared;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23462.68225.patch
Type: text/x-patch
Size: 1598 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160816/0c935157/attachment.bin>
More information about the cfe-commits
mailing list