[llvm] r268837 - Revert r268832 "Refactor stripDebugInfo(Function) to handle intrinsic"

Vitaly Buka via llvm-commits llvm-commits at lists.llvm.org
Fri May 6 19:11:00 PDT 2016


Author: vitalybuka
Date: Fri May  6 21:10:59 2016
New Revision: 268837

URL: http://llvm.org/viewvc/llvm-project?rev=268837&view=rev
Log:
Revert r268832 "Refactor stripDebugInfo(Function) to handle intrinsic"

It breaks many bots

Removed:
    llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.bc
    llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.ll
    llvm/trunk/test/ThinLTO/X86/drop-debug-info.ll
Modified:
    llvm/trunk/lib/IR/DebugInfo.cpp

Modified: llvm/trunk/lib/IR/DebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=268837&r1=268836&r2=268837&view=diff
==============================================================================
--- llvm/trunk/lib/IR/DebugInfo.cpp (original)
+++ llvm/trunk/lib/IR/DebugInfo.cpp Fri May  6 21:10:59 2016
@@ -247,20 +247,8 @@ bool llvm::stripDebugInfo(Function &F) {
     Changed = true;
     F.setSubprogram(nullptr);
   }
-
-  Function *Declare = F.getParent()->getFunction("llvm.dbg.declare");
-  Function *DbgVal = F.getParent()->getFunction("llvm.dbg.value");
   for (BasicBlock &BB : F) {
-    for (auto II = BB.begin(), End = BB.end(); II != End;) {
-      Instruction &I = *II++; // We may delete the instruction, increment now.
-      // Remove all of the calls to the debugger intrinsics, and remove them
-      // from the module.
-      CallInst *CI = dyn_cast<CallInst>(&I);
-      if (CI && (CI->getCalledFunction() == Declare ||
-                 CI->getCalledFunction() == DbgVal)) {
-        CI->eraseFromParent();
-        Changed = true;
-      }
+    for (Instruction &I : BB) {
       if (I.getDebugLoc()) {
         Changed = true;
         I.setDebugLoc(DebugLoc());
@@ -273,6 +261,26 @@ bool llvm::stripDebugInfo(Function &F) {
 bool llvm::StripDebugInfo(Module &M) {
   bool Changed = false;
 
+  // Remove all of the calls to the debugger intrinsics, and remove them from
+  // the module.
+  if (Function *Declare = M.getFunction("llvm.dbg.declare")) {
+    while (!Declare->use_empty()) {
+      CallInst *CI = cast<CallInst>(Declare->user_back());
+      CI->eraseFromParent();
+    }
+    Declare->eraseFromParent();
+    Changed = true;
+  }
+
+  if (Function *DbgVal = M.getFunction("llvm.dbg.value")) {
+    while (!DbgVal->use_empty()) {
+      CallInst *CI = cast<CallInst>(DbgVal->user_back());
+      CI->eraseFromParent();
+    }
+    DbgVal->eraseFromParent();
+    Changed = true;
+  }
+
   for (Module::named_metadata_iterator NMI = M.named_metadata_begin(),
          NME = M.named_metadata_end(); NMI != NME;) {
     NamedMDNode *NMD = &*NMI;

Removed: llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.bc
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.bc?rev=268836&view=auto
==============================================================================
Binary files llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.bc (original) and llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.bc (removed) differ

Removed: llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.ll?rev=268836&view=auto
==============================================================================
--- llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.ll (original)
+++ llvm/trunk/test/ThinLTO/X86/Inputs/drop-debug-info.ll (removed)
@@ -1,47 +0,0 @@
-; This file is checked-in as a .bc file, because the debug info version is
-; intentionally out-of-date and llvm-as will drop it before writing the bitcode
-
-target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-apple-macosx10.11.0"
-
-
- at argc = global i8 0, align 1
-
-define void @globalfunc() {
-entry:
-  %0 = load i8, i8* @argc, align 1
-  tail call void @llvm.dbg.value(metadata i8 %0, i64 0, metadata !19, metadata !29), !dbg !DILocation(scope: !13)
-  ret void
-}
-
-
-declare void @llvm.dbg.value(metadata, i64, metadata, metadata)
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!22, !23}
-
-!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, file: !1, enums: !2, retainedTypes: !3, globals: !20, imports: !2, emissionKind: FullDebug)
-!1 = !DIFile(filename: "test.cpp", directory: "")
-!2 = !{}
-!3 = !{!4}
-!4 = !DICompositeType(tag: DW_TAG_class_type, name: "C", line: 2, size: 8, align: 8, file: !1, elements: !5, identifier: "_ZTS1C")
-!5 = !{!6}
-!6 = !DISubprogram(name: "test", file: !1, scope: !4, type: !7, isDefinition: false)
-!7 = !DISubroutineType(types: !8)
-!8 = !{!9, !10, !11, !11, !11, null}
-!9 = !DIBasicType(encoding: DW_ATE_signed, size: 32, align: 32, name: "int")
-!10 = !DIDerivedType(baseType: !4, tag: DW_TAG_pointer_type, size: 64, align: 64, flags: DIFlagArtificial)
-!11 = !DIBasicType(tag: DW_TAG_base_type, name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
-!13 = distinct !DISubprogram(name: "test_with_debug", linkageName: "test_with_debug", line: 6, isLocal: false, isDefinition: true, flags: DIFlagPrototyped, isOptimized: true, unit: !0, scopeLine: 6, file: !1, scope: !14, type: !15, variables: !17)
-!14 = !DIFile(filename: "test.cpp", directory: "")
-!15 = !DISubroutineType(types: !16)
-!16 = !{null}
-!17 = !{!18, !19}
-!18 = !DILocalVariable(name: "c", line: 7, scope: !13, file: !14, type: !4)
-!19 = !DILocalVariable(name: "lc", line: 8, scope: !13, file: !14, type: !11)
-!20 = !{!21}
-!21 = !DIGlobalVariable(name: "argc", line: 1, isLocal: false, isDefinition: true, scope: null, file: !14, type: !11, variable: i8* @argc)
-!22 = !{i32 2, !"Dwarf Version", i32 4}
-!23 = !{i32 2, !"Debug Info Version", i32 0}
-!25 = !DILocation(line: 8, column: 3, scope: !13)
-!29 = !DIExpression()

Removed: llvm/trunk/test/ThinLTO/X86/drop-debug-info.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/ThinLTO/X86/drop-debug-info.ll?rev=268836&view=auto
==============================================================================
--- llvm/trunk/test/ThinLTO/X86/drop-debug-info.ll (original)
+++ llvm/trunk/test/ThinLTO/X86/drop-debug-info.ll (removed)
@@ -1,20 +0,0 @@
-; RUN: opt -module-summary %s -o %t.bc
-; RUN: llvm-lto -thinlto-action=thinlink -o %t.index.bc %t.bc %p/Inputs/drop-debug-info.bc
-
-; The imported module has out-of-date debug information, let's make sure we can
-; drop them without crashing when materializing later.
-; RUN: llvm-lto -thinlto-action=import %t.bc -thinlto-index=%t.index.bc -o - | llvm-dis -o - | FileCheck %s
-; CHECK: define available_externally void @globalfunc
-; CHECK-NOT: llvm.dbg.value
-
-target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
-target triple = "x86_64-apple-macosx10.11.0"
-
-
-define i32 @main() #0 {
-entry:
-  call void (...) @globalfunc()
-  ret i32 0
-}
-
-declare void @globalfunc(...)
\ No newline at end of file




More information about the llvm-commits mailing list