summaryrefslogtreecommitdiff
path: root/test/Transforms
diff options
context:
space:
mode:
authorRoman Divacky <rdivacky@FreeBSD.org>2010-02-16 09:30:23 +0000
committerRoman Divacky <rdivacky@FreeBSD.org>2010-02-16 09:30:23 +0000
commit6fe5c7aa327e188b7176daa5595bbf075a6b94df (patch)
tree4cfca640904d1896e25032757a61f8959c066919 /test/Transforms
parent989df958a10f0beb90b89ccadd8351cbe51d90b1 (diff)
Notes
Diffstat (limited to 'test/Transforms')
-rw-r--r--test/Transforms/ConstProp/basictest.ll12
-rw-r--r--test/Transforms/ConstantMerge/2006-03-07-DontMergeDiffSections.ll16
-rw-r--r--test/Transforms/ConstantMerge/dont-merge.ll30
-rw-r--r--test/Transforms/DeadStoreElimination/crash.ll14
-rw-r--r--test/Transforms/GVN/crash.ll22
-rw-r--r--test/Transforms/GVN/load-pre-align.ll44
-rw-r--r--test/Transforms/GVN/rle-nonlocal.ll9
-rw-r--r--test/Transforms/IndVarSimplify/addrec-gep.ll2
-rw-r--r--test/Transforms/IndVarSimplify/shrunk-constant.ll2
-rw-r--r--test/Transforms/InstCombine/2007-03-27-PR1280.ll15
-rw-r--r--test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll19
-rw-r--r--test/Transforms/InstCombine/and2.ll6
-rw-r--r--test/Transforms/InstCombine/call.ll22
-rw-r--r--test/Transforms/InstCombine/crash.ll33
-rw-r--r--test/Transforms/InstCombine/getelementptr.ll2
-rw-r--r--test/Transforms/InstCombine/icmp.ll9
-rw-r--r--test/Transforms/InstCombine/intrinsics.ll15
-rw-r--r--test/Transforms/InstCombine/load-select.ll16
-rw-r--r--test/Transforms/InstCombine/logical-select.ll22
-rw-r--r--test/Transforms/InstCombine/objsize.ll75
-rw-r--r--test/Transforms/InstCombine/or.ll14
-rw-r--r--test/Transforms/InstCombine/signext.ll23
-rw-r--r--test/Transforms/InstCombine/sub.ll8
-rw-r--r--test/Transforms/InstCombine/vector-casts.ll16
-rw-r--r--test/Transforms/JumpThreading/crash.ll90
-rw-r--r--test/Transforms/JumpThreading/or-undef.ll69
-rw-r--r--test/Transforms/LoopStrengthReduce/2008-08-06-CmpStride.ll5
-rw-r--r--test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-0.ll13
-rw-r--r--test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll4
-rw-r--r--test/Transforms/LoopStrengthReduce/count-to-zero.ll2
-rw-r--r--test/Transforms/LoopStrengthReduce/invariant_value_first.ll2
-rw-r--r--test/Transforms/LoopStrengthReduce/invariant_value_first_arg.ll2
-rw-r--r--test/Transforms/LoopStrengthReduce/ops_after_indvar.ll2
-rw-r--r--test/Transforms/LoopStrengthReduce/pr3086.ll4
-rw-r--r--test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll2
-rw-r--r--test/Transforms/LoopStrengthReduce/remove_indvar.ll2
-rw-r--r--test/Transforms/LoopStrengthReduce/use_postinc_value_outside_loop.ll2
-rw-r--r--test/Transforms/LoopUnswitch/2006-02-14-LoopSimplifyCrash.ll1697
-rw-r--r--test/Transforms/LoopUnswitch/crash.ll (renamed from test/Transforms/LoopUnswitch/2006-02-22-UnswitchCrash.ll)17
-rw-r--r--test/Transforms/Mem2Reg/ConvertDebugInfo.ll5
-rw-r--r--test/Transforms/Reassociate/basictest.ll10
-rw-r--r--test/Transforms/SimplifyCFG/MagicPointer.ll76
-rw-r--r--test/Transforms/SimplifyLibCalls/strcpy_chk.ll12
43 files changed, 692 insertions, 1770 deletions
diff --git a/test/Transforms/ConstProp/basictest.ll b/test/Transforms/ConstProp/basictest.ll
index 2edc55dbc1f05..14580c1eab288 100644
--- a/test/Transforms/ConstProp/basictest.ll
+++ b/test/Transforms/ConstProp/basictest.ll
@@ -19,3 +19,15 @@ BB3:
ret i32 %Ret
}
+
+; PR6197
+define i1 @test2(i8* %f) nounwind {
+entry:
+ %V = icmp ne i8* blockaddress(@test2, %bb), null
+ br label %bb
+bb:
+ ret i1 %V
+
+; CHECK: @test2
+; CHECK: ret i1 true
+}
diff --git a/test/Transforms/ConstantMerge/2006-03-07-DontMergeDiffSections.ll b/test/Transforms/ConstantMerge/2006-03-07-DontMergeDiffSections.ll
deleted file mode 100644
index cea18a05efb29..0000000000000
--- a/test/Transforms/ConstantMerge/2006-03-07-DontMergeDiffSections.ll
+++ /dev/null
@@ -1,16 +0,0 @@
-; RUN: opt < %s -constmerge -S | grep foo
-; RUN: opt < %s -constmerge -S | grep bar
-
-; Don't merge constants in different sections.
-
-@G1 = internal constant i32 1, section "foo" ; <i32*> [#uses=1]
-@G2 = internal constant i32 1, section "bar" ; <i32*> [#uses=1]
-@G3 = internal constant i32 1, section "bar" ; <i32*> [#uses=1]
-
-define void @test(i32** %P1, i32** %P2, i32** %P3) {
- store i32* @G1, i32** %P1
- store i32* @G2, i32** %P2
- store i32* @G3, i32** %P3
- ret void
-}
-
diff --git a/test/Transforms/ConstantMerge/dont-merge.ll b/test/Transforms/ConstantMerge/dont-merge.ll
new file mode 100644
index 0000000000000..877cf8dc67104
--- /dev/null
+++ b/test/Transforms/ConstantMerge/dont-merge.ll
@@ -0,0 +1,30 @@
+; RUN: opt < %s -constmerge -S | FileCheck %s
+
+; Don't merge constants with specified sections.
+
+@T1G1 = internal constant i32 1, section "foo"
+@T1G2 = internal constant i32 1, section "bar"
+@T1G3 = internal constant i32 1, section "bar"
+
+; CHECK: @T1G1
+; CHECK: @T1G2
+; CHECK: @T1G3
+
+define void @test1(i32** %P1, i32** %P2, i32** %P3) {
+ store i32* @T1G1, i32** %P1
+ store i32* @T1G2, i32** %P2
+ store i32* @T1G3, i32** %P3
+ ret void
+}
+
+@T2a = internal constant i32 224
+@T2b = internal addrspace(30) constant i32 224
+
+; CHECK: @T2a
+; CHECK: @T2b
+
+define void @test2(i32** %P1, i32 addrspace(30)** %P2) {
+ store i32* @T2a, i32** %P1
+ store i32 addrspace(30)* @T2b, i32 addrspace(30)** %P2
+ ret void
+}
diff --git a/test/Transforms/DeadStoreElimination/crash.ll b/test/Transforms/DeadStoreElimination/crash.ll
index f89f8f5185c68..6d8ba71b2094d 100644
--- a/test/Transforms/DeadStoreElimination/crash.ll
+++ b/test/Transforms/DeadStoreElimination/crash.ll
@@ -41,3 +41,17 @@ bb14: ; preds = %bb4
}
declare void @llvm.memcpy.i64(i8* nocapture, i8* nocapture, i64, i32) nounwind
+
+
+; rdar://7635088
+define i32 @test3() {
+entry:
+ ret i32 0
+
+dead:
+ %P2 = getelementptr i32 *%P2, i32 52
+ %Q2 = getelementptr i32 *%Q2, i32 52
+ store i32 4, i32* %P2
+ store i32 4, i32* %Q2
+ br label %dead
+} \ No newline at end of file
diff --git a/test/Transforms/GVN/crash.ll b/test/Transforms/GVN/crash.ll
index 9167b6ec68487..4a3aa1c55a835 100644
--- a/test/Transforms/GVN/crash.ll
+++ b/test/Transforms/GVN/crash.ll
@@ -5,7 +5,7 @@
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-n8:16:32:64"
target triple = "x86_64-apple-darwin10.0"
-define i32* @peel_to_type(i8* %name, i32 %namelen, i32* %o, i32 %expected_type) nounwind ssp {
+define i32* @test1(i8* %name, i32 %namelen, i32* %o, i32 %expected_type) nounwind ssp {
entry:
br i1 undef, label %if.end13, label %while.body.preheader
@@ -69,7 +69,7 @@ declare i32* @parse_object(i8*)
@attribute_tables = external global [4 x %struct.attribute_spec*] ; <[4 x %struct.attribute_spec*]*> [#uses=2]
-define void @decl_attributes() nounwind {
+define void @test2() nounwind {
entry:
br label %bb69.i
@@ -99,7 +99,7 @@ bb66.i: ; Unreachable
@g = external global i64, align 8
-define i32* @foo() {
+define i32* @test3() {
do.end17.i:
%tmp18.i = load i7** undef
%tmp1 = bitcast i7* %tmp18.i to i8*
@@ -135,3 +135,19 @@ do.body57.i:
declare i32 @foo2()
+
+
+define i32 @test4() {
+entry:
+ ret i32 0
+
+dead:
+ %P2 = getelementptr i32 *%P2, i32 52
+ %Q2 = getelementptr i32 *%Q2, i32 52
+ store i32 4, i32* %P2
+ %A = load i32* %Q2
+ br i1 true, label %dead, label %dead2
+
+dead2:
+ ret i32 %A
+}
diff --git a/test/Transforms/GVN/load-pre-align.ll b/test/Transforms/GVN/load-pre-align.ll
new file mode 100644
index 0000000000000..3a66c0ba62fea
--- /dev/null
+++ b/test/Transforms/GVN/load-pre-align.ll
@@ -0,0 +1,44 @@
+; RUN: opt < %s -gvn -S | FileCheck %s
+
+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-n32"
+
+@p = external global i32
+
+define arm_apcscc i32 @test(i32 %n) nounwind {
+; CHECK: @test
+entry:
+ br label %for.cond
+
+; loads aligned greater than the memory should not be moved past conditionals
+; CHECK-NOT: load
+; CHECK: br i1
+
+for.cond:
+ %i.0 = phi i32 [ 0, %entry ], [ %indvar.next, %for.inc ]
+ %cmp = icmp slt i32 %i.0, %n
+ br i1 %cmp, label %for.body, label %for.cond.for.end_crit_edge
+
+for.cond.for.end_crit_edge:
+; ...but PRE can still move the load out of for.end to here.
+; CHECK: for.cond.for.end_crit_edge:
+; CHECK-NEXT: load
+ br label %for.end
+
+for.body:
+ %tmp3 = load i32* @p, align 8
+ %dec = add i32 %tmp3, -1
+ store i32 %dec, i32* @p
+ %cmp6 = icmp slt i32 %dec, 0
+ br i1 %cmp6, label %for.body.for.end_crit_edge, label %for.inc
+
+for.body.for.end_crit_edge:
+ br label %for.end
+
+for.inc:
+ %indvar.next = add i32 %i.0, 1
+ br label %for.cond
+
+for.end:
+ %tmp9 = load i32* @p, align 8
+ ret i32 %tmp9
+}
diff --git a/test/Transforms/GVN/rle-nonlocal.ll b/test/Transforms/GVN/rle-nonlocal.ll
index 51b89867a15a8..5c73dad399e69 100644
--- a/test/Transforms/GVN/rle-nonlocal.ll
+++ b/test/Transforms/GVN/rle-nonlocal.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -gvn -S | grep {%DEAD = phi i32. }
+; RUN: opt < %s -gvn -S | FileCheck %s
define i32 @main(i32** %p) {
block1:
@@ -13,7 +13,12 @@ block3:
br label %block4
block4:
+; CHECK-NOT: %existingPHI = phi
+; CHECK: %DEAD = phi
+ %existingPHI = phi i32* [ %a, %block2 ], [ %b, %block3 ]
%DEAD = load i32** %p
%c = load i32* %DEAD
- ret i32 %c
+ %d = load i32* %existingPHI
+ %e = add i32 %c, %d
+ ret i32 %e
}
diff --git a/test/Transforms/IndVarSimplify/addrec-gep.ll b/test/Transforms/IndVarSimplify/addrec-gep.ll
index 9e4273491e400..345f666c3b2ea 100644
--- a/test/Transforms/IndVarSimplify/addrec-gep.ll
+++ b/test/Transforms/IndVarSimplify/addrec-gep.ll
@@ -25,7 +25,7 @@ bb1: ; preds = %bb2, %bb.nph
%j.01 = phi i64 [ %tmp9, %bb2 ], [ 0, %bb.nph ] ; <i64> [#uses=3]
%tmp3 = add i64 %j.01, %tmp1 ; <i64> [#uses=1]
%tmp4 = add i64 %j.01, %tmp2 ; <i64> [#uses=1]
- %z0 = add i64 %tmp4, 5203
+ %z0 = add i64 %tmp3, 5203
%tmp5 = getelementptr double* %p, i64 %z0 ; <double*> [#uses=1]
%tmp6 = load double* %tmp5, align 8 ; <double> [#uses=1]
%tmp7 = fdiv double %tmp6, 2.100000e+00 ; <double> [#uses=1]
diff --git a/test/Transforms/IndVarSimplify/shrunk-constant.ll b/test/Transforms/IndVarSimplify/shrunk-constant.ll
index 8003fd3671050..271f8edf1980d 100644
--- a/test/Transforms/IndVarSimplify/shrunk-constant.ll
+++ b/test/Transforms/IndVarSimplify/shrunk-constant.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -scalar-evolution -analyze -disable-output \
+; RUN: opt < %s -scalar-evolution -analyze \
; RUN: | grep {\\--> (zext i4 {-7,+,-8}<%loop> to i32)}
define fastcc void @foo() nounwind {
diff --git a/test/Transforms/InstCombine/2007-03-27-PR1280.ll b/test/Transforms/InstCombine/2007-03-27-PR1280.ll
deleted file mode 100644
index 7700c7dd8a698..0000000000000
--- a/test/Transforms/InstCombine/2007-03-27-PR1280.ll
+++ /dev/null
@@ -1,15 +0,0 @@
-; PR1280 - we should be able to reduce this function to a trunc/sext but it
-; would involve using a bit width (24) that doesn't match a size that
-; the back end can handle. This test makes sure that such a transform
-; is not done. It should be removed when code gen supports "funny"
-; bit widths.
-
-; RUN: opt < %s -instcombine -S | grep {add i49.*-8388608}
-
-define i49 @test5(i49 %x) {
- ;; If we have ADD(XOR(AND(X, 0xFF), 0x80), 0xF..F80), it's a sext.
- %X = and i49 %x, 16777215 ; 0x0000000ffffff
- %tmp.2 = xor i49 %X, 8388608 ; 0x0000000800000
- %tmp.4 = add i49 %tmp.2, -8388608 ; 0x1FFFFFF800000
- ret i49 %tmp.4
-}
diff --git a/test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll b/test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll
new file mode 100644
index 0000000000000..4ab9bf0c3f5f4
--- /dev/null
+++ b/test/Transforms/InstCombine/2010-01-28-NegativeSRem.ll
@@ -0,0 +1,19 @@
+; RUN: opt < %s -instcombine -S | FileCheck %s
+; PR6165
+
+define i32 @f() {
+entry:
+ br label %BB1
+
+BB1: ; preds = %BB1, %entry
+; CHECK: BB1:
+ %x = phi i32 [ -29, %entry ], [ 0, %BB1 ] ; <i32> [#uses=2]
+ %rem = srem i32 %x, 2 ; <i32> [#uses=1]
+ %t = icmp eq i32 %rem, -1 ; <i1> [#uses=1]
+ br i1 %t, label %BB2, label %BB1
+; CHECK-NOT: br i1 false
+
+BB2: ; preds = %BB1
+; CHECK: BB2:
+ ret i32 %x
+}
diff --git a/test/Transforms/InstCombine/and2.ll b/test/Transforms/InstCombine/and2.ll
index 0af9bfaff3941..a5a6574e9f46b 100644
--- a/test/Transforms/InstCombine/and2.ll
+++ b/test/Transforms/InstCombine/and2.ll
@@ -1,5 +1,4 @@
-; RUN: opt < %s -instcombine -S | not grep and
-
+; RUN: opt < %s -instcombine -S | FileCheck %s
; PR1738
define i1 @test1(double %X, double %Y) {
@@ -7,6 +6,5 @@ define i1 @test1(double %X, double %Y) {
%tmp13 = fcmp ord double %Y, 0.000000e+00
%bothcond = and i1 %tmp13, %tmp9
ret i1 %bothcond
+; CHECK: fcmp ord double %Y, %X
}
-
-
diff --git a/test/Transforms/InstCombine/call.ll b/test/Transforms/InstCombine/call.ll
index 05c063d34be26..dd65b969737d2 100644
--- a/test/Transforms/InstCombine/call.ll
+++ b/test/Transforms/InstCombine/call.ll
@@ -75,7 +75,7 @@ define i32 @test5() {
declare i32 @test6a(i32)
define i32 @test6() {
- %X = call i32 bitcast (i32 (i32)* @test6a to i32 ()*)( ) ; <i32> [#uses=1]
+ %X = call i32 bitcast (i32 (i32)* @test6a to i32 ()*)( )
ret i32 %X
; CHECK: %X1 = call i32 @test6a(i32 0)
; CHECK: ret i32 %X1
@@ -96,3 +96,23 @@ define void @test7() {
}
+; rdar://7590304
+declare void @test8a()
+
+define i8* @test8() {
+ invoke arm_apcscc void @test8a()
+ to label %invoke.cont unwind label %try.handler
+
+invoke.cont: ; preds = %entry
+ unreachable
+
+try.handler: ; preds = %entry
+ ret i8* null
+}
+
+; Don't turn this into "unreachable": the callee and caller don't agree in
+; calling conv, but the implementation of test8a may actually end up using the
+; right calling conv.
+; CHECK: @test8() {
+; CHECK-NEXT: invoke arm_apcscc void @test8a()
+
diff --git a/test/Transforms/InstCombine/crash.ll b/test/Transforms/InstCombine/crash.ll
index 732a88262178d..2faa5392d4ba6 100644
--- a/test/Transforms/InstCombine/crash.ll
+++ b/test/Transforms/InstCombine/crash.ll
@@ -204,3 +204,36 @@ declare i32 @llvm.eh.selector(i8*, i8*, ...) nounwind
declare void @_ZSt9terminatev()
declare void @_Unwind_Resume_or_Rethrow(i8*)
+
+
+
+; rdar://7590304
+define i8* @test10(i8* %self, i8* %tmp3) {
+entry:
+ store i1 true, i1* undef
+ store i1 true, i1* undef
+ invoke arm_apcscc void @test10a()
+ to label %invoke.cont unwind label %try.handler ; <i8*> [#uses=0]
+
+invoke.cont: ; preds = %entry
+ unreachable
+
+try.handler: ; preds = %entry
+ ret i8* %self
+}
+
+define void @test10a() {
+ ret void
+}
+
+
+; PR6193
+define i32 @test11(i32 %aMaskWidth, i8 %aStride) nounwind {
+entry:
+ %conv41 = sext i8 %aStride to i32
+ %neg = xor i32 %conv41, -1
+ %and42 = and i32 %aMaskWidth, %neg
+ %and47 = and i32 130, %conv41
+ %or = or i32 %and42, %and47
+ ret i32 %or
+}
diff --git a/test/Transforms/InstCombine/getelementptr.ll b/test/Transforms/InstCombine/getelementptr.ll
index de325f64021fe..f0bee4ea2eb83 100644
--- a/test/Transforms/InstCombine/getelementptr.ll
+++ b/test/Transforms/InstCombine/getelementptr.ll
@@ -246,7 +246,7 @@ bc0:
store i32 0, i32* %tmp53
ret void
; CHECK: @test24
-; CHECK: store i32 0, i32* getelementptr (%"java/lang/StringBuffer"* null, i32 0, i32 1)
+; CHECK: store i32 0, i32* getelementptr (%"java/lang/StringBuffer"* null, i64 0, i32 1)
}
define void @test25() {
diff --git a/test/Transforms/InstCombine/icmp.ll b/test/Transforms/InstCombine/icmp.ll
index 79fa220752b55..c2234a10e5b7a 100644
--- a/test/Transforms/InstCombine/icmp.ll
+++ b/test/Transforms/InstCombine/icmp.ll
@@ -112,3 +112,12 @@ define i1 @test11(i32 %x) {
; CHECK: ret i1 true
}
+; PR6195
+define i1 @test12(i1 %A) {
+ %S = select i1 %A, i64 -4294967295, i64 8589934591
+ %B = icmp ne i64 bitcast (<2 x i32> <i32 1, i32 -1> to i64), %S
+ ret i1 %B
+; CHECK: @test12
+; CHECK-NEXT: %B = select i1
+; CHECK-NEXT: ret i1 %B
+}
diff --git a/test/Transforms/InstCombine/intrinsics.ll b/test/Transforms/InstCombine/intrinsics.ll
index c63475c2bd761..08dcfa731a94f 100644
--- a/test/Transforms/InstCombine/intrinsics.ll
+++ b/test/Transforms/InstCombine/intrinsics.ll
@@ -144,3 +144,18 @@ entry:
; CHECK-NEXT: %pop.cmp = icmp eq i32 %b, 0
; CHECK-NEXT: volatile store i1 %pop.cmp, i1* %c
}
+
+
+define i32 @cttz_simplify1(i32 %x) nounwind readnone ssp {
+ %tmp1 = tail call i32 @llvm.ctlz.i32(i32 %x) ; <i32> [#uses=1]
+ %shr3 = lshr i32 %tmp1, 5 ; <i32> [#uses=1]
+ ret i32 %shr3
+
+; CHECK: @cttz_simplify1
+; CHECK: icmp eq i32 %x, 0
+; CHECK-NEXT: zext i1
+; CHECK-NEXT: ret i32
+}
+
+declare i32 @llvm.ctlz.i32(i32) nounwind readnone
+
diff --git a/test/Transforms/InstCombine/load-select.ll b/test/Transforms/InstCombine/load-select.ll
new file mode 100644
index 0000000000000..f3d83dc8210ec
--- /dev/null
+++ b/test/Transforms/InstCombine/load-select.ll
@@ -0,0 +1,16 @@
+; RUN: opt < %s -instcombine -S | FileCheck %s
+
+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-n32"
+
+@a = constant [2 x i32] [i32 3, i32 6] ; <[2 x i32]*> [#uses=2]
+
+define i32 @b(i32 %y) nounwind readonly {
+; CHECK: @b
+; CHECK-NOT: load
+; CHECK: ret i32
+entry:
+ %0 = icmp eq i32 %y, 0 ; <i1> [#uses=1]
+ %storemerge = select i1 %0, i32* getelementptr inbounds ([2 x i32]* @a, i32 0, i32 1), i32* getelementptr inbounds ([2 x i32]* @a, i32 0, i32 0) ; <i32*> [#uses=1]
+ %1 = load i32* %storemerge, align 4 ; <i32> [#uses=1]
+ ret i32 %1
+}
diff --git a/test/Transforms/InstCombine/logical-select.ll b/test/Transforms/InstCombine/logical-select.ll
index ece8bc317e5a7..bb59817a4f698 100644
--- a/test/Transforms/InstCombine/logical-select.ll
+++ b/test/Transforms/InstCombine/logical-select.ll
@@ -1,7 +1,5 @@
-; RUN: opt < %s -instcombine -S > %t
-; RUN: grep select %t | count 5
-; RUN: not grep and %t
-; RUN: not grep or %t
+; RUN: opt < %s -instcombine -S | FileCheck %s
+
define i32 @foo(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
%e = icmp slt i32 %a, %b
@@ -11,6 +9,9 @@ define i32 @foo(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
%i = and i32 %d, %h
%j = or i32 %g, %i
ret i32 %j
+; CHECK: %e = icmp slt i32 %a, %b
+; CHECK: %j = select i1 %e, i32 %c, i32 %d
+; CHECK: ret i32 %j
}
define i32 @bar(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
%e = icmp slt i32 %a, %b
@@ -20,7 +21,11 @@ define i32 @bar(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
%i = and i32 %d, %h
%j = or i32 %i, %g
ret i32 %j
+; CHECK: %e = icmp slt i32 %a, %b
+; CHECK: %j = select i1 %e, i32 %c, i32 %d
+; CHECK: ret i32 %j
}
+
define i32 @goo(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
entry:
%0 = icmp slt i32 %a, %b
@@ -30,6 +35,9 @@ entry:
%2 = and i32 %not, %d
%3 = or i32 %1, %2
ret i32 %3
+; CHECK: %0 = icmp slt i32 %a, %b
+; CHECK: %1 = select i1 %0, i32 %c, i32 %d
+; CHECK: ret i32 %1
}
define i32 @poo(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
entry:
@@ -40,6 +48,9 @@ entry:
%2 = and i32 %iftmp, %d
%3 = or i32 %1, %2
ret i32 %3
+; CHECK: %0 = icmp slt i32 %a, %b
+; CHECK: %1 = select i1 %0, i32 %c, i32 %d
+; CHECK: ret i32 %1
}
define i32 @par(i32 %a, i32 %b, i32 %c, i32 %d) nounwind {
@@ -51,4 +62,7 @@ entry:
%2 = and i32 %not, %d
%3 = or i32 %1, %2
ret i32 %3
+; CHECK: %0 = icmp slt i32 %a, %b
+; CHECK: %1 = select i1 %0, i32 %c, i32 %d
+; CHECK: ret i32 %1
}
diff --git a/test/Transforms/InstCombine/objsize.ll b/test/Transforms/InstCombine/objsize.ll
new file mode 100644
index 0000000000000..dbc7d31c3925e
--- /dev/null
+++ b/test/Transforms/InstCombine/objsize.ll
@@ -0,0 +1,75 @@
+; Test a pile of objectsize bounds checking.
+; RUN: opt < %s -instcombine -S | FileCheck %s
+; We need target data to get the sizes of the arrays and structures.
+target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
+
+@a = private global [60 x i8] zeroinitializer, align 1 ; <[60 x i8]*>
+@.str = private constant [8 x i8] c"abcdefg\00" ; <[8 x i8]*>
+
+define i32 @foo() nounwind {
+; CHECK: @foo
+; CHECK-NEXT: ret i32 60
+ %1 = call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([60 x i8]* @a, i32 0, i32 0), i1 false)
+ ret i32 %1
+}
+
+define i8* @bar() nounwind {
+; CHECK: @bar
+entry:
+ %retval = alloca i8*
+ %0 = call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([60 x i8]* @a, i32 0, i32 0), i1 false)
+ %cmp = icmp ne i32 %0, -1
+; CHECK: br i1 true
+ br i1 %cmp, label %cond.true, label %cond.false
+
+cond.true:
+ %1 = load i8** %retval;
+ ret i8* %1;
+
+cond.false:
+ %2 = load i8** %retval;
+ ret i8* %2;
+}
+
+define i32 @f() nounwind {
+; CHECK: @f
+; CHECK-NEXT: ret i32 0
+ %1 = call i32 @llvm.objectsize.i32(i8* getelementptr ([60 x i8]* @a, i32 1, i32 0), i1 false)
+ ret i32 %1
+}
+
+@window = external global [0 x i8]
+
+define i1 @baz() nounwind {
+; CHECK: @baz
+; CHECK-NEXT: ret i1 true
+ %1 = tail call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([0 x i8]* @window, i32 0, i32 0), i1 false)
+ %2 = icmp eq i32 %1, -1
+ ret i1 %2
+}
+
+define void @test1(i8* %q, i32 %x) nounwind noinline {
+; CHECK: @test1
+; CHECK: objectsize.i32
+entry:
+ %0 = call i32 @llvm.objectsize.i32(i8* getelementptr inbounds ([0 x i8]* @window, i32 0, i32 10), i1 false) ; <i64> [#uses=1]
+ %1 = icmp eq i32 %0, -1 ; <i1> [#uses=1]
+ br i1 %1, label %"47", label %"46"
+
+"46": ; preds = %entry
+ unreachable
+
+"47": ; preds = %entry
+ unreachable
+}
+
+@.str5 = private constant [9 x i32] [i32 97, i32 98, i32 99, i32 100, i32 0, i32
+ 101, i32 102, i32 103, i32 0], align 4 ;
+define i32 @test2() nounwind {
+; CHECK: @test2
+; CHECK-NEXT: ret i32 34
+ %1 = call i32 @llvm.objectsize.i32(i8* getelementptr (i8* bitcast ([9 x i32]* @.str5 to i8*), i32 2), i1 false)
+ ret i32 %1
+}
+
+declare i32 @llvm.objectsize.i32(i8*, i1) nounwind readonly \ No newline at end of file
diff --git a/test/Transforms/InstCombine/or.ll b/test/Transforms/InstCombine/or.ll
index 2040f3da8f9ce..189be1050fbd8 100644
--- a/test/Transforms/InstCombine/or.ll
+++ b/test/Transforms/InstCombine/or.ll
@@ -336,3 +336,17 @@ define i64 @test31(i64 %A) nounwind readnone ssp noredzone {
; CHECK-NEXT: %F = and i64 %bitfield, 4294941946
; CHECK-NEXT: ret i64 %F
}
+
+define <4 x i32> @test32(<4 x i1> %and.i1352, <4 x i32> %vecinit6.i176, <4 x i32> %vecinit6.i191) {
+ %and.i135 = sext <4 x i1> %and.i1352 to <4 x i32> ; <<4 x i32>> [#uses=2]
+ %and.i129 = and <4 x i32> %vecinit6.i176, %and.i135 ; <<4 x i32>> [#uses=1]
+ %neg.i = xor <4 x i32> %and.i135, <i32 -1, i32 -1, i32 -1, i32 -1> ; <<4 x i32>> [#uses=1]
+ %and.i = and <4 x i32> %vecinit6.i191, %neg.i ; <<4 x i32>> [#uses=1]
+ %or.i = or <4 x i32> %and.i, %and.i129 ; <<4 x i32>> [#uses=1]
+ ret <4 x i32> %or.i
+; Don't turn this into a vector select until codegen matures to handle them
+; better.
+; CHECK: @test32
+; CHECK: or <4 x i32> %and.i, %and.i129
+}
+
diff --git a/test/Transforms/InstCombine/signext.ll b/test/Transforms/InstCombine/signext.ll
index 1c52b62df4e0b..49384d6275e84 100644
--- a/test/Transforms/InstCombine/signext.ll
+++ b/test/Transforms/InstCombine/signext.ll
@@ -8,8 +8,8 @@ define i32 @test1(i32 %x) {
%tmp.3 = add i32 %tmp.2, 32768 ; <i32> [#uses=1]
ret i32 %tmp.3
; CHECK: @test1
-; CHECK: %sext1 = shl i32 %x, 16
-; CHECK: %tmp.3 = ashr i32 %sext1, 16
+; CHECK: %sext = shl i32 %x, 16
+; CHECK: %tmp.3 = ashr i32 %sext, 16
; CHECK: ret i32 %tmp.3
}
@@ -19,8 +19,8 @@ define i32 @test2(i32 %x) {
%tmp.3 = add i32 %tmp.2, -32768 ; <i32> [#uses=1]
ret i32 %tmp.3
; CHECK: @test2
-; CHECK: %sext1 = shl i32 %x, 16
-; CHECK: %tmp.3 = ashr i32 %sext1, 16
+; CHECK: %sext = shl i32 %x, 16
+; CHECK: %tmp.3 = ashr i32 %sext, 16
; CHECK: ret i32 %tmp.3
}
@@ -50,8 +50,8 @@ define i32 @test5(i32 %x) {
%tmp.3 = add i32 %tmp.2, -128 ; <i32> [#uses=1]
ret i32 %tmp.3
; CHECK: @test5
-; CHECK: %sext1 = shl i32 %x, 24
-; CHECK: %tmp.3 = ashr i32 %sext1, 24
+; CHECK: %sext = shl i32 %x, 24
+; CHECK: %tmp.3 = ashr i32 %sext, 24
; CHECK: ret i32 %tmp.3
}
@@ -74,3 +74,14 @@ define i32 @test7(i16 %P) {
; CHECK: %tmp.5 = sext i16 %P to i32
; CHECK: ret i32 %tmp.5
}
+
+define i32 @test8(i32 %x) nounwind readnone {
+entry:
+ %shr = lshr i32 %x, 5 ; <i32> [#uses=1]
+ %xor = xor i32 %shr, 67108864 ; <i32> [#uses=1]
+ %sub = add i32 %xor, -67108864 ; <i32> [#uses=1]
+ ret i32 %sub
+; CHECK: @test8
+; CHECK: %sub = ashr i32 %x, 5
+; CHECK: ret i32 %sub
+}
diff --git a/test/Transforms/InstCombine/sub.ll b/test/Transforms/InstCombine/sub.ll
index fa0322a44e80d..29bd7be2ff84c 100644
--- a/test/Transforms/InstCombine/sub.ll
+++ b/test/Transforms/InstCombine/sub.ll
@@ -272,4 +272,12 @@ define i64 @test25(i8* %P, i64 %A){
; CHECK-NEXT: ret i64
}
+define i32 @test26(i32 %x) {
+ %shl = shl i32 3, %x
+ %neg = sub i32 0, %shl
+ ret i32 %neg
+; CHECK: @test26
+; CHECK-NEXT: shl i32 -3
+; CHECK-NEXT: ret i32
+}
diff --git a/test/Transforms/InstCombine/vector-casts.ll b/test/Transforms/InstCombine/vector-casts.ll
index 470d48547532f..24bd04dcb2db0 100644
--- a/test/Transforms/InstCombine/vector-casts.ll
+++ b/test/Transforms/InstCombine/vector-casts.ll
@@ -51,6 +51,22 @@ entry:
}
+; rdar://7434900
+define <2 x i64> @test5(<4 x float> %a, <4 x float> %b) nounwind readnone {
+entry:
+ %cmp = fcmp ult <4 x float> %a, zeroinitializer
+ %sext = sext <4 x i1> %cmp to <4 x i32>
+ %cmp4 = fcmp ult <4 x float> %b, zeroinitializer
+ %sext5 = sext <4 x i1> %cmp4 to <4 x i32>
+ %and = and <4 x i32> %sext, %sext5
+ %conv = bitcast <4 x i32> %and to <2 x i64>
+ ret <2 x i64> %conv
+
+; CHECK: @test5
+; CHECK: sext <4 x i1> %cmp to <4 x i32>
+; CHECK: sext <4 x i1> %cmp4 to <4 x i32>
+}
+
define void @convert(<2 x i32>* %dst.addr, <2 x i64> %src) nounwind {
entry:
diff --git a/test/Transforms/JumpThreading/crash.ll b/test/Transforms/JumpThreading/crash.ll
index 361ec6cfb5a13..c65fd1014be4d 100644
--- a/test/Transforms/JumpThreading/crash.ll
+++ b/test/Transforms/JumpThreading/crash.ll
@@ -234,3 +234,93 @@ bb2:
return:
ret void
}
+
+; PR6119
+define i32 @test8(i32 %action) nounwind {
+entry:
+ switch i32 %action, label %lor.rhs [
+ i32 1, label %if.then
+ i32 0, label %lor.end
+ ]
+
+if.then: ; preds = %for.cond, %lor.end, %entry
+ ret i32 undef
+
+lor.rhs: ; preds = %entry
+ br label %lor.end
+
+lor.end: ; preds = %lor.rhs, %entry
+ %cmp103 = xor i1 undef, undef ; <i1> [#uses=1]
+ br i1 %cmp103, label %for.cond, label %if.then
+
+for.cond: ; preds = %for.body, %lor.end
+ br i1 undef, label %if.then, label %for.body
+
+for.body: ; preds = %for.cond
+ br label %for.cond
+}
+
+; PR6119
+define i32 @test9(i32 %action) nounwind {
+entry:
+ switch i32 %action, label %lor.rhs [
+ i32 1, label %if.then
+ i32 0, label %lor.end
+ ]
+
+if.then: ; preds = %for.cond, %lor.end, %entry
+ ret i32 undef
+
+lor.rhs: ; preds = %entry
+ br label %lor.end
+
+lor.end: ; preds = %lor.rhs, %entry
+ %0 = phi i1 [ undef, %lor.rhs ], [ true, %entry ] ; <i1> [#uses=1]
+ %cmp103 = xor i1 undef, %0 ; <i1> [#uses=1]
+ br i1 %cmp103, label %for.cond, label %if.then
+
+for.cond: ; preds = %for.body, %lor.end
+ br i1 undef, label %if.then, label %for.body
+
+for.body: ; preds = %for.cond
+ br label %for.cond
+}
+
+; PR6119
+define i32 @test10(i32 %action, i32 %type) nounwind {
+entry:
+ %cmp2 = icmp eq i32 %type, 0 ; <i1> [#uses=1]
+ switch i32 %action, label %lor.rhs [
+ i32 1, label %if.then
+ i32 0, label %lor.end
+ ]
+
+if.then: ; preds = %for.cond, %lor.end, %entry
+ ret i32 undef
+
+lor.rhs: ; preds = %entry
+ %cmp101 = icmp eq i32 %action, 2 ; <i1> [#uses=1]
+ br label %lor.end
+
+lor.end: ; preds = %lor.rhs, %entry
+ %0 = phi i1 [ %cmp101, %lor.rhs ], [ true, %entry ] ; <i1> [#uses=1]
+ %cmp103 = xor i1 %cmp2, %0 ; <i1> [#uses=1]
+ br i1 %cmp103, label %for.cond, label %if.then
+
+for.cond: ; preds = %for.body, %lor.end
+ br i1 undef, label %if.then, label %for.body
+
+for.body: ; preds = %for.cond
+ br label %for.cond
+}
+
+
+; PR6305
+define void @test11() nounwind {
+entry:
+ br label %A
+
+A: ; preds = %entry
+ call void undef(i64 ptrtoint (i8* blockaddress(@test11, %A) to i64)) nounwind
+ unreachable
+}
diff --git a/test/Transforms/JumpThreading/or-undef.ll b/test/Transforms/JumpThreading/or-undef.ll
new file mode 100644
index 0000000000000..6e359925b6c6a
--- /dev/null
+++ b/test/Transforms/JumpThreading/or-undef.ll
@@ -0,0 +1,69 @@
+; RUN: opt -jump-threading -S %s | FileCheck %s
+; rdar://7620633
+
+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-n8:16:32:64"
+target triple = "x86_64-apple-darwin11.0"
+
+define void @test1(i8* %args, i32 %from_tty) nounwind optsize ssp {
+entry:
+ %tmp = call i8* @f3(void (i8*)* null, i8* null) nounwind ; <i8*> [#uses=1]
+ %tmp1 = icmp eq i8* %args, null ; <i1> [#uses=1]
+ br i1 %tmp1, label %bb2, label %bb
+
+; CHECK: entry:
+; CHECK-NEXT: %tmp = call i8* @f3
+; CHECK-NEXT: %tmp1 = icmp eq i8* %args, null
+; CHECK-NEXT: br i1 %tmp1, label %bb7, label %bb
+
+bb: ; preds = %entry
+ %tmp2 = call noalias i8** @buildargv(i8* %args) nounwind ; <i8**> [#uses=4]
+ %tmp3 = icmp eq i8** %tmp2, null ; <i1> [#uses=1]
+ br i1 %tmp3, label %bb2, label %bb1
+
+bb1: ; preds = %bb
+ call void @f2(i8** %tmp2) nounwind
+ br label %bb2
+
+bb2: ; preds = %bb1, %bb, %entry
+ %argv.0 = phi i8** [ %tmp2, %bb1 ], [ %tmp2, %bb ], [ undef, %entry ] ; <i8**> [#uses=4]
+ %tmp5 = icmp eq i8* %args, null ; <i1> [#uses=1]
+ %tmp6 = icmp eq i8** %argv.0, null ; <i1> [#uses=1]
+ %tmp7 = or i1 %tmp5, %tmp6 ; <i1> [#uses=1]
+ br i1 %tmp7, label %bb7, label %bb5
+
+bb5: ; preds = %bb2
+ %tmp8 = load i8** %argv.0, align 8 ; <i8*> [#uses=1]
+ %tmp9 = icmp eq i8* %tmp8, null ; <i1> [#uses=1]
+ br i1 %tmp9, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ %tmp10 = load i8** %argv.0, align 8 ; <i8*> [#uses=1]
+ %tmp11 = load i8* %tmp10, align 1 ; <i8> [#uses=1]
+ %tmp12 = icmp eq i8 %tmp11, 0 ; <i1> [#uses=1]
+ br i1 %tmp12, label %bb7, label %bb8
+
+bb7: ; preds = %bb6, %bb5, %bb2
+ call void @f1() nounwind optsize ssp
+ br label %bb9
+
+bb8: ; preds = %bb6
+ %tmp13 = load i8** %argv.0, align 8 ; <i8*> [#uses=1]
+ %tmp14 = call i64 @f5(i8* %tmp13) nounwind ; <i64> [#uses=0]
+ br label %bb9
+
+bb9: ; preds = %bb8, %bb7
+ call void @f4(i8* %tmp) nounwind
+ ret void
+}
+
+declare noalias i8** @buildargv(i8*)
+
+declare void @f2(i8**)
+
+declare void @f4(i8*)
+
+declare i8* @f3(void (i8*)*, i8*)
+
+declare void @f1()
+
+declare i64 @f5(i8*)
diff --git a/test/Transforms/LoopStrengthReduce/2008-08-06-CmpStride.ll b/test/Transforms/LoopStrengthReduce/2008-08-06-CmpStride.ll
index 7c7a21c013f26..99cb8569b3f42 100644
--- a/test/Transforms/LoopStrengthReduce/2008-08-06-CmpStride.ll
+++ b/test/Transforms/LoopStrengthReduce/2008-08-06-CmpStride.ll
@@ -1,5 +1,4 @@
-; RUN: opt < %s -loop-reduce -S | grep ugt
-; PR2535
+; RUN: llc -march=x86-64 < %s -o - | grep {cmpl \\$\[1\], %}
@.str = internal constant [4 x i8] c"%d\0A\00"
@@ -16,7 +15,7 @@ forbody:
%add166 = or i32 %mul15, 1 ; <i32> [#uses=1] *
call i32 (i8*, ...)* @printf( i8* noalias getelementptr ([4 x i8]* @.str, i32 0, i32 0), i32 %add166 ) nounwind
%inc = add i32 %i.0, 1 ; <i32> [#uses=3]
- %cmp = icmp ult i32 %inc, 1027 ; <i1> [#uses=1]
+ %cmp = icmp ne i32 %inc, 1027 ; <i1> [#uses=1]
br i1 %cmp, label %forbody, label %afterfor
afterfor: ; preds = %forcond
diff --git a/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-0.ll b/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-0.ll
index 36941ad6d36c0..1f7f6ecafafb2 100644
--- a/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-0.ll
+++ b/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-0.ll
@@ -1,10 +1,15 @@
-; RUN: llc %s -o - --x86-asm-syntax=att | grep {cmpl \$4}
+; RUN: llc < %s -o - | FileCheck %s
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-apple-darwin9"
-; This is like change-compare-stride-trickiness-1.ll except the comparison
-; happens before the relevant use, so the comparison stride can't be
-; easily changed.
+; The comparison happens before the relevant use, but it can still be rewritten
+; to compare with zero.
+
+; CHECK: foo:
+; CHECK: align
+; CHECK: incl %eax
+; CHECK-NEXT: decl %ecx
+; CHECK-NEXT: jne
define void @foo() nounwind {
entry:
diff --git a/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll b/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll
index ea8a259ecd856..cb638092ea1a3 100644
--- a/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll
+++ b/test/Transforms/LoopStrengthReduce/change-compare-stride-trickiness-1.ll
@@ -1,10 +1,12 @@
-; RUN: llc %s -o - --x86-asm-syntax=att | grep {cmp. \$8}
+; RUN: llc %s -o - --x86-asm-syntax=att | grep {cmp. \$10}
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-apple-darwin9"
; The comparison happens after the relevant use, so the stride can easily
; be changed. The comparison can be done in a narrower mode than the
; induction variable.
+; TODO: By making the first store post-increment as well, the loop setup
+; could be made simpler.
define void @foo() nounwind {
entry:
diff --git a/test/Transforms/LoopStrengthReduce/count-to-zero.ll b/test/Transforms/LoopStrengthReduce/count-to-zero.ll
index 8cc3b5c10347d..feb79f8a0c71b 100644
--- a/test/Transforms/LoopStrengthReduce/count-to-zero.ll
+++ b/test/Transforms/LoopStrengthReduce/count-to-zero.ll
@@ -19,7 +19,7 @@ bb3: ; preds = %bb1
%tmp4 = add i32 %c_addr.1, -1 ; <i32> [#uses=1]
%c_addr.1.be = select i1 %tmp2, i32 %tmp3, i32 %tmp4 ; <i32> [#uses=1]
%indvar.next = add i32 %indvar, 1 ; <i32> [#uses=1]
-; CHECK: sub i32 %lsr.iv, 1
+; CHECK: add i32 %lsr.iv, -1
br label %bb6
bb6: ; preds = %bb3, %entry
diff --git a/test/Transforms/LoopStrengthReduce/invariant_value_first.ll b/test/Transforms/LoopStrengthReduce/invariant_value_first.ll
index f86638b0a8290..4094e9c7e4d9f 100644
--- a/test/Transforms/LoopStrengthReduce/invariant_value_first.ll
+++ b/test/Transforms/LoopStrengthReduce/invariant_value_first.ll
@@ -1,5 +1,5 @@
; Check that the index of 'P[outer]' is pulled out of the loop.
-; RUN: opt < %s -loop-reduce -S | \
+; RUN: opt < %s -loop-reduce -S -default-data-layout="e-p:32:32:32" | \
; RUN: not grep {getelementptr.*%outer.*%INDVAR}
declare i1 @pred()
diff --git a/test/Transforms/LoopStrengthReduce/invariant_value_first_arg.ll b/test/Transforms/LoopStrengthReduce/invariant_value_first_arg.ll
index 37acf0f61dbab..e2aed78c32e3c 100644
--- a/test/Transforms/LoopStrengthReduce/invariant_value_first_arg.ll
+++ b/test/Transforms/LoopStrengthReduce/invariant_value_first_arg.ll
@@ -1,5 +1,5 @@
; Check that the index of 'P[outer]' is pulled out of the loop.
-; RUN: opt < %s -loop-reduce -S | \
+; RUN: opt < %s -loop-reduce -S -default-data-layout="e-p:32:32:32" | \
; RUN: not grep {getelementptr.*%outer.*%INDVAR}
declare i1 @pred()
diff --git a/test/Transforms/LoopStrengthReduce/ops_after_indvar.ll b/test/Transforms/LoopStrengthReduce/ops_after_indvar.ll
index a032cc97355af..410d88f672b54 100644
--- a/test/Transforms/LoopStrengthReduce/ops_after_indvar.ll
+++ b/test/Transforms/LoopStrengthReduce/ops_after_indvar.ll
@@ -1,7 +1,7 @@
; Check that this test makes INDVAR and related stuff dead, because P[indvar]
; gets reduced, making INDVAR dead.
-; RUN: opt < %s -loop-reduce -S | not grep INDVAR
+; RUN: opt < %s -loop-reduce -S -default-data-layout="e-p:32:32:32" | not grep INDVAR
declare i1 @pred()
diff --git a/test/Transforms/LoopStrengthReduce/pr3086.ll b/test/Transforms/LoopStrengthReduce/pr3086.ll
index 9a5911f1df492..599633a11feee 100644
--- a/test/Transforms/LoopStrengthReduce/pr3086.ll
+++ b/test/Transforms/LoopStrengthReduce/pr3086.ll
@@ -1,5 +1,5 @@
-; RUN: opt < %s -loop-reduce -disable-output
-; RUN: opt < %s -analyze -scalar-evolution -disable-output
+; RUN: opt < %s -loop-reduce
+; RUN: opt < %s -analyze -scalar-evolution
; PR 3086
%struct.Cls = type { i32, i8, [2 x %struct.Cls*], [2 x %struct.Lit*] }
diff --git a/test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll b/test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll
index b829b4738bc31..8959c17740990 100644
--- a/test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll
+++ b/test/Transforms/LoopStrengthReduce/quadradic-exit-value.ll
@@ -1,4 +1,4 @@
-; RUN: opt < %s -analyze -iv-users -disable-output | grep {Stride i64 {3,+,2}<%loop>:}
+; RUN: opt < %s -analyze -iv-users | grep {\{1,+,3,+,2\}<%loop> (post-inc)}
; The value of %r is dependent on a polynomial iteration expression.
diff --git a/test/Transforms/LoopStrengthReduce/remove_indvar.ll b/test/Transforms/LoopStrengthReduce/remove_indvar.ll
index 53f4b9d5b9fff..bb395324d4e4b 100644
--- a/test/Transforms/LoopStrengthReduce/remove_indvar.ll
+++ b/test/Transforms/LoopStrengthReduce/remove_indvar.ll
@@ -7,10 +7,12 @@ define void @test(i32* %P) {
; <label>:0
br label %Loop
Loop: ; preds = %Loop, %0
+ %i = phi i32 [ 0, %0 ], [ %i.next, %Loop ]
%INDVAR = phi i32 [ 0, %0 ], [ %INDVAR2, %Loop ] ; <i32> [#uses=2]
%STRRED = getelementptr i32* %P, i32 %INDVAR ; <i32*> [#uses=1]
store i32 0, i32* %STRRED
%INDVAR2 = add i32 %INDVAR, 1 ; <i32> [#uses=1]
+ %i.next = add i32 %i, 1
%cond = call i1 @pred( ) ; <i1> [#uses=1]
br i1 %cond, label %Loop, label %Out
Out: ; preds = %Loop
diff --git a/test/Transforms/LoopStrengthReduce/use_postinc_value_outside_loop.ll b/test/Transforms/LoopStrengthReduce/use_postinc_value_outside_loop.ll
index a99a823a3b76a..5ed37dd6a2472 100644
--- a/test/Transforms/LoopStrengthReduce/use_postinc_value_outside_loop.ll
+++ b/test/Transforms/LoopStrengthReduce/use_postinc_value_outside_loop.ll
@@ -1,5 +1,5 @@
; RUN: opt < %s -loop-reduce -S | \
-; RUN: grep {add i32 %lsr.iv.next, 1}
+; RUN: grep {add i32 %indvar630.ui, 1}
;
; Make sure that the use of the IV outside of the loop (the store) uses the
; post incremented value of the IV, not the preincremented value. This
diff --git a/test/Transforms/LoopUnswitch/2006-02-14-LoopSimplifyCrash.ll b/test/Transforms/LoopUnswitch/2006-02-14-LoopSimplifyCrash.ll
deleted file mode 100644
index b4cf4062309ee..0000000000000
--- a/test/Transforms/LoopUnswitch/2006-02-14-LoopSimplifyCrash.ll
+++ /dev/null
@@ -1,1697 +0,0 @@
-; RUN: opt < %s -loop-unswitch -disable-output
-; END.
-
-target datalayout = "E-p:32:32"
-target triple = "powerpc-apple-darwin8.2.0"
-deplibs = [ "c", "crtend" ]
- %struct.__sFILE = 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.__sFILEX = type opaque
- %struct.__sbuf = type { i8*, i32 }
- %struct.fd_set = type { [32 x i32] }
- %struct.timeval = type { i32, i32 }
- %struct.tm = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8* }
- %typedef.CHESS_PATH = type { [65 x i32], i8, i8, i8 }
- %typedef.CHESS_POSITION = type { i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i32, i8, i8, [64 x i8], i8, i8, i8, i8, i8 }
- %typedef.HASH_ENTRY = type { i64, i64 }
- %typedef.NEXT_MOVE = type { i32, i32, i32* }
- %typedef.PAWN_HASH_ENTRY = type { i32, i16, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8 }
- %typedef.SEARCH_POSITION = type { i8, i8, i8, i8 }
- %union.doub0. = type { i64 }
-@search = external global %typedef.CHESS_POSITION ; <%typedef.CHESS_POSITION*> [#uses=1]
-@w_pawn_attacks = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@b_pawn_attacks = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@knight_attacks = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@bishop_attacks_rl45 = external global [64 x [256 x i64]] ; <[64 x [256 x i64]]*> [#uses=0]
-@bishop_shift_rl45 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@bishop_attacks_rr45 = external global [64 x [256 x i64]] ; <[64 x [256 x i64]]*> [#uses=0]
-@bishop_shift_rr45 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@rook_attacks_r0 = external global [64 x [256 x i64]] ; <[64 x [256 x i64]]*> [#uses=0]
-@rook_attacks_rl90 = external global [64 x [256 x i64]] ; <[64 x [256 x i64]]*> [#uses=0]
-@king_attacks = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@set_mask = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@first_ones = external global [65536 x i8] ; <[65536 x i8]*> [#uses=0]
-@last_ones = external global [65536 x i8] ; <[65536 x i8]*> [#uses=0]
-@draw_score_is_zero = external global i32 ; <i32*> [#uses=0]
-@default_draw_score = external global i32 ; <i32*> [#uses=0]
-@opening = external global i32 ; <i32*> [#uses=0]
-@middle_game = external global i32 ; <i32*> [#uses=0]
-@tc_increment = external global i32 ; <i32*> [#uses=0]
-@tc_time_remaining_opponent = external global i32 ; <i32*> [#uses=0]
-@.ctor_1 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@input_stream = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@__sF = external global [0 x %struct.__sFILE] ; <[0 x %struct.__sFILE]*> [#uses=1]
-@xboard = external global i32 ; <i32*> [#uses=0]
-@.str_1 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_2 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@buffer = external global [512 x i8] ; <[512 x i8]*> [#uses=0]
-@nargs = external global i32 ; <i32*> [#uses=0]
-@args = external global [32 x i8*] ; <[32 x i8*]*> [#uses=0]
-@.str_3 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_4 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_5 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_6 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_7 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_8 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_9 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_10 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_11 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_12 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_14 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@position = external global [67 x %typedef.SEARCH_POSITION] ; <[67 x %typedef.SEARCH_POSITION]*> [#uses=0]
-@log_file = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@move_number = external global i32 ; <i32*> [#uses=0]
-@rephead_b = external global i64* ; <i64**> [#uses=0]
-@replist_b = external global [82 x i64] ; <[82 x i64]*> [#uses=0]
-@rephead_w = external global i64* ; <i64**> [#uses=0]
-@replist_w = external global [82 x i64] ; <[82 x i64]*> [#uses=0]
-@moves_out_of_book = external global i32 ; <i32*> [#uses=0]
-@largest_positional_score = external global i32 ; <i32*> [#uses=0]
-@end_game = external global i32 ; <i32*> [#uses=0]
-@p_values = external global [15 x i32] ; <[15 x i32]*> [#uses=0]
-@clear_mask = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@directions = external global [64 x [64 x i8]] ; <[64 x [64 x i8]]*> [#uses=0]
-@root_wtm = external global i32 ; <i32*> [#uses=0]
-@all_pawns = external global i64 ; <i64*> [#uses=0]
-@pawn_score = external global %typedef.PAWN_HASH_ENTRY ; <%typedef.PAWN_HASH_ENTRY*> [#uses=0]
-@pawn_probes = external global i32 ; <i32*> [#uses=0]
-@pawn_hits = external global i32 ; <i32*> [#uses=0]
-@outside_passed = external global [128 x i32] ; <[128 x i32]*> [#uses=0]
-@root_total_black_pieces = external global i32 ; <i32*> [#uses=0]
-@root_total_white_pawns = external global i32 ; <i32*> [#uses=0]
-@root_total_white_pieces = external global i32 ; <i32*> [#uses=0]
-@root_total_black_pawns = external global i32 ; <i32*> [#uses=0]
-@mask_A7H7 = external global i64 ; <i64*> [#uses=0]
-@mask_B6B7 = external global i64 ; <i64*> [#uses=0]
-@mask_G6G7 = external global i64 ; <i64*> [#uses=0]
-@mask_A2H2 = external global i64 ; <i64*> [#uses=0]
-@mask_B2B3 = external global i64 ; <i64*> [#uses=0]
-@mask_G2G3 = external global i64 ; <i64*> [#uses=0]
-@king_defects_w = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@good_bishop_kw = external global i64 ; <i64*> [#uses=0]
-@mask_F3H3 = external global i64 ; <i64*> [#uses=0]
-@file_mask = external global [8 x i64] ; <[8 x i64]*> [#uses=0]
-@good_bishop_qw = external global i64 ; <i64*> [#uses=0]
-@mask_A3C3 = external global i64 ; <i64*> [#uses=0]
-@king_defects_b = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@good_bishop_kb = external global i64 ; <i64*> [#uses=0]
-@mask_F6H6 = external global i64 ; <i64*> [#uses=0]
-@good_bishop_qb = external global i64 ; <i64*> [#uses=0]
-@mask_A6C6 = external global i64 ; <i64*> [#uses=0]
-@square_color = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@evaluations = external global i32 ; <i32*> [#uses=0]
-@king_value_w = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@rank_mask = external global [8 x i64] ; <[8 x i64]*> [#uses=0]
-@mask_kr_trapped_w = external global [3 x i64] ; <[3 x i64]*> [#uses=0]
-@mask_qr_trapped_w = external global [3 x i64] ; <[3 x i64]*> [#uses=0]
-@king_value_b = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@mask_kr_trapped_b = external global [3 x i64] ; <[3 x i64]*> [#uses=0]
-@mask_qr_trapped_b = external global [3 x i64] ; <[3 x i64]*> [#uses=0]
-@white_outpost = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@mask_no_pawn_attacks_b = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@knight_value_w = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@black_outpost = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@mask_no_pawn_attacks_w = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@knight_value_b = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@bishop_value_w = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@bishop_mobility_rl45 = external global [64 x [256 x i32]] ; <[64 x [256 x i32]]*> [#uses=0]
-@bishop_mobility_rr45 = external global [64 x [256 x i32]] ; <[64 x [256 x i32]]*> [#uses=0]
-@bishop_value_b = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@rook_value_w = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@plus8dir = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@mask_abs7_w = external global i64 ; <i64*> [#uses=0]
-@rook_value_b = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@minus8dir = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@mask_abs7_b = external global i64 ; <i64*> [#uses=0]
-@queen_value_w = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@queen_value_b = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@white_minor_pieces = external global i64 ; <i64*> [#uses=0]
-@black_minor_pieces = external global i64 ; <i64*> [#uses=0]
-@not_rook_pawns = external global i64 ; <i64*> [#uses=0]
-@dark_squares = external global i64 ; <i64*> [#uses=0]
-@b_n_mate_dark_squares = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@b_n_mate_light_squares = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@mate = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@first_ones_8bit = external global [256 x i8] ; <[256 x i8]*> [#uses=0]
-@reduced_material_passer = external global [20 x i32] ; <[20 x i32]*> [#uses=0]
-@supported_passer = external global [8 x i32] ; <[8 x i32]*> [#uses=0]
-@passed_pawn_value = external global [8 x i32] ; <[8 x i32]*> [#uses=0]
-@connected_passed = external global [256 x i8] ; <[256 x i8]*> [#uses=0]
-@black_pawn_race_btm = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@white_pawn_race_wtm = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@black_pawn_race_wtm = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@white_pawn_race_btm = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@obstructed = external global [64 x [64 x i64]] ; <[64 x [64 x i64]]*> [#uses=0]
-@pawn_hash_table = external global %typedef.PAWN_HASH_ENTRY* ; <%typedef.PAWN_HASH_ENTRY**> [#uses=0]
-@pawn_hash_mask = external global i32 ; <i32*> [#uses=0]
-@pawn_value_w = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@mask_pawn_isolated = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@mask_pawn_passed_w = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@mask_pawn_protected_w = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@pawn_value_b = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@mask_pawn_passed_b = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@mask_pawn_protected_b = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@unblocked_pawns = external global [9 x i32] ; <[9 x i32]*> [#uses=0]
-@mask_wk_4th = external global i64 ; <i64*> [#uses=0]
-@mask_wk_5th = external global i64 ; <i64*> [#uses=0]
-@mask_wq_4th = external global i64 ; <i64*> [#uses=0]
-@mask_wq_5th = external global i64 ; <i64*> [#uses=0]
-@stonewall_white = external global i64 ; <i64*> [#uses=0]
-@mask_bk_4th = external global i64 ; <i64*> [#uses=0]
-@mask_bk_5th = external global i64 ; <i64*> [#uses=0]
-@mask_bq_5th = external global i64 ; <i64*> [#uses=0]
-@mask_bq_4th = external global i64 ; <i64*> [#uses=0]
-@stonewall_black = external global i64 ; <i64*> [#uses=0]
-@last_ones_8bit = external global [256 x i8] ; <[256 x i8]*> [#uses=0]
-@right_side_mask = external global [8 x i64] ; <[8 x i64]*> [#uses=0]
-@left_side_empty_mask = external global [8 x i64] ; <[8 x i64]*> [#uses=0]
-@left_side_mask = external global [8 x i64] ; <[8 x i64]*> [#uses=0]
-@right_side_empty_mask = external global [8 x i64] ; <[8 x i64]*> [#uses=0]
-@pv = external global [65 x %typedef.CHESS_PATH] ; <[65 x %typedef.CHESS_PATH]*> [#uses=0]
-@history_w = external global [4096 x i32] ; <[4096 x i32]*> [#uses=0]
-@history_b = external global [4096 x i32] ; <[4096 x i32]*> [#uses=0]
-@killer_move1 = external global [65 x i32] ; <[65 x i32]*> [#uses=0]
-@killer_count1 = external global [65 x i32] ; <[65 x i32]*> [#uses=0]
-@killer_move2 = external global [65 x i32] ; <[65 x i32]*> [#uses=0]
-@killer_count2 = external global [65 x i32] ; <[65 x i32]*> [#uses=0]
-@current_move = external global [65 x i32] ; <[65 x i32]*> [#uses=0]
-@init_r90 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@init_l90 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@init_l45 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@init_ul45 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@init_r45 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@init_ur45 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@diagonal_length = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@last = external global [65 x i32*] ; <[65 x i32*]*> [#uses=0]
-@move_list = external global [5120 x i32] ; <[5120 x i32]*> [#uses=0]
-@history_file = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@.str_1.upgrd.1 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_2.upgrd.2 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_3.upgrd.3 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@.str_5.upgrd.4 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_6.upgrd.5 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@trans_ref_wa = external global %typedef.HASH_ENTRY* ; <%typedef.HASH_ENTRY**> [#uses=0]
-@hash_table_size = external global i32 ; <i32*> [#uses=0]
-@trans_ref_wb = external global %typedef.HASH_ENTRY* ; <%typedef.HASH_ENTRY**> [#uses=0]
-@trans_ref_ba = external global %typedef.HASH_ENTRY* ; <%typedef.HASH_ENTRY**> [#uses=0]
-@trans_ref_bb = external global %typedef.HASH_ENTRY* ; <%typedef.HASH_ENTRY**> [#uses=0]
-@pawn_hash_table_size = external global i32 ; <i32*> [#uses=0]
-@.str_9.upgrd.6 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@log_hash = external global i32 ; <i32*> [#uses=0]
-@log_pawn_hash = external global i32 ; <i32*> [#uses=0]
-@hash_maska = external global i32 ; <i32*> [#uses=0]
-@hash_maskb = external global i32 ; <i32*> [#uses=0]
-@mask_1 = external global i64 ; <i64*> [#uses=0]
-@bishop_attacks = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@queen_attacks = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@plus7dir = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@plus9dir = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@minus7dir = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@minus9dir = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@plus1dir = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@minus1dir = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@rook_attacks = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@king_attacks_1 = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@king_attacks_2 = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@.ctor_1.upgrd.7 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@.ctor_2 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@rook_mobility_r0 = external global [64 x [256 x i32]] ; <[64 x [256 x i32]]*> [#uses=0]
-@rook_mobility_rl90 = external global [64 x [256 x i32]] ; <[64 x [256 x i32]]*> [#uses=0]
-@initial_position = external global [80 x i8] ; <[80 x i8]*> [#uses=5]
-@"\01a1.0__" = external global [80 x i8] ; <[80 x i8]*> [#uses=0]
-@"\01a2.1__" = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@"\01a3.2__" = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@"\01a4.3__" = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@"\01a5.4__" = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@"\01args.5__" = external global [16 x i8*] ; <[16 x i8*]*> [#uses=0]
-@.str_10.upgrd.8 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@w_pawn_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@w_pawn_random32 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@b_pawn_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@b_pawn_random32 = external global [64 x i32] ; <[64 x i32]*> [#uses=0]
-@w_knight_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@b_knight_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@w_bishop_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@b_bishop_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@w_rook_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@b_rook_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@w_queen_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@b_queen_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@w_king_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@b_king_random = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@enpassant_random = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@castle_random_w = external global [2 x i64] ; <[2 x i64]*> [#uses=0]
-@castle_random_b = external global [2 x i64] ; <[2 x i64]*> [#uses=0]
-@set_mask_rl90 = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@set_mask_rl45 = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@set_mask_rr45 = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@transposition_id = external global i8 ; <i8*> [#uses=0]
-@mask_2 = external global i64 ; <i64*> [#uses=0]
-@mask_3 = external global i64 ; <i64*> [#uses=0]
-@mask_4 = external global i64 ; <i64*> [#uses=0]
-@mask_8 = external global i64 ; <i64*> [#uses=0]
-@mask_16 = external global i64 ; <i64*> [#uses=0]
-@mask_32 = external global i64 ; <i64*> [#uses=0]
-@mask_72 = external global i64 ; <i64*> [#uses=0]
-@mask_80 = external global i64 ; <i64*> [#uses=0]
-@mask_85 = external global i64 ; <i64*> [#uses=0]
-@mask_96 = external global i64 ; <i64*> [#uses=0]
-@mask_107 = external global i64 ; <i64*> [#uses=0]
-@mask_108 = external global i64 ; <i64*> [#uses=0]
-@mask_112 = external global i64 ; <i64*> [#uses=0]
-@mask_118 = external global i64 ; <i64*> [#uses=0]
-@mask_120 = external global i64 ; <i64*> [#uses=0]
-@mask_121 = external global i64 ; <i64*> [#uses=0]
-@mask_127 = external global i64 ; <i64*> [#uses=0]
-@mask_clear_entry = external global i64 ; <i64*> [#uses=0]
-@clear_mask_rl45 = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@clear_mask_rr45 = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@clear_mask_rl90 = external global [65 x i64] ; <[65 x i64]*> [#uses=0]
-@right_half_mask = external global i64 ; <i64*> [#uses=0]
-@left_half_mask = external global i64 ; <i64*> [#uses=0]
-@mask_not_rank8 = external global i64 ; <i64*> [#uses=0]
-@mask_not_rank1 = external global i64 ; <i64*> [#uses=0]
-@center = external global i64 ; <i64*> [#uses=0]
-@mask_pawn_connected = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@mask_eptest = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@mask_kingside_attack_w1 = external global i64 ; <i64*> [#uses=0]
-@mask_kingside_attack_w2 = external global i64 ; <i64*> [#uses=0]
-@mask_queenside_attack_w1 = external global i64 ; <i64*> [#uses=0]
-@mask_queenside_attack_w2 = external global i64 ; <i64*> [#uses=0]
-@mask_kingside_attack_b1 = external global i64 ; <i64*> [#uses=0]
-@mask_kingside_attack_b2 = external global i64 ; <i64*> [#uses=0]
-@mask_queenside_attack_b1 = external global i64 ; <i64*> [#uses=0]
-@mask_queenside_attack_b2 = external global i64 ; <i64*> [#uses=0]
-@pawns_cramp_black = external global i64 ; <i64*> [#uses=0]
-@pawns_cramp_white = external global i64 ; <i64*> [#uses=0]
-@light_squares = external global i64 ; <i64*> [#uses=0]
-@mask_left_edge = external global i64 ; <i64*> [#uses=0]
-@mask_right_edge = external global i64 ; <i64*> [#uses=0]
-@mask_advance_2_w = external global i64 ; <i64*> [#uses=0]
-@mask_advance_2_b = external global i64 ; <i64*> [#uses=0]
-@mask_corner_squares = external global i64 ; <i64*> [#uses=0]
-@mask_promotion_threat_w = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@mask_promotion_threat_b = external global [64 x i64] ; <[64 x i64]*> [#uses=0]
-@promote_mask_w = external global i64 ; <i64*> [#uses=0]
-@promote_mask_b = external global i64 ; <i64*> [#uses=0]
-@mask_a1_corner = external global i64 ; <i64*> [#uses=0]
-@mask_h1_corner = external global i64 ; <i64*> [#uses=0]
-@mask_a8_corner = external global i64 ; <i64*> [#uses=0]
-@mask_h8_corner = external global i64 ; <i64*> [#uses=0]
-@white_center_pawns = external global i64 ; <i64*> [#uses=0]
-@black_center_pawns = external global i64 ; <i64*> [#uses=0]
-@wtm_random = external global [2 x i64] ; <[2 x i64]*> [#uses=0]
-@endgame_random_w = external global i64 ; <i64*> [#uses=0]
-@endgame_random_b = external global i64 ; <i64*> [#uses=0]
-@w_rooks_random = external global i64 ; <i64*> [#uses=0]
-@b_rooks_random = external global i64 ; <i64*> [#uses=0]
-@.ctor_11 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.ctor_2.upgrd.9 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_1.upgrd.10 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_2.upgrd.11 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_32 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_4.upgrd.12 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_5.upgrd.13 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_6.upgrd.14 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_7.upgrd.15 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_8.upgrd.16 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_9.upgrd.17 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_10.upgrd.18 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_11.upgrd.19 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_12.upgrd.20 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_13 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@num_ponder_moves = external global i32 ; <i32*> [#uses=0]
-@ponder_moves = external global [220 x i32] ; <[220 x i32]*> [#uses=0]
-@.str_14.upgrd.21 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@.str_15 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_16 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
-@auto232 = external global i32 ; <i32*> [#uses=0]
-@puzzling = external global i8 ; <i8*> [#uses=0]
-@abort_search = external global i8 ; <i8*> [#uses=0]
-@.str_24 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@wtm = external global i32 ; <i32*> [#uses=0]
-@.str_3.upgrd.22 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@.str_4.upgrd.23 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@end_time = external global i32 ; <i32*> [#uses=0]
-@time_type = external global i32 ; <i32*> [#uses=0]
-@start_time = external global i32 ; <i32*> [#uses=0]
-@.str_6.upgrd.24 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@.str_7.upgrd.25 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@nodes_searched = external global i32 ; <i32*> [#uses=0]
-@iteration_depth = external global i32 ; <i32*> [#uses=0]
-@searched_this_root_move = external global [256 x i8] ; <[256 x i8]*> [#uses=0]
-@.str_9.upgrd.26 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_10.upgrd.27 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_11.upgrd.28 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_12.upgrd.29 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@.str_14.upgrd.30 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_16.upgrd.31 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@thinking = external global i8 ; <i8*> [#uses=0]
-@time_abort = external global i32 ; <i32*> [#uses=0]
-@.str_17 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@analyze_move_read = external global i32 ; <i32*> [#uses=0]
-@analyze_mode = external global i32 ; <i32*> [#uses=0]
-@pondering = external global i8 ; <i8*> [#uses=0]
-@auto232_delay = external global i32 ; <i32*> [#uses=0]
-@auto_file = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@.str_19 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_20 = external global [11 x i8] ; <[11 x i8]*> [#uses=0]
-@.str_21 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@ponder_move = external global i32 ; <i32*> [#uses=0]
-@predicted = external global i32 ; <i32*> [#uses=0]
-@made_predicted_move = external global i32 ; <i32*> [#uses=0]
-@opponent_end_time = external global i32 ; <i32*> [#uses=0]
-@program_start_time = external global i32 ; <i32*> [#uses=0]
-@.str_23 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_24.upgrd.32 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_25 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_26 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_28 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
-@book_move = external global i32 ; <i32*> [#uses=0]
-@elapsed_start = external global i32 ; <i32*> [#uses=0]
-@burp = external global i32 ; <i32*> [#uses=0]
-@cpu_percent = external global i32 ; <i32*> [#uses=0]
-@next_time_check = external global i32 ; <i32*> [#uses=0]
-@nodes_between_time_checks = external global i32 ; <i32*> [#uses=0]
-@transposition_hits = external global i32 ; <i32*> [#uses=0]
-@transposition_probes = external global i32 ; <i32*> [#uses=0]
-@tb_probes = external global i32 ; <i32*> [#uses=0]
-@tb_probes_successful = external global i32 ; <i32*> [#uses=0]
-@check_extensions_done = external global i32 ; <i32*> [#uses=0]
-@recapture_extensions_done = external global i32 ; <i32*> [#uses=0]
-@passed_pawn_extensions_done = external global i32 ; <i32*> [#uses=0]
-@one_reply_extensions_done = external global i32 ; <i32*> [#uses=0]
-@program_end_time = external global i32 ; <i32*> [#uses=0]
-@root_value = external global i32 ; <i32*> [#uses=0]
-@last_search_value = external global i32 ; <i32*> [#uses=0]
-@.str_1.upgrd.33 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_2.upgrd.34 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@booking = external global i8 ; <i8*> [#uses=0]
-@annotate_mode = external global i32 ; <i32*> [#uses=0]
-@.str_4.upgrd.35 = external global [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str_5.upgrd.36 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@last_pv = external global %typedef.CHESS_PATH ; <%typedef.CHESS_PATH*> [#uses=0]
-@.str_8.upgrd.37 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@root_alpha = external global i32 ; <i32*> [#uses=0]
-@last_value = external global i32 ; <i32*> [#uses=0]
-@root_beta = external global i32 ; <i32*> [#uses=0]
-@root_nodes = external global [256 x i32] ; <[256 x i32]*> [#uses=0]
-@trace_level = external global i32 ; <i32*> [#uses=0]
-@.str_9.upgrd.38 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_10.upgrd.39 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@search_failed_high = external global i32 ; <i32*> [#uses=0]
-@search_failed_low = external global i32 ; <i32*> [#uses=0]
-@nodes_per_second = external global i32 ; <i32*> [#uses=0]
-@time_limit = external global i32 ; <i32*> [#uses=0]
-@easy_move = external global i32 ; <i32*> [#uses=0]
-@noise_level = external global i32 ; <i32*> [#uses=0]
-@.str_12.upgrd.40 = external global [34 x i8] ; <[34 x i8]*> [#uses=0]
-@.str_136 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@solution_type = external global i32 ; <i32*> [#uses=0]
-@number_of_solutions = external global i32 ; <i32*> [#uses=0]
-@solutions = external global [10 x i32] ; <[10 x i32]*> [#uses=0]
-@early_exit = external global i32 ; <i32*> [#uses=0]
-@.str_14.upgrd.41 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_15.upgrd.42 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_16.upgrd.43 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@whisper_value = external global i32 ; <i32*> [#uses=0]
-@.str_17.upgrd.44 = external global [29 x i8] ; <[29 x i8]*> [#uses=0]
-@.str_19.upgrd.45 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@last_mate_score = external global i32 ; <i32*> [#uses=0]
-@search_depth = external global i32 ; <i32*> [#uses=0]
-@elapsed_end = external global i32 ; <i32*> [#uses=0]
-@.str_20.upgrd.46 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_21.upgrd.47 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_22 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
-@.str_23.upgrd.48 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_24.upgrd.49 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_25.upgrd.50 = external global [67 x i8] ; <[67 x i8]*> [#uses=0]
-@.str_26.upgrd.51 = external global [69 x i8] ; <[69 x i8]*> [#uses=0]
-@hash_move = external global [65 x i32] ; <[65 x i32]*> [#uses=0]
-@version = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@mode = external global i32 ; <i32*> [#uses=0]
-@batch_mode = external global i32 ; <i32*> [#uses=0]
-@crafty_rating = external global i32 ; <i32*> [#uses=0]
-@opponent_rating = external global i32 ; <i32*> [#uses=0]
-@pgn_event = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@pgn_site = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@pgn_date = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@pgn_round = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@pgn_white = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@pgn_white_elo = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@pgn_black = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@pgn_black_elo = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@pgn_result = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@number_auto_kibitzers = external global i32 ; <i32*> [#uses=0]
-@auto_kibitz_list = external global [100 x [20 x i8]] ; <[100 x [20 x i8]]*> [#uses=0]
-@number_of_computers = external global i32 ; <i32*> [#uses=0]
-@computer_list = external global [100 x [20 x i8]] ; <[100 x [20 x i8]]*> [#uses=0]
-@number_of_GMs = external global i32 ; <i32*> [#uses=0]
-@GM_list = external global [100 x [20 x i8]] ; <[100 x [20 x i8]]*> [#uses=0]
-@number_of_IMs = external global i32 ; <i32*> [#uses=0]
-@IM_list = external global [100 x [20 x i8]] ; <[100 x [20 x i8]]*> [#uses=0]
-@ics = external global i32 ; <i32*> [#uses=0]
-@output_format = external global i32 ; <i32*> [#uses=0]
-@EGTBlimit = external global i32 ; <i32*> [#uses=0]
-@whisper = external global i32 ; <i32*> [#uses=0]
-@channel = external global i32 ; <i32*> [#uses=0]
-@new_game = external global i32 ; <i32*> [#uses=0]
-@channel_title = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@initialized = external global i32 ; <i32*> [#uses=0]
-@kibitz = external global i32 ; <i32*> [#uses=0]
-@post = external global i32 ; <i32*> [#uses=0]
-@log_id = external global i32 ; <i32*> [#uses=0]
-@crafty_is_white = external global i32 ; <i32*> [#uses=0]
-@last_opponent_move = external global i32 ; <i32*> [#uses=0]
-@search_move = external global i32 ; <i32*> [#uses=0]
-@time_used = external global i32 ; <i32*> [#uses=0]
-@time_used_opponent = external global i32 ; <i32*> [#uses=0]
-@auto_kibitzing = external global i32 ; <i32*> [#uses=0]
-@test_mode = external global i32 ; <i32*> [#uses=0]
-@resign = external global i8 ; <i8*> [#uses=0]
-@resign_counter = external global i8 ; <i8*> [#uses=0]
-@resign_count = external global i8 ; <i8*> [#uses=0]
-@draw_counter = external global i8 ; <i8*> [#uses=0]
-@draw_count = external global i8 ; <i8*> [#uses=0]
-@tc_moves = external global i32 ; <i32*> [#uses=0]
-@tc_time = external global i32 ; <i32*> [#uses=0]
-@tc_time_remaining = external global i32 ; <i32*> [#uses=0]
-@tc_moves_remaining = external global i32 ; <i32*> [#uses=0]
-@tc_secondary_moves = external global i32 ; <i32*> [#uses=0]
-@tc_secondary_time = external global i32 ; <i32*> [#uses=0]
-@tc_sudden_death = external global i32 ; <i32*> [#uses=0]
-@tc_operator_time = external global i32 ; <i32*> [#uses=0]
-@tc_safety_margin = external global i32 ; <i32*> [#uses=0]
-@force = external global i32 ; <i32*> [#uses=0]
-@over = external global i32 ; <i32*> [#uses=0]
-@usage_level = external global i32 ; <i32*> [#uses=0]
-@audible_alarm = external global i8 ; <i8*> [#uses=0]
-@ansi = external global i32 ; <i32*> [#uses=0]
-@book_accept_mask = external global i32 ; <i32*> [#uses=0]
-@book_reject_mask = external global i32 ; <i32*> [#uses=0]
-@book_random = external global i32 ; <i32*> [#uses=0]
-@book_search_trigger = external global i32 ; <i32*> [#uses=0]
-@learning = external global i32 ; <i32*> [#uses=0]
-@show_book = external global i32 ; <i32*> [#uses=0]
-@book_selection_width = external global i32 ; <i32*> [#uses=0]
-@ponder = external global i32 ; <i32*> [#uses=0]
-@verbosity_level = external global i32 ; <i32*> [#uses=0]
-@push_extensions = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_28.upgrd.52 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_3.upgrd.53 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@display = external global %typedef.CHESS_POSITION ; <%typedef.CHESS_POSITION*> [#uses=0]
-@.str_4.upgrd.54 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@opponent_start_time = external global i32 ; <i32*> [#uses=0]
-@.str_8.upgrd.55 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@.str_9.upgrd.56 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@.str_18 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_19.upgrd.57 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_2013 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_21.upgrd.58 = external global [41 x i8] ; <[41 x i8]*> [#uses=0]
-@.str_22.upgrd.59 = external global [29 x i8] ; <[29 x i8]*> [#uses=0]
-@.str_23.upgrd.60 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@whisper_text = external global [500 x i8] ; <[500 x i8]*> [#uses=0]
-@.str_24.upgrd.61 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_25.upgrd.62 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_26.upgrd.63 = external global [11 x i8] ; <[11 x i8]*> [#uses=0]
-@.str_28.upgrd.64 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
-@.str_29 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
-@.str_30 = external global [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str_31 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_32.upgrd.65 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_36 = external global [3 x i8] ; <[3 x i8]*> [#uses=1]
-@.str_37 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@.str_44 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@.str_45 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_49 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@.str_52 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@previous_search_value = external global i32 ; <i32*> [#uses=0]
-@.str_64 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@whisper_depth = external global i32 ; <i32*> [#uses=0]
-@.str_65 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_66 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@total_moves = external global i32 ; <i32*> [#uses=0]
-@book_file = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@books_file = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@book_lrn_file = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@position_file = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@position_lrn_file = external global %struct.__sFILE* ; <%struct.__sFILE**> [#uses=0]
-@log_filename = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@history_filename = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@book_path = external global [128 x i8] ; <[128 x i8]*> [#uses=0]
-@log_path = external global [128 x i8] ; <[128 x i8]*> [#uses=0]
-@tb_path = external global [128 x i8] ; <[128 x i8]*> [#uses=0]
-@cmd_buffer = external global [512 x i8] ; <[512 x i8]*> [#uses=0]
-@root_move = external global i32 ; <i32*> [#uses=0]
-@hint = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@absolute_time_limit = external global i32 ; <i32*> [#uses=0]
-@search_time_limit = external global i32 ; <i32*> [#uses=0]
-@in_check = external global [65 x i8] ; <[65 x i8]*> [#uses=0]
-@extended_reason = external global [65 x i8] ; <[65 x i8]*> [#uses=0]
-@current_phase = external global [65 x i8] ; <[65 x i8]*> [#uses=0]
-@sort_value = external global [256 x i32] ; <[256 x i32]*> [#uses=0]
-@next_status = external global [65 x %typedef.NEXT_MOVE] ; <[65 x %typedef.NEXT_MOVE]*> [#uses=0]
-@save_hash_key = external global [67 x i64] ; <[67 x i64]*> [#uses=0]
-@save_pawn_hash_key = external global [67 x i32] ; <[67 x i32]*> [#uses=0]
-@pawn_advance = external global [8 x i32] ; <[8 x i32]*> [#uses=0]
-@bit_move = external global i64 ; <i64*> [#uses=0]
-@.str_1.upgrd.66 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_2.upgrd.67 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_3.upgrd.68 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_1.upgrd.69 = external global [34 x i8] ; <[34 x i8]*> [#uses=0]
-@.str_2.upgrd.70 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_2.upgrd.71 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_1.upgrd.72 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_2.upgrd.73 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_3.upgrd.74 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_4.upgrd.75 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_5.upgrd.76 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_615 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_7.upgrd.77 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str_10.upgrd.78 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_11.upgrd.79 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_12.upgrd.80 = external global [18 x i8] ; <[18 x i8]*> [#uses=0]
-@.str_1318 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_1419 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_15.upgrd.81 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_16.upgrd.82 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_19.upgrd.83 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_20.upgrd.84 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_2222 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_2323 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_25.upgrd.85 = external global [29 x i8] ; <[29 x i8]*> [#uses=0]
-@.str_27 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_28.upgrd.86 = external global [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str_29.upgrd.87 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_30.upgrd.88 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_31.upgrd.89 = external global [18 x i8] ; <[18 x i8]*> [#uses=0]
-@.str_32.upgrd.90 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_33 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_34 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_35 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_36.upgrd.91 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_37.upgrd.92 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_38 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_41 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_42 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_43 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_44.upgrd.93 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_4525 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_46 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_47 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_48 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_49.upgrd.94 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_50 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_51 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str_52.upgrd.95 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_53 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_54 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@.str_55 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@.str_56 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_57 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_58 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_59 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_60 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_61 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_62 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_63 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_64.upgrd.96 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@.str_66.upgrd.97 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_67 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str_68 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_69 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_71 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_72 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_73 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_74 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_75 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_81 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_83 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_84 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@.str_86 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_87 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_89 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_90 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_91 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_92 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_94 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@.str_95 = external global [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str_96 = external global [34 x i8] ; <[34 x i8]*> [#uses=0]
-@.str_97 = external global [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str_98 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_100 = external global [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str_101 = external global [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str_102 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_103 = external global [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str_104 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_105 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_106 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_107 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_108 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_109 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_110 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_111 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_112 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_113 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_114 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_115 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_116 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_117 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_118 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_119 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_120 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_121 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_122 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_123 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_124 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_125 = external global [65 x i8] ; <[65 x i8]*> [#uses=0]
-@.str_126 = external global [65 x i8] ; <[65 x i8]*> [#uses=0]
-@.str_127 = external global [69 x i8] ; <[69 x i8]*> [#uses=0]
-@.str_128 = external global [66 x i8] ; <[66 x i8]*> [#uses=0]
-@.str_129 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_130 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_131 = external global [67 x i8] ; <[67 x i8]*> [#uses=0]
-@.str_132 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_133 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_134 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_135 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_136.upgrd.98 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_137 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_138 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_139 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_140 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_141 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_142 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_143 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_144 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_145 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_146 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_147 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_148 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_149 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_150 = external global [65 x i8] ; <[65 x i8]*> [#uses=0]
-@.str_151 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_152 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_153 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_154 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_156 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_157 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
-@.str_158 = external global [71 x i8] ; <[71 x i8]*> [#uses=0]
-@.str_159 = external global [72 x i8] ; <[72 x i8]*> [#uses=0]
-@.str_160 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_161 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_162 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_163 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_164 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_165 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_166 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_167 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_168 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_169 = external global [65 x i8] ; <[65 x i8]*> [#uses=0]
-@.str_170 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_171 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_172 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_173 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_174 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_175 = external global [70 x i8] ; <[70 x i8]*> [#uses=0]
-@.str_176 = external global [67 x i8] ; <[67 x i8]*> [#uses=0]
-@.str_177 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_178 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_180 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_181 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_182 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_183 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_184 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_185 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_186 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_187 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_188 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_189 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_190 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_191 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_192 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_193 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_194 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@.str_195 = external global [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str_196 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_197 = external global [11 x i8] ; <[11 x i8]*> [#uses=0]
-@.str_198 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_201 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_202 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_203 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_204 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_206 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_207 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_208 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_209 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_210 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_211 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_213 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_214 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_215 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_216 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_218 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_219 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_220 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_221 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@.str_222 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_223 = external global [66 x i8] ; <[66 x i8]*> [#uses=0]
-@.str_224 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_225 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_226 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_227 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_228 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_229 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_230 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_231 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_232 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_233 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_234 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_235 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_236 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_237 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_238 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_239 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_240 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_241 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_242 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_243 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_245 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_246 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_247 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_248 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_249 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_250 = external global [45 x i8] ; <[45 x i8]*> [#uses=0]
-@.str_253 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_254 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_256 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_258 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_259 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_261 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_262 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_263 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_266 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_267 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_268 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_270 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_271 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_272 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_273 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_274 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_275 = external global [44 x i8] ; <[44 x i8]*> [#uses=0]
-@.str_276 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_277 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str_278 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_279 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_280 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_281 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_282 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_283 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_284 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_285 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_286 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_287 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_288 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_289 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_290 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_291 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_292 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_293 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_294 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_295 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_296 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_297 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_298 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_299 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_300 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_301 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_302 = external global [18 x i8] ; <[18 x i8]*> [#uses=0]
-@.str_304 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_305 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_306 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_308 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_310 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_311 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_312 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_313 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_314 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_315 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_316 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_317 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_319 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_320 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_321 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_322 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_323 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
-@.str_325 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_327 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_328 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_329 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_330 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_331 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_332 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_333 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_334 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_335 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_336 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_337 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_338 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_339 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_340 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_341 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_342 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_343 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_344 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_345 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_346 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_347 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_348 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_349 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_350 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_351 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_352 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_353 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_354 = external global [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str_355 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_356 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_357 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_358 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_359 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_360 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_362 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_363 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_364 = external global [56 x i8] ; <[56 x i8]*> [#uses=0]
-@.str_365 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_366 = external global [64 x i8] ; <[64 x i8]*> [#uses=0]
-@.str_367 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_368 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_369 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_370 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_371 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_372 = external global [58 x i8] ; <[58 x i8]*> [#uses=0]
-@.str_373 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_374 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_375 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_376 = external global [63 x i8] ; <[63 x i8]*> [#uses=0]
-@.str_377 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_378 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_379 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_380 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_381 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_382 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_383 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_384 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_385 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_387 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_388 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_389 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_390 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_391 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_392 = external global [71 x i8] ; <[71 x i8]*> [#uses=0]
-@.str_393 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_394 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_395 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_396 = external global [60 x i8] ; <[60 x i8]*> [#uses=0]
-@.str_397 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_398 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_399 = external global [67 x i8] ; <[67 x i8]*> [#uses=0]
-@.str_400 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_401 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_402 = external global [62 x i8] ; <[62 x i8]*> [#uses=0]
-@.str_403 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_404 = external global [59 x i8] ; <[59 x i8]*> [#uses=0]
-@.str_405 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_406 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_407 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_408 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_409 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_410 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_411 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_412 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_413 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_414 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_421 = external global [53 x i8] ; <[53 x i8]*> [#uses=0]
-@.str_422 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_423 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@.str_424 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_426 = external global [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str_427 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_429 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_430 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_431 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_432 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@.str_433 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@.str_434 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_435 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_436 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_437 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_438 = external global [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str_440 = external global [44 x i8] ; <[44 x i8]*> [#uses=0]
-@.str_445 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_446 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_447 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_448 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_449 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_450 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_451 = external global [44 x i8] ; <[44 x i8]*> [#uses=0]
-@.str_452 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_453 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_454 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_455 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_456 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_459 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_460 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@.str_461 = external global [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str_462 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_463 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_466 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_467 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_468 = external global [45 x i8] ; <[45 x i8]*> [#uses=0]
-@.str_469 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_470 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
-@.str_474 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_477 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_480 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_483 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_485 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_487 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@.str_490 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_494 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_495 = external global [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str_497 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@.str_498 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
-@.str_507 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_508 = external global [11 x i8] ; <[11 x i8]*> [#uses=0]
-@.str_509 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_510 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@.str_511 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_512 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@.str_513 = external global [18 x i8] ; <[18 x i8]*> [#uses=0]
-@.str_514 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_515 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_516 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str_517 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_519 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_520 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str_521 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@.str_522 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_523 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_524 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_525 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_526 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_527 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_528 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_529 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_530 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_531 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_532 = external global [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str_533 = external global [32 x i8] ; <[32 x i8]*> [#uses=0]
-@.str_534 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_535 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_536 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_537 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_539 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_540 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_541 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_542 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_543 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_544 = external global [49 x i8] ; <[49 x i8]*> [#uses=0]
-@.str_546 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_550 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_551 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_552 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
-@.str_553 = external global [52 x i8] ; <[52 x i8]*> [#uses=0]
-@.str_554 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_555 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_556 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_557 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_559 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_560 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_562 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_564 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_565 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_567 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_568 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_570 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_571 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_572 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
-@.str_574 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
-@.str_576 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str_577 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_578 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_579 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_580 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_581 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_582 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_583 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_584 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_586 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_587 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_589 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_590 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_591 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_592 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_596 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str_597 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_598 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_599 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_605 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_610 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_613 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_616 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_621 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_622 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_623 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_624 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_625 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_626 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_628 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
-@.str_629 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_630 = external global [13 x i8] ; <[13 x i8]*> [#uses=0]
-@.str_631 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_632 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_633 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_634 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_635 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_636 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.str_637 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_639 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_643 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
-@.str_644 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_645 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_646 = external global [1 x i8] ; <[1 x i8]*> [#uses=0]
-@.str_649 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_654 = external global [2 x i8] ; <[2 x i8]*> [#uses=1]
-@.str_656 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_658 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_660 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_662 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_664 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
-@.str_666 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_667 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_669 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_670 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
-@.str_671 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_672 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@.str_674 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_675 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_676 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
-@.str_680 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_682 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_683 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@.str_684 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_685 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_686 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_687 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_688 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_689 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_690 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_691 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_692 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
-@.str_694 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_695 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_697 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_698 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_700 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_701 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_702 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_703 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_704 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str_707 = external global [4 x i8] ; <[4 x i8]*> [#uses=0]
-@.str_708 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_709 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_710 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
-@.str_711 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@.str_722 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_723 = external global [34 x i8] ; <[34 x i8]*> [#uses=0]
-@.str_726 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_727 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@.str_728 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_729 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_730 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@.str_732 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_734 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_735 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_736 = external global [61 x i8] ; <[61 x i8]*> [#uses=0]
-@.str_738 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str_739 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_740 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_741 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str_742 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_743 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_744 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
-@.str_745 = external global [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str_747 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_748 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_750 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@"\01text_move.0__" = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@"\01new_text.1__" = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_1.upgrd.99 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@"\01text_move.2__" = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_1.upgrd.100 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@.str_2.upgrd.101 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_3.upgrd.102 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_130.upgrd.103 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_231.upgrd.104 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_3.upgrd.105 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_4.upgrd.106 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_7.upgrd.107 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
-@"\01hashing_pawns.0__" = external global i32 ; <i32*> [#uses=0]
-@"\01hashing_opening.1__" = external global i32 ; <i32*> [#uses=0]
-@"\01hashing_middle_game.2__" = external global i32 ; <i32*> [#uses=0]
-@"\01hashing_end_game.3__" = external global i32 ; <i32*> [#uses=0]
-@"\01last_wtm.4__" = external global i32 ; <i32*> [#uses=0]
-@.str_1.upgrd.108 = external global [37 x i8] ; <[37 x i8]*> [#uses=0]
-@.str_1.upgrd.109 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_1.upgrd.110 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_2.upgrd.111 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_3.upgrd.112 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
-@.str_4.upgrd.113 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
-@.str_5.upgrd.114 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_6.upgrd.115 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str_7.upgrd.116 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_934 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_1.upgrd.117 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_3.upgrd.118 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_1.upgrd.119 = external global [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str_2.upgrd.120 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_4.upgrd.121 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_5.upgrd.122 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_1.upgrd.123 = external global [11 x i8] ; <[11 x i8]*> [#uses=0]
-@.str_2.upgrd.124 = external global [27 x i8] ; <[27 x i8]*> [#uses=0]
-@.str_7.upgrd.125 = external global [29 x i8] ; <[29 x i8]*> [#uses=0]
-@.str_10.upgrd.126 = external global [34 x i8] ; <[34 x i8]*> [#uses=0]
-@.str_1141 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_12.upgrd.127 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_14.upgrd.128 = external global [20 x i8] ; <[20 x i8]*> [#uses=0]
-@.str_1542 = external global [17 x i8] ; <[17 x i8]*> [#uses=0]
-@.ctor_1.upgrd.129 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str_1.upgrd.130 = external global [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str_3.upgrd.131 = external global [21 x i8] ; <[21 x i8]*> [#uses=0]
-@.str_4.upgrd.132 = external global [25 x i8] ; <[25 x i8]*> [#uses=0]
-@.str_5.upgrd.133 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_6.upgrd.134 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@.str_143.upgrd.135 = external global [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str_2.upgrd.136 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@.str_1.upgrd.137 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_2.upgrd.138 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@bit_move44 = external global i64 ; <i64*> [#uses=0]
-@.str_1.upgrd.139 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_248.upgrd.140 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_349.upgrd.141 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.ctor_1.upgrd.142 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_5.upgrd.143 = external global [43 x i8] ; <[43 x i8]*> [#uses=0]
-@.str_6.upgrd.144 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_751 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_852 = external global [3 x i8] ; <[3 x i8]*> [#uses=0]
-@.str_9.upgrd.145 = external global [42 x i8] ; <[42 x i8]*> [#uses=0]
-@.str_10.upgrd.146 = external global [41 x i8] ; <[41 x i8]*> [#uses=0]
-@"\01out.0__" = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_1153 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_12.upgrd.147 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_13.upgrd.148 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_14.upgrd.149 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_15.upgrd.150 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_16.upgrd.151 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_17.upgrd.152 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@"\01out.1__" = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_18.upgrd.153 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_19.upgrd.154 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_20.upgrd.155 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_21.upgrd.156 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_2254 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_2355 = external global [8 x i8] ; <[8 x i8]*> [#uses=0]
-@.str_24.upgrd.157 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-@.str_25.upgrd.158 = external global [45 x i8] ; <[45 x i8]*> [#uses=0]
-@.str_26.upgrd.159 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@"\01out.2__" = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_31.upgrd.160 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@"\01out.3__" = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@"\01out.4__" = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_3457 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_35.upgrd.161 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_36.upgrd.162 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_37.upgrd.163 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_41.upgrd.164 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_45.upgrd.165 = external global [55 x i8] ; <[55 x i8]*> [#uses=0]
-@"\01save_book_selection_width.5__" = external global i32 ; <i32*> [#uses=0]
-@"\01save_book_random.6__" = external global i32 ; <i32*> [#uses=0]
-@"\01save_whisper.7__" = external global i32 ; <i32*> [#uses=0]
-@"\01save_kibitz.8__" = external global i32 ; <i32*> [#uses=0]
-@"\01save_channel.9__" = external global i32 ; <i32*> [#uses=0]
-@"\01save_resign.10" = external global i32 ; <i32*> [#uses=0]
-@"\01save_resign_count.11" = external global i32 ; <i32*> [#uses=0]
-@"\01save_draw_count.12" = external global i32 ; <i32*> [#uses=0]
-@"\01save_learning.13" = external global i32 ; <i32*> [#uses=0]
-@.str_49.upgrd.166 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_51.upgrd.167 = external global [44 x i8] ; <[44 x i8]*> [#uses=0]
-@"\01x.14" = external global [55 x i32] ; <[55 x i32]*> [#uses=0]
-@"\01init.15.b" = external global i1 ; <i1*> [#uses=0]
-@"\01y.16" = external global [55 x i32] ; <[55 x i32]*> [#uses=0]
-@"\01j.17" = external global i32 ; <i32*> [#uses=0]
-@"\01k.18" = external global i32 ; <i32*> [#uses=0]
-@.str_52.upgrd.168 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@"\01text.19" = external global [128 x i8] ; <[128 x i8]*> [#uses=0]
-@.str_5659 = external global [12 x i8] ; <[12 x i8]*> [#uses=0]
-@.str_62.upgrd.169 = external global [14 x i8] ; <[14 x i8]*> [#uses=0]
-@.str_6662 = external global [5 x i8] ; <[5 x i8]*> [#uses=0]
-@.str_68.upgrd.170 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_69.upgrd.171 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_70 = external global [16 x i8] ; <[16 x i8]*> [#uses=0]
-@.str_72.upgrd.172 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_74.upgrd.173 = external global [23 x i8] ; <[23 x i8]*> [#uses=0]
-@.str_76 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_78 = external global [57 x i8] ; <[57 x i8]*> [#uses=0]
-@.str_80 = external global [45 x i8] ; <[45 x i8]*> [#uses=0]
-@.str_82 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_84.upgrd.174 = external global [10 x i8] ; <[10 x i8]*> [#uses=0]
-@.str_86.upgrd.175 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_88 = external global [7 x i8] ; <[7 x i8]*> [#uses=0]
-@.str_90.upgrd.176 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
-@.str_92.upgrd.177 = external global [19 x i8] ; <[19 x i8]*> [#uses=0]
-@.str_94.upgrd.178 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
-@.str_95.upgrd.179 = external global [48 x i8] ; <[48 x i8]*> [#uses=0]
-@.str_97.upgrd.180 = external global [18 x i8] ; <[18 x i8]*> [#uses=0]
-@.str_98.upgrd.181 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_100.upgrd.182 = external global [22 x i8] ; <[22 x i8]*> [#uses=0]
-@.str_163.upgrd.183 = external global [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str_2.upgrd.184 = external global [38 x i8] ; <[38 x i8]*> [#uses=0]
-@.str_3.upgrd.185 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_4.upgrd.186 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_5.upgrd.187 = external global [51 x i8] ; <[51 x i8]*> [#uses=0]
-@.str_6.upgrd.188 = external global [30 x i8] ; <[30 x i8]*> [#uses=0]
-@.str_7.upgrd.189 = external global [28 x i8] ; <[28 x i8]*> [#uses=0]
-@.str_8.upgrd.190 = external global [33 x i8] ; <[33 x i8]*> [#uses=0]
-@.str_9.upgrd.191 = external global [54 x i8] ; <[54 x i8]*> [#uses=0]
-@.str_10.upgrd.192 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_11.upgrd.193 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_12.upgrd.194 = external global [47 x i8] ; <[47 x i8]*> [#uses=0]
-@.str_13.upgrd.195 = external global [46 x i8] ; <[46 x i8]*> [#uses=0]
-@.str_14.upgrd.196 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_15.upgrd.197 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_16.upgrd.198 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_17.upgrd.199 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_18.upgrd.200 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_19.upgrd.201 = external global [41 x i8] ; <[41 x i8]*> [#uses=0]
-@.str_20.upgrd.202 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_22.upgrd.203 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_23.upgrd.204 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_24.upgrd.205 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_26.upgrd.206 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_27.upgrd.207 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_28.upgrd.208 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_30.upgrd.209 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_31.upgrd.210 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_32.upgrd.211 = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
-@.str_33.upgrd.212 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_34.upgrd.213 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_3565 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_36.upgrd.214 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_37.upgrd.215 = external global [41 x i8] ; <[41 x i8]*> [#uses=0]
-@.str_38.upgrd.216 = external global [41 x i8] ; <[41 x i8]*> [#uses=0]
-@.str_39 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_40 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_41.upgrd.217 = external global [40 x i8] ; <[40 x i8]*> [#uses=0]
-@.str_42.upgrd.218 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_43.upgrd.219 = external global [41 x i8] ; <[41 x i8]*> [#uses=0]
-@.str_44.upgrd.220 = external global [41 x i8] ; <[41 x i8]*> [#uses=0]
-@.str_45.upgrd.221 = external global [39 x i8] ; <[39 x i8]*> [#uses=0]
-@.str_46.upgrd.222 = external global [35 x i8] ; <[35 x i8]*> [#uses=0]
-@.str_47.upgrd.223 = external global [50 x i8] ; <[50 x i8]*> [#uses=0]
-@.str_48.upgrd.224 = external global [26 x i8] ; <[26 x i8]*> [#uses=0]
-@.str_49.upgrd.225 = external global [31 x i8] ; <[31 x i8]*> [#uses=0]
-@.str_50.upgrd.226 = external global [15 x i8] ; <[15 x i8]*> [#uses=0]
-@.str_51.upgrd.227 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
-@.str_52.upgrd.228 = external global [24 x i8] ; <[24 x i8]*> [#uses=0]
-@.str_53.upgrd.229 = external global [9 x i8] ; <[9 x i8]*> [#uses=0]
-
-declare i64 @AttacksFrom(i32, i32)
-
-declare i64 @AttacksTo(i32)
-
-declare i32 @Attacked(i32, i32)
-
-declare i64 @Mask(i32)
-
-declare i32 @PopCnt(i64)
-
-declare i32 @FirstOne(i64)
-
-declare i32 @LastOne(i64)
-
-declare i32 @DrawScore()
-
-declare i32 @Drawn(i32)
-
-declare i8* @strchr(i8*, i32)
-
-declare i32 @strcmp(i8*, i8*)
-
-declare i32 @strlen(i8*)
-
-declare i32 @printf(i8*, ...)
-
-declare void @Edit()
-
-declare void @llvm.memcpy(i8*, i8*, i32, i32)
-
-declare i32 @fflush(%struct.__sFILE*)
-
-declare i32 @Read(i32, i8*)
-
-declare i32 @ReadParse(i8*, i8**, i8*)
-
-declare void @DisplayChessBoard(%struct.__sFILE*, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i64, i32, i32, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8)
-
-declare void @SetChessBitBoards(%typedef.SEARCH_POSITION*)
-
-declare i32 @EnPrise(i32, i32)
-
-declare i64 @SwapXray(i64, i32, i32)
-
-declare i32 @Evaluate(i32, i32, i32, i32)
-
-declare i32 @EvaluateMate()
-
-declare i32 @EvaluatePawns()
-
-declare i32 @EvaluatePassedPawns()
-
-declare i32 @EvaluatePassedPawnRaces(i32)
-
-declare i32 @Swap(i32, i32, i32)
-
-declare i32 @EvaluateDevelopment(i32)
-
-declare i32 @EvaluateDraws()
-
-declare i32 @HasOpposition(i32, i32, i32)
-
-declare void @HistoryBest(i32, i32, i32)
-
-declare void @HistoryRefutation(i32, i32, i32)
-
-declare i32 @sprintf(i8*, i8*, ...)
-
-declare void @Initialize(i32)
-
-declare void @InitializeZeroMasks()
-
-declare void @InitializeMasks()
-
-declare void @InitializeRandomHash()
-
-declare void @InitializeAttackBoards()
-
-declare void @InitializePawnMasks()
-
-declare void @InitializePieceMasks()
-
-declare void @InitializeChessBoard(%typedef.SEARCH_POSITION*)
-
-declare %struct.__sFILE* @fopen(i8*, i8*)
-
-define i32 @Option() {
-no_exit.53.outer:
- %tmp.4747 = shl i32 7, 3 ; <i32> [#uses=1]
- %tmp.4779 = icmp eq %struct.__sFILE* getelementptr ([0 x %struct.__sFILE]* @__sF, i32 0, i32 1), null ; <i1> [#uses=2]
- br label %no_exit.53
-no_exit.53: ; preds = %else.166, %else.168, %then.360, %no_exit.53.outer
- %file.2.3.3.ph = phi i32 [ 0, %no_exit.53.outer ], [ %inc.551688, %then.360 ], [ %inc.551701, %else.168 ], [ %file.2.3.3.ph, %else.166 ] ; <i32> [#uses=2]
- %nempty.5.3.ph = phi i32 [ 0, %no_exit.53.outer ], [ %nempty.5.3, %then.360 ], [ %nempty.5.3, %else.168 ], [ %nempty.5.3.ph, %else.166 ] ; <i32> [#uses=2]
- %indvar2053.ui = phi i32 [ 0, %no_exit.53.outer ], [ 0, %then.360 ], [ 0, %else.168 ], [ %indvar.next2054, %else.166 ] ; <i32> [#uses=2]
- %indvar2053 = bitcast i32 %indvar2053.ui to i32 ; <i32> [#uses=2]
- %file.2.3.3 = add i32 %indvar2053, %file.2.3.3.ph ; <i32> [#uses=4]
- %nempty.5.3 = add i32 %indvar2053, %nempty.5.3.ph ; <i32> [#uses=3]
- %tmp.4749 = add i32 %file.2.3.3, %tmp.4747 ; <i32> [#uses=1]
- %tmp.4750 = getelementptr %typedef.CHESS_POSITION* @search, i32 0, i32 22, i32 %tmp.4749 ; <i8*> [#uses=3]
- %tmp.4751 = load i8* %tmp.4750 ; <i8> [#uses=1]
- %tmp.4752 = icmp eq i8 %tmp.4751, 0 ; <i1> [#uses=1]
- br i1 %tmp.4752, label %else.166, label %then.357
-then.357: ; preds = %no_exit.53
- %tmp.4755 = icmp eq i32 %nempty.5.3, 0 ; <i1> [#uses=1]
- br i1 %tmp.4755, label %endif.358, label %then.358
-then.358: ; preds = %then.357
- ret i32 0
-endif.358: ; preds = %then.357
- br i1 %tmp.4779, label %else.168, label %then.360
-then.360: ; preds = %endif.358
- %tmp.4791 = load i8* %tmp.4750 ; <i8> [#uses=1]
- %tmp.4792 = sext i8 %tmp.4791 to i32 ; <i32> [#uses=1]
- %tmp.4793 = add i32 %tmp.4792, 7 ; <i32> [#uses=1]
- %tmp.4794 = getelementptr [15 x i8]* null, i32 0, i32 %tmp.4793 ; <i8*> [#uses=1]
- %tmp.4795 = load i8* %tmp.4794 ; <i8> [#uses=1]
- %tmp.4796 = sext i8 %tmp.4795 to i32 ; <i32> [#uses=1]
- %tmp.4781 = call i32 (%struct.__sFILE*, i8*, ...)* @fprintf( %struct.__sFILE* getelementptr ([0 x %struct.__sFILE]* @__sF, i32 0, i32 1), i8* getelementptr ([3 x i8]* @.str_36, i32 0, i32 0), i32 %tmp.4796 ) ; <i32> [#uses=0]
- %inc.551688 = add i32 %file.2.3.3, 1 ; <i32> [#uses=2]
- %tmp.47421699 = icmp slt i32 %inc.551688, 8 ; <i1> [#uses=1]
- br i1 %tmp.47421699, label %no_exit.53, label %loopexit.56
-else.168: ; preds = %endif.358
- %tmp.4799 = call i32 @strlen( i8* getelementptr ([80 x i8]* @initial_position, i32 0, i32 0) ) ; <i32> [#uses=2]
- %gep.upgrd.230 = zext i32 %tmp.4799 to i64 ; <i64> [#uses=1]
- %tmp.4802 = getelementptr [80 x i8]* @initial_position, i32 0, i64 %gep.upgrd.230 ; <i8*> [#uses=1]
- %tmp.4811 = load i8* %tmp.4750 ; <i8> [#uses=1]
- %tmp.4812 = sext i8 %tmp.4811 to i32 ; <i32> [#uses=1]
- %tmp.4813 = add i32 %tmp.4812, 7 ; <i32> [#uses=1]
- %tmp.4814 = getelementptr [15 x i8]* null, i32 0, i32 %tmp.4813 ; <i8*> [#uses=1]
- %tmp.4815 = load i8* %tmp.4814 ; <i8> [#uses=1]
- store i8 %tmp.4815, i8* %tmp.4802
- %tmp.4802.sum = add i32 %tmp.4799, 1 ; <i32> [#uses=1]
- %gep.upgrd.231 = zext i32 %tmp.4802.sum to i64 ; <i64> [#uses=1]
- %tmp.4802.end = getelementptr [80 x i8]* @initial_position, i32 0, i64 %gep.upgrd.231 ; <i8*> [#uses=1]
- store i8 0, i8* %tmp.4802.end
- %inc.551701 = add i32 %file.2.3.3, 1 ; <i32> [#uses=2]
- %tmp.47421703 = icmp slt i32 %inc.551701, 8 ; <i1> [#uses=1]
- br i1 %tmp.47421703, label %no_exit.53, label %loopexit.56
-else.166: ; preds = %no_exit.53
- %inc.55 = add i32 %file.2.3.3, 1 ; <i32> [#uses=1]
- %tmp.47421705 = icmp slt i32 %inc.55, 8 ; <i1> [#uses=1]
- %indvar.next2054 = add i32 %indvar2053.ui, 1 ; <i32> [#uses=1]
- br i1 %tmp.47421705, label %no_exit.53, label %loopexit.56
-loopexit.56: ; preds = %else.166, %else.168, %then.360
- br i1 %tmp.4779, label %else.169, label %then.361
-then.361: ; preds = %loopexit.56
- %tmp.4822 = call i32 @fwrite( i8* getelementptr ([2 x i8]* @.str_654, i32 0, i32 0), i32 1, i32 1, %struct.__sFILE* getelementptr ([0 x %struct.__sFILE]* @__sF, i32 0, i32 1) ) ; <i32> [#uses=0]
- %dec.101707 = add i32 7, -1 ; <i32> [#uses=1]
- %tmp.47391709 = icmp sgt i32 %dec.101707, -1 ; <i1> [#uses=0]
- ret i32 0
-else.169: ; preds = %loopexit.56
- %tmp.4827 = call i32 @strlen( i8* getelementptr ([80 x i8]* @initial_position, i32 0, i32 0) ) ; <i32> [#uses=2]
- %gep.upgrd.232 = zext i32 %tmp.4827 to i64 ; <i64> [#uses=1]
- %tmp.4830 = getelementptr [80 x i8]* @initial_position, i32 0, i64 %gep.upgrd.232 ; <i8*> [#uses=1]
- store i8 47, i8* %tmp.4830
- %tmp.4830.sum = add i32 %tmp.4827, 1 ; <i32> [#uses=1]
- %gep.upgrd.233 = zext i32 %tmp.4830.sum to i64 ; <i64> [#uses=1]
- %tmp.4830.end = getelementptr [80 x i8]* @initial_position, i32 0, i64 %gep.upgrd.233 ; <i8*> [#uses=1]
- store i8 0, i8* %tmp.4830.end
- %dec.10 = add i32 7, -1 ; <i32> [#uses=1]
- %tmp.47391711 = icmp sgt i32 %dec.10, -1 ; <i1> [#uses=0]
- ret i32 0
-}
-
-declare void @InitializeHashTables()
-
-declare i32 @InitializeFindAttacks(i32, i32, i32)
-
-declare void @SetBoard(i32, i8**, i32)
-
-declare i32 @KingPawnSquare(i32, i32, i32, i32)
-
-declare i64 @Random64()
-
-declare i32 @Random32()
-
-declare i8* @strcpy(i8*, i8*)
-
-declare i32 @InputMove(i8*, i32, i32, i32, i32)
-
-declare i32 @InputMoveICS(i8*, i32, i32, i32, i32)
-
-declare i32* @GenerateCaptures(i32, i32, i32*)
-
-declare i32* @GenerateNonCaptures(i32, i32, i32*)
-
-declare void @MakeMove(i32, i32, i32)
-
-declare void @UnMakeMove(i32, i32, i32)
-
-declare void @Interrupt(i32)
-
-declare i32 @GetTime(i32)
-
-declare i8* @DisplayTime(i32)
-
-declare i8* @OutputMoveICS(i32*)
-
-declare void @Delay(i32)
-
-declare i32 @fprintf(%struct.__sFILE*, i8*, ...)
-
-declare void @SignalInterrupt(i32)
-
-declare void (i32)* @signal(i32, void (i32)*)
-
-declare i32 @Iterate(i32, i32, i32)
-
-declare void @PreEvaluate(i32)
-
-declare void @RootMoveList(i32)
-
-declare i8* @OutputMove(i32*, i32, i32)
-
-declare void @TimeSet(i32)
-
-declare void @StorePV(i32, i32)
-
-declare i32 @SearchRoot(i32, i32, i32, i32)
-
-declare void @Whisper(i32, i32, i32, i32, i32, i32, i8*)
-
-declare i8* @DisplayEvaluation(i32)
-
-declare i32 @LookUp(i32, i32, i32, i32*, i32*)
-
-declare i8* @strstr(i8*, i8*)
-
-declare i32 @main(i32, i8**)
-
-declare void @__main()
-
-declare i32 @atoi(i8*)
-
-declare void @NewGame(i32)
-
-declare i32 @Ponder(i32)
-
-declare i32 @fseek(%struct.__sFILE*, i32, i32)
-
-declare void @MakeMoveRoot(i32, i32)
-
-declare i32 @RepetitionDraw(i32)
-
-declare i8* @Reverse()
-
-declare i8* @Normal()
-
-declare void @TimeAdjust(i32, i32)
-
-declare void @ValidatePosition(i32, i32, i8*)
-
-declare i32 @ValidMove(i32, i32, i32)
-
-declare i32* @GenerateCheckEvasions(i32, i32, i32*)
-
-declare i64 @InterposeSquares(i32, i32, i32)
-
-declare i32 @PinnedOnKing(i32, i32)
-
-declare i32 @NextMove(i32, i32)
-
-declare i32 @NextEvasion(i32, i32)
-
-declare i32 @NextRootMove(i32)
-
-declare i32 @TimeCheck(i32)
-
-declare i32 @strncmp(i8*, i8*, i32)
-
-declare void @exit(i32)
-
-declare i32 @OptionMatch(i8*, i8*)
-
-declare i32 @fclose(%struct.__sFILE*)
-
-declare i32 @ParseTime(i8*)
-
-declare i8* @DisplayHHMM(i32)
-
-declare void @DisplayPieceBoards(i32*, i32*)
-
-declare i32 @fscanf(%struct.__sFILE*, i8*, ...)
-
-declare i32 @feof(%struct.__sFILE*)
-
-declare i8* @fgets(i8*, i32, %struct.__sFILE*)
-
-declare i32 @remove(i8*)
-
-declare i32 @__tolower(i32)
-
-declare i32 @clock()
-
-declare void @OptionPerft(i32, i32, i32)
-
-declare void @Phase()
-
-declare i32 @ReadNextMove(i8*, i32, i32)
-
-declare i32 @time(i32*)
-
-declare %struct.tm* @localtime(i32*)
-
-declare i8* @gets(i8*)
-
-declare i32 @OutputGood(i8*, i32, i32)
-
-declare i32 @CheckInput()
-
-declare void @ClearHashTables()
-
-declare i32 @Quiesce(i32, i32, i32, i32)
-
-declare void @SearchTrace(i32, i32, i32, i32, i32, i8*, i32)
-
-declare i32 @RepetitionCheck(i32, i32)
-
-declare void @ResignOrDraw(i32, i32)
-
-declare i32 @Search(i32, i32, i32, i32, i32, i32)
-
-declare void @StoreRefutation(i32, i32, i32, i32)
-
-declare void @StoreBest(i32, i32, i32, i32, i32)
-
-declare void @SearchOutput(i32, i32)
-
-declare i32 @strspn(i8*, i8*)
-
-declare i32 @isatty(i32)
-
-declare i32 @fileno(%struct.__sFILE*)
-
-declare void @llvm.memset(i8*, i8, i32, i32)
-
-declare i32 @select(i32, %struct.fd_set*, %struct.fd_set*, %struct.fd_set*, %struct.timeval*)
-
-declare void @DisplayBitBoard(i64)
-
-declare i8* @DisplayEvaluationWhisper(i32)
-
-declare i8* @DisplayTimeWhisper(i32)
-
-declare void @Display64bitWord(i64)
-
-declare void @Display2BitBoards(i64, i64)
-
-declare void @DisplayChessMove(i8*, i32)
-
-declare void @llvm.memmove(i8*, i8*, i32, i32)
-
-declare void @ReadClear()
-
-declare i8* @strtok(i8*, i8*)
-
-declare i32 @SpecReadRaw()
-
-declare i32 @read(i32, i8*, i32)
-
-declare i32* @__error()
-
-declare i32 @ReadChessMove(%struct.__sFILE*, i32, i32)
-
-declare i64 @ValidateComputeBishopAttacks(i32)
-
-declare i64 @ValidateComputeRookAttacks(i32)
-
-declare i8* @memchr(i8*, i32, i32)
-
-declare i32 @fwrite(i8*, i32, i32, %struct.__sFILE*)
diff --git a/test/Transforms/LoopUnswitch/2006-02-22-UnswitchCrash.ll b/test/Transforms/LoopUnswitch/crash.ll
index a50bd54e78708..fac55a6bb1a79 100644
--- a/test/Transforms/LoopUnswitch/2006-02-22-UnswitchCrash.ll
+++ b/test/Transforms/LoopUnswitch/crash.ll
@@ -1,6 +1,6 @@
; RUN: opt < %s -loop-unswitch -disable-output
-define void @sort_Eq(i32* %S2) {
+define void @test1(i32* %S2) {
entry:
br i1 false, label %list_Length.exit, label %cond_true.i
cond_true.i: ; preds = %entry
@@ -30,3 +30,18 @@ return: ; preds = %return.loopexit, %list_Length.exit9
ret void
}
+define void @test2(i32 %x1, i32 %y1, i32 %z1, i32 %r1) nounwind {
+entry:
+ br label %bb.nph
+
+bb.nph: ; preds = %entry
+ %and.i13521 = and <4 x i1> undef, undef ; <<4 x i1>> [#uses=1]
+ br label %for.body
+
+for.body: ; preds = %for.body, %bb.nph
+ %or.i = select <4 x i1> %and.i13521, <4 x i32> undef, <4 x i32> undef ; <<4 x i32>> [#uses=0]
+ br i1 false, label %for.body, label %for.end
+
+for.end: ; preds = %for.body, %entry
+ ret void
+}
diff --git a/test/Transforms/Mem2Reg/ConvertDebugInfo.ll b/test/Transforms/Mem2Reg/ConvertDebugInfo.ll
index 8e309c0901e15..a013a1db997ee 100644
--- a/test/Transforms/Mem2Reg/ConvertDebugInfo.ll
+++ b/test/Transforms/Mem2Reg/ConvertDebugInfo.ll
@@ -9,8 +9,8 @@ define double @testfunc(i32 %i, double %j) {
call void @llvm.dbg.declare(metadata !{double* %J}, metadata !1)
; CHECK: call void @llvm.dbg.value(metadata !{i32 %i}, i64 0, metadata !0)
store i32 %i, i32* %I
-; CHECK: call void @llvm.dbg.value(metadata !{double %j}, i64 0, metadata !1)
- store double %j, double* %J
+; CHECK: call void @llvm.dbg.value(metadata !{double %j}, i64 0, metadata !1), !dbg !3
+ store double %j, double* %J, !dbg !3
%t1 = load i32* %I ; <i32> [#uses=1]
%t2 = add i32 %t1, 1 ; <i32> [#uses=1]
store i32 %t2, i32* %I
@@ -29,3 +29,4 @@ declare void @llvm.dbg.declare(metadata, metadata) nounwind readnone
!0 = metadata !{i32 459008, metadata !1, metadata !"foo", metadata !2, i32 5, metadata !"foo"} ; [ DW_TAG_auto_variable ]
!1 = metadata !{i32 459008, metadata !1, metadata !"foo", metadata !0, i32 5, metadata !1} ; [ DW_TAG_auto_variable ]
!2 = metadata !{i32 458804, i32 0, metadata !2, metadata !"foo", metadata !"bar", metadata !"bar", metadata !2, i32 3, metadata !0, i1 false, i1 true} ; [ DW_TAG_variable ]
+!3 = metadata !{i32 4, i32 0, metadata !0, null}
diff --git a/test/Transforms/Reassociate/basictest.ll b/test/Transforms/Reassociate/basictest.ll
index e77d83d160e40..086474066c561 100644
--- a/test/Transforms/Reassociate/basictest.ll
+++ b/test/Transforms/Reassociate/basictest.ll
@@ -203,4 +203,14 @@ define i32 @test14(i32 %X1, i32 %X2) {
; CHECK-NEXT: ret i32
}
+; Do not reassociate expressions of type i1
+define i32 @test15(i32 %X1, i32 %X2, i32 %X3) {
+ %A = icmp ne i32 %X1, 0
+ %B = icmp slt i32 %X2, %X3
+ %C = and i1 %A, %B
+ %D = select i1 %C, i32 %X1, i32 0
+ ret i32 %D
+; CHECK: @test15
+; CHECK: and i1 %A, %B
+}
diff --git a/test/Transforms/SimplifyCFG/MagicPointer.ll b/test/Transforms/SimplifyCFG/MagicPointer.ll
new file mode 100644
index 0000000000000..54e5b14880c09
--- /dev/null
+++ b/test/Transforms/SimplifyCFG/MagicPointer.ll
@@ -0,0 +1,76 @@
+; Test that simplifycfg can create switch instructions from constant pointers.
+;
+; RUN: opt < %s -simplifycfg -S | FileCheck %s
+
+; CHECK: switch i64 %magicptr
+; CHECK: i64 0, label
+; CHECK: i64 1, label
+; CHECK: i64 2, label
+; CHECK: i64 3, label
+; CHECK: i64 4, label
+; CHECK-NOT: br
+; CHECK: }
+
+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-n8:16:32:64"
+target triple = "x86_64-apple-darwin10.0.0"
+
+@.str = private constant [5 x i8] c"null\00" ; <[5 x i8]*> [#uses=2]
+@.str1 = private constant [4 x i8] c"one\00" ; <[4 x i8]*> [#uses=2]
+@.str2 = private constant [4 x i8] c"two\00" ; <[4 x i8]*> [#uses=2]
+@.str3 = private constant [5 x i8] c"four\00" ; <[5 x i8]*> [#uses=2]
+
+define void @f(i8* %x) nounwind ssp {
+entry:
+ %tobool = icmp eq i8* %x, null ; <i1> [#uses=1]
+ br i1 %tobool, label %if.then, label %if.else
+
+if.then: ; preds = %entry
+ %call = call i32 @puts(i8* getelementptr inbounds ([5 x i8]* @.str, i64 0, i64 0)) nounwind ; <i32> [#uses=0]
+ br label %if.end21
+
+if.else: ; preds = %entry
+ %cmp = icmp eq i8* %x, inttoptr (i64 1 to i8*) ; <i1> [#uses=1]
+ br i1 %cmp, label %if.then2, label %if.else4
+
+if.then2: ; preds = %if.else
+ %call3 = call i32 @puts(i8* getelementptr inbounds ([4 x i8]* @.str1, i64 0, i64 0)) nounwind ; <i32> [#uses=0]
+ br label %if.end20
+
+if.else4: ; preds = %if.else
+ %cmp6 = icmp eq i8* %x, inttoptr (i64 2 to i8*) ; <i1> [#uses=1]
+ br i1 %cmp6, label %if.then9, label %lor.lhs.false
+
+lor.lhs.false: ; preds = %if.else4
+ %cmp8 = icmp eq i8* %x, inttoptr (i64 3 to i8*) ; <i1> [#uses=1]
+ br i1 %cmp8, label %if.then9, label %if.else11
+
+if.then9: ; preds = %lor.lhs.false, %if.else4
+ %call10 = call i32 @puts(i8* getelementptr inbounds ([4 x i8]* @.str2, i64 0, i64 0)) nounwind ; <i32> [#uses=0]
+ br label %if.end19
+
+if.else11: ; preds = %lor.lhs.false
+ %cmp13 = icmp eq i8* %x, inttoptr (i64 4 to i8*) ; <i1> [#uses=1]
+ br i1 %cmp13, label %if.then14, label %if.else16
+
+if.then14: ; preds = %if.else11
+ %call15 = call i32 @puts(i8* getelementptr inbounds ([5 x i8]* @.str3, i64 0, i64 0)) nounwind ; <i32> [#uses=0]
+ br label %if.end
+
+if.else16: ; preds = %if.else11
+ %call18 = call i32 @puts(i8* %x) nounwind ; <i32> [#uses=0]
+ br label %if.end
+
+if.end: ; preds = %if.else16, %if.then14
+ br label %if.end19
+
+if.end19: ; preds = %if.end, %if.then9
+ br label %if.end20
+
+if.end20: ; preds = %if.end19, %if.then2
+ br label %if.end21
+
+if.end21: ; preds = %if.end20, %if.then
+ ret void
+}
+
+declare i32 @puts(i8*)
diff --git a/test/Transforms/SimplifyLibCalls/strcpy_chk.ll b/test/Transforms/SimplifyLibCalls/strcpy_chk.ll
new file mode 100644
index 0000000000000..422cbd9345ad4
--- /dev/null
+++ b/test/Transforms/SimplifyLibCalls/strcpy_chk.ll
@@ -0,0 +1,12 @@
+; RUN: opt < %s -simplify-libcalls -S | FileCheck %s
+@a = common global [60 x i8] zeroinitializer, align 1 ; <[60 x i8]*> [#uses=1]
+@.str = private constant [8 x i8] c"abcdefg\00" ; <[8 x i8]*> [#uses=1]
+
+define i8* @foo() nounwind {
+; CHECK: @foo
+; CHECK-NEXT: call i8* @strcpy
+ %call = call i8* @__strcpy_chk(i8* getelementptr inbounds ([60 x i8]* @a, i32 0, i32 0), i8* getelementptr inbounds ([8 x i8]* @.str, i32 0, i32 0), i32 60) ; <i8*> [#uses=1]
+ ret i8* %call
+}
+
+declare i8* @__strcpy_chk(i8*, i8*, i32) nounwind