]> granicus.if.org Git - clang/commitdiff
Revert "[DebugInfo] Generate debug information for labels. (Fix PR37395)"
authorHsiangkai Wang <hsiangkai@gmail.com>
Mon, 6 Aug 2018 07:07:18 +0000 (07:07 +0000)
committerHsiangkai Wang <hsiangkai@gmail.com>
Mon, 6 Aug 2018 07:07:18 +0000 (07:07 +0000)
Build failed in
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-autoconf/builds/27258

In lib/CodeGen/LiveDebugVariables.cpp:589, it uses std::prev(MBBI) to
get DebugValue's SlotIndex. however, the previous instruction may be
also a debug instruction.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@338992 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp
lib/CodeGen/CGDebugInfo.h
lib/CodeGen/CGStmt.cpp
test/CodeGen/debug-label-inline.c [deleted file]
test/CodeGen/debug-label.c [deleted file]

index 93dd0b01c0cc901023e396c932a82648dce7b17e..5be6fb3e4245b1c2439a949d09cc70c86bee94f0 100644 (file)
@@ -3734,32 +3734,6 @@ CGDebugInfo::EmitDeclareOfAutoVariable(const VarDecl *VD, llvm::Value *Storage,
   return EmitDeclare(VD, Storage, llvm::None, Builder);
 }
 
-void CGDebugInfo::EmitLabel(const LabelDecl *D, CGBuilderTy &Builder) {
-  assert(DebugKind >= codegenoptions::LimitedDebugInfo);
-  assert(!LexicalBlockStack.empty() && "Region stack mismatch, stack empty!");
-
-  if (D->hasAttr<NoDebugAttr>())
-    return;
-
-  auto *Scope = cast<llvm::DIScope>(LexicalBlockStack.back());
-  llvm::DIFile *Unit = getOrCreateFile(D->getLocation());
-
-  // Get location information.
-  unsigned Line = getLineNumber(D->getLocation());
-  unsigned Column = getColumnNumber(D->getLocation());
-
-  StringRef Name = D->getName();
-
-  // Create the descriptor for the label.
-  auto *L =
-      DBuilder.createLabel(Scope, Name, Unit, Line, CGM.getLangOpts().Optimize);
-
-  // Insert an llvm.dbg.label into the current block.
-  DBuilder.insertLabel(L,
-                       llvm::DebugLoc::get(Line, Column, Scope, CurInlinedAt),
-                       Builder.GetInsertBlock());
-}
-
 llvm::DIType *CGDebugInfo::CreateSelfType(const QualType &QualTy,
                                           llvm::DIType *Ty) {
   llvm::DIType *CachedTy = getTypeOrNull(QualTy);
index 0047a07d9d9c3bae0f1ce527d7d96de2853beb3e..e632806138f06bcab06a4dee2a7536571fbf9cbf 100644 (file)
@@ -399,9 +399,6 @@ public:
                                                    llvm::Value *AI,
                                                    CGBuilderTy &Builder);
 
-  /// Emit call to \c llvm.dbg.label for an label.
-  void EmitLabel(const LabelDecl *D, CGBuilderTy &Builder);
-
   /// Emit call to \c llvm.dbg.declare for an imported variable
   /// declaration in a block.
   void EmitDeclareOfBlockDeclRefVariable(
index e6600691eb3d6831ec6c76e4635b62cb6a27bdad..79662ec0099f517e88a4e6de7c7cf01c58c3bdc9 100644 (file)
@@ -531,16 +531,6 @@ void CodeGenFunction::EmitLabel(const LabelDecl *D) {
   }
 
   EmitBlock(Dest.getBlock());
-
-  // Emit debug info for labels.
-  if (CGDebugInfo *DI = getDebugInfo()) {
-    if (CGM.getCodeGenOpts().getDebugInfo() >=
-        codegenoptions::LimitedDebugInfo) {
-      DI->setLocation(D->getLocation());
-      DI->EmitLabel(D, Builder);
-    }
-  }
-
   incrementProfileCounter(D->getStmt());
 }
 
diff --git a/test/CodeGen/debug-label-inline.c b/test/CodeGen/debug-label-inline.c
deleted file mode 100644 (file)
index c0b089a..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-// This test will test the correctness of generating DILabel and
-// llvm.dbg.label when the label is in inlined functions.
-//
-// RUN: %clang_cc1 -O2 %s -o - -emit-llvm -debug-info-kind=limited | FileCheck %s
-inline int f1(int a, int b) {
-  int sum;
-
-top:
-  sum = a + b;
-  return sum;
-}
-
-extern int ga, gb;
-
-int f2(void) {
-  int result;
-
-  result = f1(ga, gb);
-  // CHECK: call void @llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:!.*]]
-
-  return result;
-}
-
-// CHECK: distinct !DISubprogram(name: "f1", {{.*}}, retainedNodes: [[ELEMENTS:!.*]])
-// CHECK: [[ELEMENTS]] = !{{{.*}}, [[LABEL_METADATA]]}
-// CHECK: [[LABEL_METADATA]] = !DILabel({{.*}}, name: "top", {{.*}}, line: 8)
-// CHECK: [[INLINEDAT:!.*]] = distinct !DILocation(line: 18,
-// CHECK: [[LABEL_LOCATION]] = !DILocation(line: 8, {{.*}}, inlinedAt: [[INLINEDAT]])
diff --git a/test/CodeGen/debug-label.c b/test/CodeGen/debug-label.c
deleted file mode 100644 (file)
index 20efa49..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-// This test will test the correstness of generating DILabel and
-// llvm.dbg.label for labels.
-//
-// RUN: %clang_cc1 -emit-llvm %s -o - -emit-llvm -debug-info-kind=limited | FileCheck %s
-
-int f1(int a, int b) {
-  int sum;
-
-top:
-  // CHECK: call void @llvm.dbg.label(metadata [[LABEL_METADATA:!.*]]), !dbg [[LABEL_LOCATION:!.*]]
-  sum = a + b;
-  return sum;
-}
-
-// CHECK: [[LABEL_METADATA]] = !DILabel({{.*}}, name: "top", {{.*}}, line: 9)
-// CHECK: [[LABEL_LOCATION]] = !DILocation(line: 9,