diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp --- a/llvm/lib/Transforms/Scalar/SROA.cpp +++ b/llvm/lib/Transforms/Scalar/SROA.cpp @@ -3579,6 +3579,9 @@ getAdjustedAlignment(&SI, 0), DL, IRB); Splitter.emitSplitOps(V->getType(), V, V->getName() + ".fca"); Visited.erase(&SI); + // The stores replacing SI each have markers describing fragments of the + // assignment so delete the assignment markers linked to SI. + at::deleteAssignmentMarkers(&SI); SI.eraseFromParent(); return true; } diff --git a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll --- a/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll +++ b/llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll @@ -1,4 +1,5 @@ -; RUN: opt -passes=sroa -S -o - %s | FileCheck %s +; RUN: opt -passes=sroa -S -o - %s \ +; RUN: | FileCheck %s --implicit-check-not="call void @llvm.dbg" ; ;; Based on llvm/test/DebugInfo/ARM/sroa-complex.ll ;; generated from: