summaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorDan Gohman <gohman@apple.com>2009-09-08 15:45:00 +0000
committerDan Gohman <gohman@apple.com>2009-09-08 15:45:00 +0000
commit9cec4125f92b12880692c3e4a378b792a85ea67a (patch)
treef34aa8c5b5b7783f84d985d44c086360683dc226 /test
parentdd528195c766db4211a29e0955e5f888f322dc37 (diff)
downloadexternal_llvm-9cec4125f92b12880692c3e4a378b792a85ea67a.zip
external_llvm-9cec4125f92b12880692c3e4a378b792a85ea67a.tar.gz
external_llvm-9cec4125f92b12880692c3e4a378b792a85ea67a.tar.bz2
Re-apply r80926, with fixes: keep the domtree informed of new blocks
that get created during loop unswitching, and fix SplitBlockPredecessors' LCSSA updating code to create new PHIs instead of trying to just move existing ones. Also, optimize Loop::verifyLoop, since it gets called a lot. Use searches on a sorted list of blocks instead of calling the "contains" function, as is done in other places in the Loop class, since "contains" does a linear search. Also, don't call verifyLoop from LoopSimplify or LCSSA, as the PassManager is already calling verifyLoop as part of LoopInfo's verifyAnalysis. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@81221 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r--test/Transforms/LoopUnswitch/2009-09-05-DomAssert.ll52
-rw-r--r--test/Transforms/LoopUnswitch/preserve-analyses.ll645
2 files changed, 645 insertions, 52 deletions
diff --git a/test/Transforms/LoopUnswitch/2009-09-05-DomAssert.ll b/test/Transforms/LoopUnswitch/2009-09-05-DomAssert.ll
deleted file mode 100644
index 0258085..0000000
--- a/test/Transforms/LoopUnswitch/2009-09-05-DomAssert.ll
+++ /dev/null
@@ -1,52 +0,0 @@
-; RUN: llvm-as < %s | opt -loop-unswitch -disable-output
-; rdar://7197574
-
-target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:32"
-target triple = "thumbv7-apple-darwin9"
- %struct.frame = type { i16*, i16*, i16* }
-
-declare arm_apcscc i32 @ercCollect8PredBlocks(i32* nocapture, i32, i32, i32* nocapture, i32, i32, i32, i8 zeroext) nounwind
-
-define arm_apcscc void @concealBlocks(i32 %lastColumn, i32 %lastRow, i32 %comp, %struct.frame* nocapture %recfr, i32 %picSizeX, i32* nocapture %condition) nounwind {
-entry:
- br i1 undef, label %bb.nph12, label %return
-
-bb28: ; preds = %bb.nph12
- unreachable
-
-bb42: ; preds = %bb.nph12
- br label %bb43
-
-bb43: ; preds = %bb61, %bb42
- %0 = call arm_apcscc i32 @ercCollect8PredBlocks(i32* undef, i32 undef, i32 0, i32* %condition, i32 %lastRow, i32 %lastColumn, i32 undef, i8 zeroext 1) nounwind ; <i32> [#uses=0]
- switch i32 %comp, label %bb58 [
- i32 0, label %bb52
- i32 1, label %bb54
- i32 2, label %bb56
- ]
-
-bb52: ; preds = %bb43
- br label %bb58
-
-bb54: ; preds = %bb43
- br label %bb58
-
-bb56: ; preds = %bb43
- unreachable
-
-bb58: ; preds = %bb54, %bb52, %bb43
- br i1 %1, label %bb59, label %bb61
-
-bb59: ; preds = %bb58
- br label %bb61
-
-bb61: ; preds = %bb59, %bb58
- br label %bb43
-
-bb.nph12: ; preds = %entry
- %1 = icmp eq i32 %comp, 0 ; <i1> [#uses=1]
- br i1 undef, label %bb28, label %bb42
-
-return: ; preds = %entry
- ret void
-}
diff --git a/test/Transforms/LoopUnswitch/preserve-analyses.ll b/test/Transforms/LoopUnswitch/preserve-analyses.ll
new file mode 100644
index 0000000..6145bf5
--- /dev/null
+++ b/test/Transforms/LoopUnswitch/preserve-analyses.ll
@@ -0,0 +1,645 @@
+; RUN: opt -loop-unswitch %s -disable-output
+
+; Loop unswitch should be able to unswitch these loops and
+; preserve LCSSA and LoopSimplify forms.
+
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:64"
+target triple = "armv6-apple-darwin9"
+
+%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
+%struct._RuneCharClass = type { [14 x i8], i32 }
+%struct._RuneEntry = type { i32, i32, i32, i32* }
+%struct._RuneLocale = type { [8 x i8], [32 x i8], i32 (i8*, i32, i8**)*, i32 (i32, i8*, i32, i8**)*, i32, [256 x i32], [256 x i32], [256 x i32], %struct._RuneRange, %struct._RuneRange, %struct._RuneRange, i8*, i32, i32, %struct._RuneCharClass* }
+%struct._RuneRange = type { i32, %struct._RuneEntry* }
+%struct.__sFILEX = type opaque
+%struct.__sbuf = type { i8*, i32 }
+%struct.colstr = type { i8*, i8* }
+%struct.optstr = type { i8*, i32* }
+
+@expflg = external global i32 ; <i32*> [#uses=0]
+@ctrflg = external global i32 ; <i32*> [#uses=0]
+@boxflg = external global i32 ; <i32*> [#uses=0]
+@dboxflg = external global i32 ; <i32*> [#uses=0]
+@tab = external global i32 ; <i32*> [#uses=0]
+@F1 = external global i32 ; <i32*> [#uses=0]
+@F2 = external global i32 ; <i32*> [#uses=0]
+@allflg = external global i32 ; <i32*> [#uses=0]
+@leftover = external global i32 ; <i32*> [#uses=0]
+@textflg = external global i32 ; <i32*> [#uses=0]
+@left1flg = external global i32 ; <i32*> [#uses=0]
+@rightl = external global i32 ; <i32*> [#uses=0]
+@iline = external global i32 ; <i32*> [#uses=0]
+@ifile = external global i8* ; <i8**> [#uses=0]
+@.str = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@texname = external global i32 ; <i32*> [#uses=0]
+@texct = external global i32 ; <i32*> [#uses=0]
+@texstr = external global [63 x i8], align 4 ; <[63 x i8]*> [#uses=0]
+@nlin = external global i32 ; <i32*> [#uses=0]
+@ncol = external global i32 ; <i32*> [#uses=0]
+@nclin = external global i32 ; <i32*> [#uses=0]
+@nslin = external global i32 ; <i32*> [#uses=0]
+@style = external global [100 x [20 x i32]] ; <[100 x [20 x i32]]*> [#uses=0]
+@ctop = external global [100 x [20 x i32]] ; <[100 x [20 x i32]]*> [#uses=0]
+@font = external global [100 x [20 x [2 x i8]]] ; <[100 x [20 x [2 x i8]]]*> [#uses=0]
+@csize = external global [100 x [20 x [4 x i8]]] ; <[100 x [20 x [4 x i8]]]*> [#uses=0]
+@vsize = external global [100 x [20 x [4 x i8]]] ; <[100 x [20 x [4 x i8]]]*> [#uses=0]
+@cll = external global [20 x [10 x i8]] ; <[20 x [10 x i8]]*> [#uses=0]
+@stynum = external global [201 x i32] ; <[201 x i32]*> [#uses=0]
+@lefline = external global [100 x [20 x i32]] ; <[100 x [20 x i32]]*> [#uses=0]
+@fullbot = external global [200 x i32] ; <[200 x i32]*> [#uses=0]
+@instead = external global [200 x i8*] ; <[200 x i8*]*> [#uses=0]
+@evenflg = external global i32 ; <i32*> [#uses=0]
+@evenup = external global [20 x i32] ; <[20 x i32]*> [#uses=0]
+@linsize = external global i32 ; <i32*> [#uses=0]
+@pr1403 = external global i32 ; <i32*> [#uses=0]
+@delim1 = external global i32 ; <i32*> [#uses=1]
+@delim2 = external global i32 ; <i32*> [#uses=1]
+@table = external global [200 x %struct.colstr*] ; <[200 x %struct.colstr*]*> [#uses=0]
+@cspace = external global i8* ; <i8**> [#uses=0]
+@cstore = external global i8* ; <i8**> [#uses=0]
+@exstore = external global i8* ; <i8**> [#uses=0]
+@exlim = external global i8* ; <i8**> [#uses=0]
+@sep = external global [20 x i32] ; <[20 x i32]*> [#uses=0]
+@used = external global [20 x i32] ; <[20 x i32]*> [#uses=0]
+@lused = external global [20 x i32] ; <[20 x i32]*> [#uses=0]
+@rused = external global [20 x i32] ; <[20 x i32]*> [#uses=0]
+@linestop = external global [200 x i32] ; <[200 x i32]*> [#uses=0]
+@last = external global i8* ; <i8**> [#uses=0]
+@linstart = external global i32 ; <i32*> [#uses=0]
+@tabin = external global %struct.FILE* ; <%struct.FILE**> [#uses=0]
+@tabout = external global %struct.FILE* ; <%struct.FILE**> [#uses=0]
+@sargc = external global i32 ; <i32*> [#uses=0]
+@sargv = external global i8** ; <i8***> [#uses=0]
+@.str1 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str12 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str2 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str3 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str4 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str5 = external constant [2 x i8], align 1 ; <[2 x i8]*> [#uses=0]
+@.str6 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@__stdinp = external global %struct.FILE* ; <%struct.FILE**> [#uses=0]
+@__stdoutp = external global %struct.FILE* ; <%struct.FILE**> [#uses=0]
+@.str7 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str8 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@options = external global [21 x %struct.optstr] ; <[21 x %struct.optstr]*> [#uses=0]
+@.str9 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str110 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str211 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str312 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str413 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str514 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str615 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str716 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str817 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=0]
+@.str918 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=0]
+@.str10 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@.str11 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@.str1219 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str13 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str14 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str15 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str16 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str17 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str18 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@.str19 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@.str20 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str21 = external constant [25 x i8], align 1 ; <[25 x i8]*> [#uses=0]
+@.str22 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str23 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str24 = external constant [34 x i8], align 1 ; <[34 x i8]*> [#uses=0]
+@.str125 = external constant [32 x i8], align 1 ; <[32 x i8]*> [#uses=0]
+@.str226 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=0]
+@.str327 = external constant [38 x i8], align 1 ; <[38 x i8]*> [#uses=0]
+@oncol = external global i32 ; <i32*> [#uses=0]
+@.str428 = external constant [40 x i8], align 1 ; <[40 x i8]*> [#uses=0]
+@.str529 = external constant [31 x i8], align 1 ; <[31 x i8]*> [#uses=0]
+@.str630 = external constant [51 x i8], align 1 ; <[51 x i8]*> [#uses=0]
+@.str731 = external constant [51 x i8], align 1 ; <[51 x i8]*> [#uses=0]
+@.str832 = external constant [40 x i8], align 1 ; <[40 x i8]*> [#uses=0]
+@.str933 = external constant [26 x i8], align 1 ; <[26 x i8]*> [#uses=0]
+@.str1034 = external constant [24 x i8], align 1 ; <[24 x i8]*> [#uses=0]
+@.str1135 = external constant [21 x i8], align 1 ; <[21 x i8]*> [#uses=0]
+@.str1236 = external constant [24 x i8], align 1 ; <[24 x i8]*> [#uses=0]
+@.str1337 = external constant [33 x i8], align 1 ; <[33 x i8]*> [#uses=0]
+@.str1438 = external constant [22 x i8], align 1 ; <[22 x i8]*> [#uses=0]
+@.str1539 = external constant [32 x i8], align 1 ; <[32 x i8]*> [#uses=0]
+@.str1640 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str1741 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@_DefaultRuneLocale = external global %struct._RuneLocale ; <%struct._RuneLocale*> [#uses=0]
+@.str43 = external constant [3 x i8], align 1 ; <[3 x i8]*> [#uses=0]
+@.str144 = external constant [43 x i8], align 1 ; <[43 x i8]*> [#uses=0]
+@.str245 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str346 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str447 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str548 = external constant [3 x i8], align 1 ; <[3 x i8]*> [#uses=0]
+@.str649 = external constant [1 x i8], align 1 ; <[1 x i8]*> [#uses=0]
+@.str51 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str152 = external constant [2 x i8], align 1 ; <[2 x i8]*> [#uses=0]
+@.str253 = external constant [2 x i8], align 1 ; <[2 x i8]*> [#uses=0]
+@.str354 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str455 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=0]
+@.str556 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str657 = external constant [19 x i8], align 1 ; <[19 x i8]*> [#uses=0]
+@.str758 = external constant [32 x i8], align 1 ; <[32 x i8]*> [#uses=0]
+@.str859 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str960 = external constant [30 x i8], align 1 ; <[30 x i8]*> [#uses=0]
+@.str1061 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=0]
+@.str1162 = external constant [35 x i8], align 1 ; <[35 x i8]*> [#uses=0]
+@.str1263 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str1364 = external constant [20 x i8], align 1 ; <[20 x i8]*> [#uses=0]
+@.str1465 = external constant [30 x i8], align 1 ; <[30 x i8]*> [#uses=0]
+@.str1566 = external constant [41 x i8], align 1 ; <[41 x i8]*> [#uses=0]
+@.str1667 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str1768 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str1869 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str1970 = external constant [29 x i8], align 1 ; <[29 x i8]*> [#uses=0]
+@.str2071 = external constant [22 x i8], align 1 ; <[22 x i8]*> [#uses=0]
+@.str2172 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=0]
+@.str2273 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str2374 = external constant [36 x i8], align 1 ; <[36 x i8]*> [#uses=0]
+@.str2475 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str25 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str26 = external constant [20 x i8], align 1 ; <[20 x i8]*> [#uses=0]
+@.str27 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=0]
+@.str28 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str29 = external constant [25 x i8], align 1 ; <[25 x i8]*> [#uses=0]
+@.str30 = external constant [24 x i8], align 1 ; <[24 x i8]*> [#uses=0]
+@.str31 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str32 = external constant [18 x i8], align 1 ; <[18 x i8]*> [#uses=0]
+@.str33 = external constant [79 x i8], align 1 ; <[79 x i8]*> [#uses=0]
+@.str77 = external constant [13 x i8], align 1 ; <[13 x i8]*> [#uses=0]
+@.str178 = external constant [13 x i8], align 1 ; <[13 x i8]*> [#uses=0]
+@.str279 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str380 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str481 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str582 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str683 = external constant [33 x i8], align 1 ; <[33 x i8]*> [#uses=0]
+@.str784 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str885 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str986 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str1087 = external constant [28 x i8], align 1 ; <[28 x i8]*> [#uses=0]
+@.str1188 = external constant [29 x i8], align 1 ; <[29 x i8]*> [#uses=0]
+@.str1289 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str1390 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str1491 = external constant [22 x i8], align 1 ; <[22 x i8]*> [#uses=0]
+@.str1592 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str1693 = external constant [13 x i8], align 1 ; <[13 x i8]*> [#uses=0]
+@.str1794 = external constant [21 x i8], align 1 ; <[21 x i8]*> [#uses=0]
+@.str1895 = external constant [25 x i8], align 1 ; <[25 x i8]*> [#uses=0]
+@.str1996 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str2097 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str2198 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str2299 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str23100 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str24101 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str25102 = external constant [32 x i8], align 1 ; <[32 x i8]*> [#uses=0]
+@.str26103 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str27104 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str28105 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str29106 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=0]
+@.str30107 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str31108 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str111 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str1112 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str2113 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str3114 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str4115 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str5116 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str6117 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str7118 = external constant [28 x i8], align 1 ; <[28 x i8]*> [#uses=0]
+@.str8119 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str9120 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str10121 = external constant [13 x i8], align 1 ; <[13 x i8]*> [#uses=0]
+@.str11122 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str12123 = external constant [32 x i8], align 1 ; <[32 x i8]*> [#uses=0]
+@.str13124 = external constant [27 x i8], align 1 ; <[27 x i8]*> [#uses=0]
+@.str14125 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@.str15126 = external constant [13 x i8], align 1 ; <[13 x i8]*> [#uses=0]
+@.str16127 = external constant [2 x i8], align 1 ; <[2 x i8]*> [#uses=0]
+@.str17128 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str18129 = external constant [30 x i8], align 1 ; <[30 x i8]*> [#uses=0]
+@.str19130 = external constant [13 x i8], align 1 ; <[13 x i8]*> [#uses=0]
+@.str20131 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str21132 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str22133 = external constant [2 x i8], align 1 ; <[2 x i8]*> [#uses=0]
+@watchout = external global i32 ; <i32*> [#uses=0]
+@once = external global i32 ; <i32*> [#uses=0]
+@.str23134 = external constant [20 x i8], align 1 ; <[20 x i8]*> [#uses=0]
+@.str24135 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str25136 = external constant [18 x i8], align 1 ; <[18 x i8]*> [#uses=0]
+@.str26137 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str27138 = external constant [63 x i8], align 1 ; <[63 x i8]*> [#uses=0]
+@.str28139 = external constant [61 x i8], align 1 ; <[61 x i8]*> [#uses=0]
+@.str29140 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str30141 = external constant [19 x i8], align 1 ; <[19 x i8]*> [#uses=0]
+@.str31142 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str32143 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str33144 = external constant [3 x i8], align 1 ; <[3 x i8]*> [#uses=0]
+@.str34 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str35 = external constant [23 x i8], align 1 ; <[23 x i8]*> [#uses=0]
+@.str36 = external constant [23 x i8], align 1 ; <[23 x i8]*> [#uses=0]
+@.str37 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@__stderrp = external global %struct.FILE* ; <%struct.FILE**> [#uses=0]
+@.str38 = external constant [44 x i8], align 1 ; <[44 x i8]*> [#uses=0]
+@.str39 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@topat = external global [20 x i32] ; <[20 x i32]*> [#uses=0]
+@.str40 = external constant [22 x i8], align 1 ; <[22 x i8]*> [#uses=0]
+@.str41 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=0]
+@.str42 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str43145 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str149 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@useln = external global i32 ; <i32*> [#uses=0]
+@.str1150 = external constant [1 x i8], align 1 ; <[1 x i8]*> [#uses=0]
+@.str2151 = external constant [26 x i8], align 1 ; <[26 x i8]*> [#uses=0]
+@.str3152 = external constant [32 x i8], align 1 ; <[32 x i8]*> [#uses=0]
+@spcount = external global i32 ; <i32*> [#uses=0]
+@tpcount = external global i32 ; <i32*> [#uses=0]
+@thisvec = external global i8* ; <i8**> [#uses=0]
+@tpvecs = external global [50 x i8*] ; <[50 x i8*]*> [#uses=0]
+@.str156 = external constant [21 x i8], align 1 ; <[21 x i8]*> [#uses=0]
+@spvecs = external global [20 x i8*] ; <[20 x i8*]*> [#uses=0]
+@.str1157 = external constant [29 x i8], align 1 ; <[29 x i8]*> [#uses=0]
+@.str2158 = external constant [24 x i8], align 1 ; <[24 x i8]*> [#uses=0]
+@.str164 = external constant [71 x i8], align 1 ; <[71 x i8]*> [#uses=0]
+@.str1165 = external constant [71 x i8], align 1 ; <[71 x i8]*> [#uses=0]
+@.str2166 = external constant [47 x i8], align 1 ; <[47 x i8]*> [#uses=0]
+@.str169 = external constant [18 x i8], align 1 ; <[18 x i8]*> [#uses=0]
+@backp = external global i8* ; <i8**> [#uses=0]
+@backup = external global [500 x i8] ; <[500 x i8]*> [#uses=0]
+@.str1170 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str2171 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str176 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str1177 = external constant [35 x i8], align 1 ; <[35 x i8]*> [#uses=0]
+@.str2178 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str3179 = external constant [33 x i8], align 1 ; <[33 x i8]*> [#uses=0]
+@.str4180 = external constant [36 x i8], align 1 ; <[36 x i8]*> [#uses=0]
+@.str5181 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str6182 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str7183 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str8184 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str9185 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str10186 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str11187 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str12188 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str13189 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str14190 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str15191 = external constant [17 x i8], align 1 ; <[17 x i8]*> [#uses=0]
+@.str16192 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str17193 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str18194 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=0]
+@.str19195 = external constant [19 x i8], align 1 ; <[19 x i8]*> [#uses=0]
+@.str203 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str1204 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str2205 = external constant [31 x i8], align 1 ; <[31 x i8]*> [#uses=0]
+@.str3206 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str4207 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str5208 = external constant [10 x i8], align 1 ; <[10 x i8]*> [#uses=0]
+@.str6209 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str7210 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str8211 = external constant [21 x i8], align 1 ; <[21 x i8]*> [#uses=0]
+@.str9212 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str10213 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str11214 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str12215 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str13216 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str14217 = external constant [37 x i8], align 1 ; <[37 x i8]*> [#uses=0]
+@.str15218 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str16219 = external constant [20 x i8], align 1 ; <[20 x i8]*> [#uses=0]
+@.str17220 = external constant [28 x i8], align 1 ; <[28 x i8]*> [#uses=0]
+@.str18221 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str19222 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str20223 = external constant [3 x i8], align 1 ; <[3 x i8]*> [#uses=0]
+@.str21224 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str22225 = external constant [11 x i8], align 1 ; <[11 x i8]*> [#uses=0]
+@.str23226 = external constant [13 x i8], align 1 ; <[13 x i8]*> [#uses=0]
+@.str24227 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str25228 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str26229 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str27230 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str28231 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str242 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str1243 = external constant [25 x i8], align 1 ; <[25 x i8]*> [#uses=0]
+@.str252 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str1253 = external constant [1 x i8], align 1 ; <[1 x i8]*> [#uses=0]
+@.str2254 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str3255 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str4256 = external constant [3 x i8], align 1 ; <[3 x i8]*> [#uses=0]
+@.str5257 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str6258 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str7259 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str8260 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str9261 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str10262 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str11263 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str12264 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str13265 = external constant [2 x i8], align 1 ; <[2 x i8]*> [#uses=0]
+@.str14266 = external constant [5 x i8], align 1 ; <[5 x i8]*> [#uses=0]
+@.str15267 = external constant [16 x i8], align 1 ; <[16 x i8]*> [#uses=0]
+@.str16268 = external constant [29 x i8], align 1 ; <[29 x i8]*> [#uses=0]
+@.str17269 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+@.str18270 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str19271 = external constant [9 x i8], align 1 ; <[9 x i8]*> [#uses=0]
+@.str20272 = external constant [32 x i8], align 1 ; <[32 x i8]*> [#uses=0]
+@.str21273 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str282 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str1283 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str2284 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str3285 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str4286 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str5287 = external constant [8 x i8], align 1 ; <[8 x i8]*> [#uses=0]
+@.str6288 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str7289 = external constant [12 x i8], align 1 ; <[12 x i8]*> [#uses=0]
+@.str8290 = external constant [3 x i8], align 1 ; <[3 x i8]*> [#uses=0]
+@.str9291 = external constant [7 x i8], align 1 ; <[7 x i8]*> [#uses=0]
+@.str10292 = external constant [15 x i8], align 1 ; <[15 x i8]*> [#uses=0]
+@.str11293 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@.str12294 = external constant [2 x i8], align 1 ; <[2 x i8]*> [#uses=0]
+@.str13295 = external constant [1 x i8], align 1 ; <[1 x i8]*> [#uses=0]
+@.str14296 = external constant [6 x i8], align 1 ; <[6 x i8]*> [#uses=0]
+@.str15297 = external constant [28 x i8], align 1 ; <[28 x i8]*> [#uses=0]
+@.str16298 = external constant [4 x i8], align 1 ; <[4 x i8]*> [#uses=0]
+@.str17299 = external constant [14 x i8], align 1 ; <[14 x i8]*> [#uses=0]
+
+declare arm_apcscc void @main(i32, i8**) noreturn nounwind
+
+declare arm_apcscc i32 @swapin() nounwind
+
+declare arm_apcscc %struct.FILE* @"\01_fopen"(i8*, i8*)
+
+declare arm_apcscc void @setinp(i32, i8**) nounwind
+
+declare arm_apcscc i32 @tbl(i32, i8**) nounwind
+
+declare arm_apcscc i32 @fprintf(%struct.FILE* nocapture, i8* nocapture, ...) nounwind
+
+declare arm_apcscc i32 @fclose(%struct.FILE* nocapture) nounwind
+
+declare arm_apcscc void @exit(i32) noreturn nounwind
+
+declare arm_apcscc void @tableput() nounwind
+
+declare arm_apcscc void @init_options() nounwind
+
+declare arm_apcscc void @backrest(i8*) nounwind
+
+declare arm_apcscc void @getcomm() nounwind
+
+declare arm_apcscc i32 @printf(i8* nocapture, ...) nounwind
+
+declare arm_apcscc i8* @strchr(i8*, i32) nounwind readonly
+
+declare arm_apcscc i32 @strlen(i8* nocapture) nounwind readonly
+
+declare arm_apcscc void @getspec() nounwind
+
+declare arm_apcscc void @readspec() nounwind
+
+declare arm_apcscc i32 @"\01_fwrite"(i8*, i32, i32, i8*)
+
+declare arm_apcscc i32 @atoi(i8* nocapture) nounwind readonly
+
+declare arm_apcscc i32 @fputc(i32, i8* nocapture) nounwind
+
+declare arm_apcscc void @gettbl() nounwind
+
+declare arm_apcscc i32 @vspen(i8*) nounwind readonly
+
+declare arm_apcscc i32 @vspand(i32, i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @oneh(i32) nounwind readonly
+
+declare arm_apcscc i32 @nodata(i32) nounwind readonly
+
+declare arm_apcscc i32 @permute() nounwind
+
+declare arm_apcscc void @maktab() nounwind
+
+declare arm_apcscc i32 @filler(i8*) nounwind readonly
+
+declare arm_apcscc void @wide(i8*, i8*, i8*) nounwind
+
+declare arm_apcscc i32 @"\01_fputs"(i8*, i8*)
+
+declare arm_apcscc void @runout() nounwind
+
+declare arm_apcscc void @need() nounwind
+
+declare arm_apcscc void @deftail() nounwind
+
+declare arm_apcscc i32 @ifline(i8*) nounwind readonly
+
+declare arm_apcscc void @runtabs(i32, i32) nounwind
+
+declare arm_apcscc void @putline(i32, i32) nounwind
+
+declare arm_apcscc void @putsize(i8*) nounwind
+
+declare arm_apcscc void @putfont(i8*) nounwind
+
+declare arm_apcscc i32 @__maskrune(i32, i32)
+
+declare arm_apcscc void @funnies(i32, i32) nounwind
+
+declare arm_apcscc void @puttext(i8*, i8*, i8*) nounwind
+
+declare arm_apcscc i32 @puts(i8* nocapture) nounwind
+
+declare arm_apcscc void @yetmore() nounwind
+
+declare arm_apcscc i32 @domore(i8*) nounwind
+
+declare arm_apcscc void @checkuse() nounwind
+
+declare arm_apcscc void @release() nounwind
+
+declare arm_apcscc i32* @alocv(i32) nounwind
+
+declare arm_apcscc i8* @calloc(...)
+
+declare arm_apcscc i8* @chspace() nounwind
+
+declare arm_apcscc i32 @real(i8*) nounwind readonly
+
+declare arm_apcscc void @choochar() nounwind
+
+declare arm_apcscc i32 @point(i32) nounwind readnone
+
+declare arm_apcscc void @error(i8*) nounwind
+
+declare arm_apcscc i8* @gets1(i8*) nounwind
+
+declare arm_apcscc i8* @fgets(i8*, i32, %struct.FILE* nocapture) nounwind
+
+declare arm_apcscc i32 @get1char() nounwind
+
+declare arm_apcscc i32 @getc(%struct.FILE* nocapture) nounwind
+
+declare arm_apcscc void @un1getc(i32) nounwind
+
+declare arm_apcscc void @savefill() nounwind
+
+declare arm_apcscc void @cleanfc() nounwind
+
+declare arm_apcscc void @saveline() nounwind
+
+declare arm_apcscc void @ifdivert() nounwind
+
+declare arm_apcscc void @restline() nounwind
+
+declare arm_apcscc void @endoff() nounwind
+
+declare arm_apcscc void @rstofill() nounwind
+
+declare arm_apcscc i32 @gettext(i8* nocapture, i32, i32, i8*, i8*) nounwind
+
+declare arm_apcscc void @untext() nounwind
+
+declare arm_apcscc i32 @interv(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @up1(i32) nounwind readonly
+
+declare arm_apcscc i32 @interh(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @maknew(i8*) nounwind
+
+define arm_apcscc i32 @ineqn(i8* %s, i8* %p) nounwind readonly {
+entry:
+ %0 = load i32* @delim1, align 4 ; <i32> [#uses=1]
+ %1 = load i32* @delim2, align 4 ; <i32> [#uses=1]
+ br label %bb8.outer
+
+bb: ; preds = %bb8
+ %2 = icmp eq i8* %p_addr.0, %s ; <i1> [#uses=1]
+ br i1 %2, label %bb10, label %bb2
+
+bb2: ; preds = %bb
+ %3 = getelementptr inbounds i8* %p_addr.0, i32 1 ; <i8*> [#uses=3]
+ switch i32 %ineq.0.ph, label %bb8.backedge [
+ i32 0, label %bb3
+ i32 1, label %bb6
+ ]
+
+bb8.backedge: ; preds = %bb6, %bb5, %bb2
+ br label %bb8
+
+bb3: ; preds = %bb2
+ %4 = icmp eq i32 %8, %0 ; <i1> [#uses=1]
+ br i1 %4, label %bb8.outer.loopexit, label %bb5
+
+bb5: ; preds = %bb3
+ br i1 %6, label %bb6, label %bb8.backedge
+
+bb6: ; preds = %bb5, %bb2
+ %5 = icmp eq i32 %8, %1 ; <i1> [#uses=1]
+ br i1 %5, label %bb7, label %bb8.backedge
+
+bb7: ; preds = %bb6
+ %.lcssa1 = phi i8* [ %3, %bb6 ] ; <i8*> [#uses=1]
+ br label %bb8.outer.backedge
+
+bb8.outer.backedge: ; preds = %bb8.outer.loopexit, %bb7
+ %.lcssa2 = phi i8* [ %.lcssa1, %bb7 ], [ %.lcssa, %bb8.outer.loopexit ] ; <i8*> [#uses=1]
+ %ineq.0.ph.be = phi i32 [ 0, %bb7 ], [ 1, %bb8.outer.loopexit ] ; <i32> [#uses=1]
+ br label %bb8.outer
+
+bb8.outer.loopexit: ; preds = %bb3
+ %.lcssa = phi i8* [ %3, %bb3 ] ; <i8*> [#uses=1]
+ br label %bb8.outer.backedge
+
+bb8.outer: ; preds = %bb8.outer.backedge, %entry
+ %ineq.0.ph = phi i32 [ 0, %entry ], [ %ineq.0.ph.be, %bb8.outer.backedge ] ; <i32> [#uses=3]
+ %p_addr.0.ph = phi i8* [ %p, %entry ], [ %.lcssa2, %bb8.outer.backedge ] ; <i8*> [#uses=1]
+ %6 = icmp eq i32 %ineq.0.ph, 1 ; <i1> [#uses=1]
+ br label %bb8
+
+bb8: ; preds = %bb8.outer, %bb8.backedge
+ %p_addr.0 = phi i8* [ %p_addr.0.ph, %bb8.outer ], [ %3, %bb8.backedge ] ; <i8*> [#uses=3]
+ %7 = load i8* %p_addr.0, align 1 ; <i8> [#uses=2]
+ %8 = sext i8 %7 to i32 ; <i32> [#uses=2]
+ %9 = icmp eq i8 %7, 0 ; <i1> [#uses=1]
+ br i1 %9, label %bb10, label %bb
+
+bb10: ; preds = %bb8, %bb
+ %.0 = phi i32 [ %ineq.0.ph, %bb ], [ 0, %bb8 ] ; <i32> [#uses=1]
+ ret i32 %.0
+}
+
+declare arm_apcscc i32 @match(i8* nocapture, i8* nocapture) nounwind readonly
+
+declare arm_apcscc i32 @prefix(i8* nocapture, i8* nocapture) nounwind readonly
+
+declare arm_apcscc i32 @letter(i32) nounwind readnone
+
+declare arm_apcscc i32 @numb(i8* nocapture) nounwind readonly
+
+declare arm_apcscc i32 @digit(i32) nounwind readnone
+
+declare arm_apcscc i32 @max(i32, i32) nounwind readnone
+
+declare arm_apcscc void @tcopy(i8* nocapture, i8* nocapture) nounwind
+
+declare arm_apcscc i32 @ctype(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @min(i32, i32) nounwind readnone
+
+declare arm_apcscc i32 @fspan(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @lspan(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @ctspan(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @thish(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @allh(i32) nounwind readonly
+
+declare arm_apcscc void @tohcol(i32) nounwind
+
+declare arm_apcscc void @makeline(i32, i32, i32) nounwind
+
+declare arm_apcscc i32 @next(i32) nounwind readonly
+
+declare arm_apcscc i32 @prev(i32) nounwind readonly
+
+declare arm_apcscc i32 @lefdata(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @left(i32, i32, i32* nocapture) nounwind
+
+declare arm_apcscc i32 @strcmp(i8* nocapture, i8* nocapture) nounwind readonly
+
+declare arm_apcscc void @getstop() nounwind
+
+declare arm_apcscc void @drawline(i32, i32, i32, i32, i32, i32) nounwind
+
+declare arm_apcscc void @fullwide(i32, i32) nounwind
+
+declare arm_apcscc void @drawvert(i32, i32, i32, i32) nounwind
+
+declare arm_apcscc i32 @barent(i8*) nounwind readonly
+
+declare arm_apcscc i32 @midbcol(i32, i32) nounwind readonly
+
+declare arm_apcscc i32 @midbar(i32, i32) nounwind readonly
+
+
+; This is a simplified form of ineqn from above. It triggers some
+; different cases in the loop-unswitch code.
+
+define void @simplified_ineqn() nounwind readonly {
+entry:
+ br label %bb8.outer
+
+bb8.outer: ; preds = %bb6, %bb2, %entry
+ %x = phi i32 [ 0, %entry ], [ 0, %bb6 ], [ 1, %bb2 ] ; <i32> [#uses=1]
+ br i1 undef, label %return, label %bb2
+
+bb2: ; preds = %bb
+ switch i32 %x, label %bb6 [
+ i32 0, label %bb8.outer
+ ]
+
+bb6: ; preds = %bb2
+ br i1 undef, label %bb8.outer, label %bb2
+
+return: ; preds = %bb8, %bb
+ ret void
+}