aboutsummaryrefslogtreecommitdiff
path: root/test/Transforms/PredicateSimplifier
diff options
context:
space:
mode:
authorNick Lewycky <nicholas@mxc.ca>2006-09-20 17:04:01 +0000
committerNick Lewycky <nicholas@mxc.ca>2006-09-20 17:04:01 +0000
commit406fc0cb49e1255d2caea1b943dd17bd4dda775d (patch)
tree33be285103a4096c76635345c55fe3d74a430e87 /test/Transforms/PredicateSimplifier
parent4563326472b000ee501a99f19b912bf9ca134b1f (diff)
Use a total ordering to compare instructions.
Fixes infinite loop in resolve(). git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30540 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/PredicateSimplifier')
-rw-r--r--test/Transforms/PredicateSimplifier/2006-09-20-ResolveCycle.ll28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/Transforms/PredicateSimplifier/2006-09-20-ResolveCycle.ll b/test/Transforms/PredicateSimplifier/2006-09-20-ResolveCycle.ll
new file mode 100644
index 0000000000..6b456b9502
--- /dev/null
+++ b/test/Transforms/PredicateSimplifier/2006-09-20-ResolveCycle.ll
@@ -0,0 +1,28 @@
+; RUN: llvm-as < %s | opt -predsimplify -disable-output
+
+void %gs_image_next() {
+entry:
+ %tmp = load uint* null ; <uint> [#uses=2]
+ br bool false, label %cond_next21, label %UnifiedReturnBlock
+
+cond_next21: ; preds = %entry
+ br bool false, label %cond_next42, label %UnifiedReturnBlock
+
+cond_next42: ; preds = %cond_next21
+ br label %cond_true158
+
+cond_next134: ; preds = %cond_true158
+ %tmp1571 = seteq uint 0, %min ; <bool> [#uses=0]
+ ret void
+
+cond_true158: ; preds = %cond_true158, %cond_next42
+ %tmp47 = sub uint %tmp, 0 ; <uint> [#uses=2]
+ %tmp49 = setle uint %tmp47, 0 ; <bool> [#uses=1]
+ %min = select bool %tmp49, uint %tmp47, uint 0 ; <uint> [#uses=2]
+ %tmp92 = add uint %min, 0 ; <uint> [#uses=1]
+ %tmp101 = seteq uint %tmp92, %tmp ; <bool> [#uses=1]
+ br bool %tmp101, label %cond_next134, label %cond_true158
+
+UnifiedReturnBlock: ; preds = %cond_next21, %entry
+ ret void
+}