[llvm] 8df140c - [PhaseOrdering] Add test for DAE/GlobalDCE interaction (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Tue Mar 14 07:19:48 PDT 2023
Author: Nikita Popov
Date: 2023-03-14T15:19:39+01:00
New Revision: 8df140c860f16706ee34935f95cab391bbd19627
URL: https://github.com/llvm/llvm-project/commit/8df140c860f16706ee34935f95cab391bbd19627
DIFF: https://github.com/llvm/llvm-project/commit/8df140c860f16706ee34935f95cab391bbd19627.diff
LOG: [PhaseOrdering] Add test for DAE/GlobalDCE interaction (NFC)
Added:
llvm/test/Transforms/PhaseOrdering/dae-dce.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/PhaseOrdering/dae-dce.ll b/llvm/test/Transforms/PhaseOrdering/dae-dce.ll
new file mode 100644
index 0000000000000..8a0a36ef6cff9
--- /dev/null
+++ b/llvm/test/Transforms/PhaseOrdering/dae-dce.ll
@@ -0,0 +1,64 @@
+; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
+; RUN: opt -S -passes='default<O3>' < %s | FileCheck %s --check-prefixes=CHECK,DEFAULT
+; RUN: opt -S -passes='lto<O3>' < %s | FileCheck %s --check-prefixes=CHECK,LTO
+
+declare void @llvm.trap()
+
+define void @do_trap(ptr %ptr) {
+; CHECK-LABEL: @do_trap(
+; CHECK-NEXT: tail call void @llvm.trap()
+; CHECK-NEXT: unreachable
+;
+ call void @llvm.trap()
+ unreachable
+}
+
+define internal void @capture_and_trap(ptr %ptr) noinline {
+; CHECK-LABEL: @capture_and_trap(
+; CHECK-NEXT: tail call void @llvm.trap()
+; CHECK-NEXT: unreachable
+;
+ %alloca = alloca ptr, align 4
+ store ptr %ptr, ptr %alloca, align 4
+ call void @do_trap(ptr noundef nonnull %alloca)
+ unreachable
+}
+
+define internal void @dead_fn1() {
+; LTO-LABEL: @dead_fn1(
+; LTO-NEXT: ret void
+;
+ ret void
+}
+
+define internal void @dead_fn2() {
+; LTO-LABEL: @dead_fn2(
+; LTO-NEXT: ret void
+;
+ ret void
+}
+
+define void @test(i1 %c) {
+; DEFAULT-LABEL: @test(
+; DEFAULT-NEXT: tail call fastcc void @capture_and_trap()
+; DEFAULT-NEXT: unreachable
+;
+; LTO-LABEL: @test(
+; LTO-NEXT: br i1 [[C:%.*]], label [[IF:%.*]], label [[ELSE:%.*]]
+; LTO: if:
+; LTO-NEXT: tail call fastcc void @capture_and_trap(ptr nonnull @dead_fn1)
+; LTO-NEXT: unreachable
+; LTO: else:
+; LTO-NEXT: tail call fastcc void @capture_and_trap(ptr nonnull @dead_fn2)
+; LTO-NEXT: unreachable
+;
+ br i1 %c, label %if, label %else
+
+if:
+ call void @capture_and_trap(ptr @dead_fn1)
+ unreachable
+
+else:
+ call void @capture_and_trap(ptr @dead_fn2)
+ unreachable
+}
More information about the llvm-commits
mailing list