aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--test/Transforms/LICM/no-preheader-test.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/test/Transforms/LICM/no-preheader-test.ll b/test/Transforms/LICM/no-preheader-test.ll
new file mode 100644
index 0000000000..eb0773f7e1
--- /dev/null
+++ b/test/Transforms/LICM/no-preheader-test.ll
@@ -0,0 +1,21 @@
+; Test that LICM works when there is not a loop-preheader
+; RUN: as < %s | opt -licm | dis
+
+void "testfunc"(int %i, bool %ifcond) {
+ br bool %ifcond, label %Then, label %Else
+Then:
+ br label %Loop
+Else:
+ br label %Loop
+
+Loop:
+ %j = phi uint [0, %Then], [12, %Else], [%Next, %Loop]
+ %i = cast int %i to uint
+ %i2 = mul uint %i, 17
+ %Next = add uint %j, %i2
+ %cond = seteq uint %Next, 0
+ br bool %cond, label %Out, label %Loop
+
+Out:
+ ret void
+}