[llvm] 3bfb235 - [Test] Add failing test for PR61022
Max Kazantsev via llvm-commits
llvm-commits at lists.llvm.org
Mon Feb 27 02:20:10 PST 2023
Author: Max Kazantsev
Date: 2023-02-27T17:20:01+07:00
New Revision: 3bfb2357f7d35aed81ea7f0fd0466c8babe3952f
URL: https://github.com/llvm/llvm-project/commit/3bfb2357f7d35aed81ea7f0fd0466c8babe3952f
DIFF: https://github.com/llvm/llvm-project/commit/3bfb2357f7d35aed81ea7f0fd0466c8babe3952f.diff
LOG: [Test] Add failing test for PR61022
Details: https://github.com/llvm/llvm-project/issues/61022
Added:
llvm/test/Transforms/LoopPredication/pr61022.ll
Modified:
Removed:
################################################################################
diff --git a/llvm/test/Transforms/LoopPredication/pr61022.ll b/llvm/test/Transforms/LoopPredication/pr61022.ll
new file mode 100644
index 0000000000000..038136800c1cb
--- /dev/null
+++ b/llvm/test/Transforms/LoopPredication/pr61022.ll
@@ -0,0 +1,43 @@
+; RUN: opt -S -passes=loop-predication < %s 2>&1 | FileCheck %s
+; REQUIRES: asserts
+; XFAIL: *
+
+declare void @llvm.experimental.deoptimize.isVoid(...)
+
+; FIXME: Loop predication here inserts assume across the critical edge, and
+; it leads to malformed IR (assume's condition does not dominate it).
+define void @test_01(i1 %cond) {
+; CHECK-LABEL: test
+bb:
+ %inst = call i1 @llvm.experimental.widenable.condition()
+ br label %loop
+
+unreached: ; preds = %backedge
+ unreachable
+
+loop: ; preds = %backedge, %bb
+ %inst3 = phi i32 [ 0, %bb ], [ %inst4, %backedge ]
+ %inst4 = add nsw i32 %inst3, 1
+ br i1 %cond, label %backedge, label %guard_block
+
+normal_ret: ; preds = %loop
+ ret void
+
+backedge: ; preds = %guard_block, %loop
+ %inst7 = icmp sgt i32 %inst3, 137
+ br i1 %inst7, label %unreached, label %loop
+
+guard_block: ; preds = %loop, %loop
+ %inst9 = icmp ult i32 %inst4, 10000
+ %inst10 = and i1 %inst9, %inst
+ br i1 %inst10, label %backedge, label %deopt
+
+deopt: ; preds = %guard_block
+ call void (...) @llvm.experimental.deoptimize.isVoid(i32 13) [ "deopt"() ]
+ ret void
+
+done: ; preds = %loop
+ ret void
+}
+
+declare i1 @llvm.experimental.widenable.condition()
More information about the llvm-commits
mailing list