[PATCH] D71451: Support to emit extern variables debuginfo with "-fstandalone-debug"
Jaydeep Chauhan via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jan 20 06:54:45 PST 2020
Jac1494 updated this revision to Diff 239115.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D71451/new/
https://reviews.llvm.org/D71451
Files:
clang/include/clang/Basic/TargetInfo.h
clang/lib/CodeGen/CGDebugInfo.cpp
clang/test/CodeGen/debug-info-extern-variable-basic.c
clang/test/CodeGen/debug-info-extern-variable-unused.c
Index: clang/test/CodeGen/debug-info-extern-variable-unused.c
===================================================================
--- /dev/null
+++ clang/test/CodeGen/debug-info-extern-variable-unused.c
@@ -0,0 +1,10 @@
+// RUN: %clang -emit-llvm -S -g -fstandalone-debug %s -o - | FileCheck %s
+
+extern int i;
+int foo() {
+ extern int j;
+ return 0;
+}
+
+// CHECK-NOT: distinct !DIGlobalVariable(name: "i"
+// CHECK-NOT: distinct !DIGlobalVariable(name: "j"
Index: clang/test/CodeGen/debug-info-extern-variable-basic.c
===================================================================
--- /dev/null
+++ clang/test/CodeGen/debug-info-extern-variable-basic.c
@@ -0,0 +1,10 @@
+// RUN: %clang -emit-llvm -S -g -fstandalone-debug %s -o - | FileCheck %s
+
+extern int i;
+int foo() {
+ extern int j;
+ return i+j;
+}
+
+// CHECK: distinct !DIGlobalVariable(name: "i"
+// CHECK: distinct !DIGlobalVariable(name: "j"
Index: clang/lib/CodeGen/CGDebugInfo.cpp
===================================================================
--- clang/lib/CodeGen/CGDebugInfo.cpp
+++ clang/lib/CodeGen/CGDebugInfo.cpp
@@ -4619,6 +4619,8 @@
assert(CGM.getCodeGenOpts().hasReducedDebugInfo());
if (D->hasAttr<NoDebugAttr>())
return;
+ if (DebugKind < clang::codegenoptions::FullDebugInfo)
+ return;
auto Align = getDeclAlignIfRequired(D, CGM.getContext());
llvm::DIFile *Unit = getOrCreateFile(D->getLocation());
Index: clang/include/clang/Basic/TargetInfo.h
===================================================================
--- clang/include/clang/Basic/TargetInfo.h
+++ clang/include/clang/Basic/TargetInfo.h
@@ -1388,7 +1388,7 @@
virtual void setAuxTarget(const TargetInfo *Aux) {}
/// Whether target allows debuginfo types for decl only variables.
- virtual bool allowDebugInfoForExternalVar() const { return false; }
+ virtual bool allowDebugInfoForExternalVar() const { return true; }
protected:
/// Copy type and layout related info.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D71451.239115.patch
Type: text/x-patch
Size: 1967 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200120/737a44ac/attachment.bin>
More information about the llvm-commits
mailing list