[llvm] c44e015 - [SimplifyCFG] Refine metadata handling during instruction hoisting (#158448)
via llvm-commits
llvm-commits at lists.llvm.org
Sun Sep 14 20:50:46 PDT 2025
Author: William Moses
Date: 2025-09-14T22:50:42-05:00
New Revision: c44e015b49e832c9f3749c33cf5c9d5aacaf60a4
URL: https://github.com/llvm/llvm-project/commit/c44e015b49e832c9f3749c33cf5c9d5aacaf60a4
DIFF: https://github.com/llvm/llvm-project/commit/c44e015b49e832c9f3749c33cf5c9d5aacaf60a4.diff
LOG: [SimplifyCFG] Refine metadata handling during instruction hoisting (#158448)
Co-authored-by: Nikita Popov <npopov at redhat.com>
Added:
llvm/test/Transforms/SimplifyCFG/no-drop-debug-loc-when-speculating-call.ll
Modified:
llvm/lib/Transforms/Utils/SimplifyCFG.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
index 5a842f9b49c1b..a1f759dd1df83 100644
--- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
+++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp
@@ -3392,7 +3392,7 @@ bool SimplifyCFGOpt::speculativelyExecuteBB(BranchInst *BI,
// hoisting above.
for (auto &I : make_early_inc_range(*ThenBB)) {
if (!SpeculatedStoreValue || &I != SpeculatedStore) {
- I.setDebugLoc(DebugLoc::getDropped());
+ I.dropLocation();
}
I.dropUBImplyingAttrsAndMetadata();
diff --git a/llvm/test/Transforms/SimplifyCFG/no-drop-debug-loc-when-speculating-call.ll b/llvm/test/Transforms/SimplifyCFG/no-drop-debug-loc-when-speculating-call.ll
new file mode 100644
index 0000000000000..dd1db41632c98
--- /dev/null
+++ b/llvm/test/Transforms/SimplifyCFG/no-drop-debug-loc-when-speculating-call.ll
@@ -0,0 +1,43 @@
+; RUN: opt -S -o - %s -passes=simplifycfg -simplifycfg-require-and-preserve-domtree=1 | FileCheck %s
+
+
+declare i1 @make_condition()
+
+define i1 @specfn() readnone nounwind speculatable {
+ ret i1 true
+}
+
+; CHECK-LABEL: @test1(
+; CHECK: call i1 @specfn(), !dbg
+; CHECK: select i1
+define void @test1(i1 %cond) !dbg !6 {
+start:
+ br i1 %cond, label %then, label %else, !dbg !9
+
+then: ; preds = %start
+ %sres = call i1 @specfn(), !dbg !8
+ br label %else, !dbg !11
+
+else: ; preds = %then, %start
+ %phi = phi i1 [ %cond, %start ], [ %sres, %then ], !dbg !12
+ ret void, !dbg !13
+}
+
+!llvm.dbg.cu = !{!0}
+!llvm.debugify = !{!3, !4}
+!llvm.module.flags = !{!5}
+
+!0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "debugify", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
+!1 = !DIFile(filename: "test.ll", directory: "/")
+!2 = !{}
+!3 = !{i32 6}
+!4 = !{i32 0}
+!5 = !{i32 2, !"Debug Info Version", i32 3}
+!6 = distinct !DISubprogram(name: "test1", linkageName: "test1", scope: null, file: !1, line: 1, type: !7, scopeLine: 1, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !2)
+!7 = !DISubroutineType(types: !2)
+!8 = !DILocation(line: 1, column: 1, scope: !6)
+!9 = !DILocation(line: 2, column: 1, scope: !6)
+!10 = !DILocation(line: 3, column: 2, scope: !6)
+!11 = !DILocation(line: 4, column: 2, scope: !6)
+!12 = !DILocation(line: 5, column: 3, scope: !6)
+!13 = !DILocation(line: 6, column: 3, scope: !6)
More information about the llvm-commits
mailing list