[llvm] bb059e8 - [Assignment Tracking][SROA] Delete dbg.assigns linked to rewritten stores

via llvm-commits llvm-commits at lists.llvm.org
Fri Feb 10 01:57:23 PST 2023


Author: OCHyams
Date: 2023-02-10T09:57:05Z
New Revision: bb059e85d61b48cff4334b33f63eb5680c3c8d50

URL: https://github.com/llvm/llvm-project/commit/bb059e85d61b48cff4334b33f63eb5680c3c8d50
DIFF: https://github.com/llvm/llvm-project/commit/bb059e85d61b48cff4334b33f63eb5680c3c8d50.diff

LOG: [Assignment Tracking][SROA] Delete dbg.assigns linked to rewritten stores

AggLoadStoreRewriter splits aggregate loads and stores into scalars (before the
alloca is split up). The new stores and debug intrinsics are already wired up
correctly - we just need to also delete the dbg.assign that is linked to the
split to-be-deleted store too.

Reviewed By: jmorse

Differential Revision: https://reviews.llvm.org/D142882

Added: 
    

Modified: 
    llvm/lib/Transforms/Scalar/SROA.cpp
    llvm/test/DebugInfo/Generic/assignment-tracking/sroa/complex.ll

Removed: 
    


################################################################################
diff  --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp
index da277ff62b73c..379cc3e83eea9 100644
--- a/llvm/lib/Transforms/Scalar/SROA.cpp
+++ b/llvm/lib/Transforms/Scalar/SROA.cpp
@@ -3579,6 +3579,9 @@ class AggLoadStoreRewriter : public InstVisitor<AggLoadStoreRewriter, bool> {
                              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
index d7cdbc353d8a6..d2bd10996c3ae 100644
--- 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:


        


More information about the llvm-commits mailing list