commit 808fcfe5944755f08ae88722070302fcf9135e58
Author: Markus Lavin <markus.lavin@ericsson.com>
Date:   Fri Nov 27 08:49:20 2020 +0100

    Revert "[DebugInfo] Improve dbg preservation in LSR."
    
    This reverts commit 06758c6a6135f59deec8e73d4fcb69946ab47f54.
    
    Bug: https://bugs.llvm.org/show_bug.cgi?id=48166
    Additional discussion in: https://reviews.llvm.org/D91711

diff --git a/llvm/include/llvm/Analysis/ScalarEvolution.h b/llvm/include/llvm/Analysis/ScalarEvolution.h
index a7a24f086fb..35e569710ca 100644
--- a/llvm/include/llvm/Analysis/ScalarEvolution.h
+++ b/llvm/include/llvm/Analysis/ScalarEvolution.h
@@ -1163,15 +1163,6 @@ public:
       const SCEV *S, const Loop *L,
       SmallPtrSetImpl<const SCEVPredicate *> &Preds);
 
-  /// Compute \p LHS - \p RHS and returns the result as an APInt if it is a
-  /// constant, and None if it isn't.
-  ///
-  /// This is intended to be a cheaper version of getMinusSCEV.  We can be
-  /// frugal here since we just bail out of actually constructing and
-  /// canonicalizing an expression in the cases where the result isn't going
-  /// to be a constant.
-  Optional<APInt> computeConstantDifference(const SCEV *LHS, const SCEV *RHS);
-
 private:
   /// A CallbackVH to arrange for ScalarEvolution to be notified whenever a
   /// Value is deleted.
@@ -1893,6 +1884,15 @@ private:
   bool splitBinaryAdd(const SCEV *Expr, const SCEV *&L, const SCEV *&R,
                       SCEV::NoWrapFlags &Flags);
 
+  /// Compute \p LHS - \p RHS and returns the result as an APInt if it is a
+  /// constant, and None if it isn't.
+  ///
+  /// This is intended to be a cheaper version of getMinusSCEV.  We can be
+  /// frugal here since we just bail out of actually constructing and
+  /// canonicalizing an expression in the cases where the result isn't going
+  /// to be a constant.
+  Optional<APInt> computeConstantDifference(const SCEV *LHS, const SCEV *RHS);
+
   /// Drop memoized information computed for S.
   void forgetMemoizedResults(const SCEV *S);
 
diff --git a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
index 2713fa61ba3..a1d182931d0 100644
--- a/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
+++ b/llvm/lib/Transforms/Scalar/LoopStrengthReduce.cpp
@@ -59,7 +59,6 @@
 #include "llvm/ADT/Hashing.h"
 #include "llvm/ADT/PointerIntPair.h"
 #include "llvm/ADT/STLExtras.h"
-#include "llvm/ADT/SetOperations.h"
 #include "llvm/ADT/SetVector.h"
 #include "llvm/ADT/SmallBitVector.h"
 #include "llvm/ADT/SmallPtrSet.h"
@@ -81,7 +80,6 @@
 #include "llvm/IR/BasicBlock.h"
 #include "llvm/IR/Constant.h"
 #include "llvm/IR/Constants.h"
-#include "llvm/IR/DebugInfoMetadata.h"
 #include "llvm/IR/DerivedTypes.h"
 #include "llvm/IR/Dominators.h"
 #include "llvm/IR/GlobalValue.h"
@@ -5788,27 +5786,6 @@ static bool ReduceLoopStrength(Loop *L, IVUsers &IU, ScalarEvolution &SE,
   if (MSSA)
     MSSAU = std::make_unique<MemorySSAUpdater>(MSSA);
 
-  // Debug preservation - record all llvm.dbg.value from the loop as well as
-  // the SCEV of their variable location. Since salvageDebugInfo may change the
-  // DIExpression we need to store the original here as well (i.e. it needs to
-  // be in sync with the SCEV).
-  SmallVector<
-      std::tuple<DbgValueInst *, const Type *, const SCEV *, DIExpression *>,
-      32>
-      DbgValues;
-  for (auto &B : L->getBlocks()) {
-    for (auto &I : *B) {
-      if (DbgValueInst *D = dyn_cast<DbgValueInst>(&I)) {
-        auto V = D->getVariableLocation();
-        if (!V || !SE.isSCEVable(V->getType()))
-          continue;
-        auto DS = SE.getSCEV(V);
-        DbgValues.push_back(
-            std::make_tuple(D, V->getType(), DS, D->getExpression()));
-      }
-    }
-  }
-
   // Run the main LSR transformation.
   Changed |=
       LSRInstance(L, IU, SE, DT, LI, TTI, AC, TLI, MSSAU.get()).getChanged();
@@ -5830,40 +5807,6 @@ static bool ReduceLoopStrength(Loop *L, IVUsers &IU, ScalarEvolution &SE,
       DeleteDeadPHIs(L->getHeader(), &TLI, MSSAU.get());
     }
   }
-  // Debug preservation - go through all recorded llvm.dbg.value and for those
-  // that now have an undef variable location use the recorded SCEV to try and
-  // update it. Compare with SCEV of Phi-nodes of loop header to find a
-  // suitable update candidate. SCEV match with constant offset is allowed and
-  // will be compensated for in the DIExpression.
-  if (Changed) {
-    for (auto &D : DbgValues) {
-      auto DbgValue = std::get<DbgValueInst *>(D);
-      auto DbgValueType = std::get<const Type *>(D);
-      auto DbgValueSCEV = std::get<const SCEV *>(D);
-      auto DbgDIExpr = std::get<DIExpression *>(D);
-      if (!isa<UndefValue>(DbgValue->getVariableLocation()))
-        continue;
-      for (PHINode &Phi : L->getHeader()->phis()) {
-        if (DbgValueType != Phi.getType())
-          continue;
-        if (!SE.isSCEVable(Phi.getType()))
-          continue;
-        auto PhiSCEV = SE.getSCEV(&Phi);
-        if (Optional<APInt> Offset =
-                SE.computeConstantDifference(DbgValueSCEV, PhiSCEV)) {
-          auto &Ctx = DbgValue->getContext();
-          DbgValue->setOperand(
-              0, MetadataAsValue::get(Ctx, ValueAsMetadata::get(&Phi)));
-          if (Offset.getValue().getSExtValue()) {
-            SmallVector<uint64_t, 8> Ops;
-            DIExpression::appendOffset(Ops, Offset.getValue().getSExtValue());
-            DbgDIExpr = DIExpression::prependOpcodes(DbgDIExpr, Ops, true);
-          }
-          DbgValue->setOperand(2, MetadataAsValue::get(Ctx, DbgDIExpr));
-        }
-      }
-    }
-  }
   return Changed;
 }
 
diff --git a/llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll b/llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll
index e8f37a37066..08aecdac5b7 100644
--- a/llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll
+++ b/llvm/test/DebugInfo/COFF/fpo-shrink-wrap.ll
@@ -33,7 +33,7 @@
 ; ASM:         popl    %ebx
 ; ASM: [[EPILOGUE]]:                                 # %return
 ; ASM:         retl    $8
-; ASM: Ltmp11:
+; ASM: Ltmp10:
 ; ASM:         .cv_fpo_endproc
 
 ; Note how RvaStart advances 7 bytes to skip the shrink-wrapped portion.
