summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/JumpThreading/crash.ll
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/test/Transforms/JumpThreading/crash.ll')
-rw-r--r--llvm/test/Transforms/JumpThreading/crash.ll62
1 files changed, 61 insertions, 1 deletions
diff --git a/llvm/test/Transforms/JumpThreading/crash.ll b/llvm/test/Transforms/JumpThreading/crash.ll
index 900a7738d3b..01bec4b2c2d 100644
--- a/llvm/test/Transforms/JumpThreading/crash.ll
+++ b/llvm/test/Transforms/JumpThreading/crash.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -jump-threading -disable-output
+; RUN: opt < %s -jump-threading -S | FileCheck %s
; PR2285
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128"
target triple = "x86_64-unknown-linux-gnu"
@@ -564,3 +564,63 @@ ur:
declare i8* @PR14233.f1()
declare i8* @PR14233.f2()
+
+; Make sure the following compiles in a sane amount of time, as opposed
+; to taking exponential time.
+; (CHECK to make sure the condition doesn't get simplified somehow;
+; if it does, the testcase will need to be revised.)
+; CHECK-LABEL: define void @almost_infinite_loop
+; CHECK: %x39 = or i1 %x38, %x38
+; CHECK: br i1 %x39, label %dest1, label %dest2
+define void @almost_infinite_loop(i1 %x0) {
+entry:
+ br label %if.then57.i
+
+if.then57.i:
+ %x1 = or i1 %x0, %x0
+ %x2 = or i1 %x1, %x1
+ %x3 = or i1 %x2, %x2
+ %x4 = or i1 %x3, %x3
+ %x5 = or i1 %x4, %x4
+ %x6 = or i1 %x5, %x5
+ %x7 = or i1 %x6, %x6
+ %x8 = or i1 %x7, %x7
+ %x9 = or i1 %x8, %x8
+ %x10 = or i1 %x9, %x9
+ %x11 = or i1 %x10, %x10
+ %x12 = or i1 %x11, %x11
+ %x13 = or i1 %x12, %x12
+ %x14 = or i1 %x13, %x13
+ %x15 = or i1 %x14, %x14
+ %x16 = or i1 %x15, %x15
+ %x17 = or i1 %x16, %x16
+ %x18 = or i1 %x17, %x17
+ %x19 = or i1 %x18, %x18
+ %x20 = or i1 %x19, %x19
+ %x21 = or i1 %x20, %x20
+ %x22 = or i1 %x21, %x21
+ %x23 = or i1 %x22, %x22
+ %x24 = or i1 %x23, %x23
+ %x25 = or i1 %x24, %x24
+ %x26 = or i1 %x25, %x25
+ %x27 = or i1 %x26, %x26
+ %x28 = or i1 %x27, %x27
+ %x29 = or i1 %x28, %x28
+ %x30 = or i1 %x29, %x29
+ %x31 = or i1 %x30, %x30
+ %x32 = or i1 %x31, %x31
+ %x33 = or i1 %x32, %x32
+ %x34 = or i1 %x33, %x33
+ %x35 = or i1 %x34, %x34
+ %x36 = or i1 %x35, %x35
+ %x37 = or i1 %x36, %x36
+ %x38 = or i1 %x37, %x37
+ %x39 = or i1 %x38, %x38
+ br i1 %x39, label %dest1, label %dest2
+
+dest1:
+ unreachable
+
+dest2:
+ unreachable
+}
OpenPOWER on IntegriCloud