[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
Mon Aug 15 16:56:49 PDT 2016
amccarth updated this revision to Diff 68114.
amccarth added a comment.
Added a test.
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,8 @@
if (!CXXDecl)
return false;
- if (CXXDecl->hasDefinition() && CXXDecl->isDynamicClass())
+ if (CXXDecl->hasDefinition() && CXXDecl->isDynamicClass() &&
+ !CXXDecl->hasAttr<DLLImportAttr>())
return true;
TemplateSpecializationKind Spec = TSK_Undeclared;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D23462.68114.patch
Type: text/x-patch
Size: 1351 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160815/ebf5c4b9/attachment.bin>
More information about the cfe-commits
mailing list