diff --git a/llvm/test/Transforms/LoopStrengthReduce/dbg-preserve-0.ll b/llvm/test/Transforms/LoopStrengthReduce/dbg-preserve-0.ll
deleted file mode 100644
index 71031aabb95..00000000000
--- a/llvm/test/Transforms/LoopStrengthReduce/dbg-preserve-0.ll
+++ /dev/null
@@ -1,74 +0,0 @@
-; RUN: opt < %s -loop-reduce -S | FileCheck %s
-
-; Test that LSR preserves debug-info for induction variables.
-
-target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
-
-define dso_local void @foo(i8* nocapture %p) local_unnamed_addr !dbg !7 {
-; CHECK-LABEL: @foo(
-entry:
-  call void @llvm.dbg.value(metadata i8* %p, metadata !13, metadata !DIExpression()), !dbg !16
-  call void @llvm.dbg.value(metadata i8 0, metadata !14, metadata !DIExpression()), !dbg !17
-  br label %for.body, !dbg !18
-
-for.cond.cleanup:                                 ; preds = %for.body
-  ret void, !dbg !19
-
-for.body:                                         ; preds = %entry, %for.body
-; CHECK-LABEL: for.body:
-  %i.06 = phi i8 [ 0, %entry ], [ %inc, %for.body ]
-  %p.addr.05 = phi i8* [ %p, %entry ], [ %add.ptr, %for.body ]
-  call void @llvm.dbg.value(metadata i8 %i.06, metadata !14, metadata !DIExpression()), !dbg !17
-  call void @llvm.dbg.value(metadata i8* %p.addr.05, metadata !13, metadata !DIExpression()), !dbg !16
-; CHECK-NOT: call void @llvm.dbg.value(metadata i8* undef
-; CHECK: call void @llvm.dbg.value(metadata i8* %lsr.iv, metadata ![[MID_p:[0-9]+]], metadata !DIExpression(DW_OP_constu, 3, DW_OP_minus, DW_OP_stack_value)), !dbg !16
-  %add.ptr = getelementptr inbounds i8, i8* %p.addr.05, i64 3, !dbg !20
-  call void @llvm.dbg.value(metadata i8* %add.ptr, metadata !13, metadata !DIExpression()), !dbg !16
-; CHECK-NOT: call void @llvm.dbg.value(metadata i8* undef
-; CHECK: call void @llvm.dbg.value(metadata i8* %lsr.iv, metadata ![[MID_p]], metadata !DIExpression()), !dbg !16
-  store i8 %i.06, i8* %add.ptr, align 1, !dbg !23, !tbaa !24
-  %inc = add nuw nsw i8 %i.06, 1, !dbg !27
-  call void @llvm.dbg.value(metadata i8 %inc, metadata !14, metadata !DIExpression()), !dbg !17
-  %exitcond.not = icmp eq i8 %inc, 32, !dbg !28
-  br i1 %exitcond.not, label %for.cond.cleanup, label %for.body, !dbg !18, !llvm.loop !29
-}
-
-declare void @llvm.dbg.value(metadata, metadata, metadata)
-
-!llvm.dbg.cu = !{!0}
-!llvm.module.flags = !{!3, !4, !5}
-!llvm.ident = !{!6}
-
-!0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "clang version 12.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, splitDebugInlining: false, nameTableKind: None)
-!1 = !DIFile(filename: "lsrdbg.c", directory: "/")
-!2 = !{}
-!3 = !{i32 7, !"Dwarf Version", i32 4}
-!4 = !{i32 2, !"Debug Info Version", i32 3}
-!5 = !{i32 1, !"wchar_size", i32 4}
-!6 = !{!"clang version 12.0.0"}
-!7 = distinct !DISubprogram(name: "foo", scope: !1, file: !1, line: 2, type: !8, scopeLine: 2, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !12)
-!8 = !DISubroutineType(types: !9)
-!9 = !{null, !10}
-!10 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !11, size: 64)
-!11 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char)
-!12 = !{!13, !14}
-!13 = !DILocalVariable(name: "p", arg: 1, scope: !7, file: !1, line: 2, type: !10)
-; CHECK: ![[MID_p]] = !DILocalVariable(name: "p", arg: 1, scope: !7, file: !1, line: 2, type: !10)
-!14 = !DILocalVariable(name: "i", scope: !15, file: !1, line: 4, type: !11)
-!15 = distinct !DILexicalBlock(scope: !7, file: !1, line: 4, column: 3)
-!16 = !DILocation(line: 0, scope: !7)
-!17 = !DILocation(line: 0, scope: !15)
-!18 = !DILocation(line: 4, column: 3, scope: !15)
-!19 = !DILocation(line: 8, column: 1, scope: !7)
-!20 = !DILocation(line: 5, column: 7, scope: !21)
-!21 = distinct !DILexicalBlock(scope: !22, file: !1, line: 4, column: 42)
-!22 = distinct !DILexicalBlock(scope: !15, file: !1, line: 4, column: 3)
-!23 = !DILocation(line: 6, column: 8, scope: !21)
-!24 = !{!25, !25, i64 0}
-!25 = !{!"omnipotent char", !26, i64 0}
-!26 = !{!"Simple C/C++ TBAA"}
-!27 = !DILocation(line: 4, column: 38, scope: !22)
-!28 = !DILocation(line: 4, column: 31, scope: !22)
-!29 = distinct !{!29, !18, !30, !31}
-!30 = !DILocation(line: 7, column: 3, scope: !15)
-!31 = !{!"llvm.loop.unroll.disable"}
