summaryrefslogtreecommitdiff
path: root/test/CodeGen/Generic
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/Generic')
-rw-r--r--test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll13
-rw-r--r--test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll14
-rw-r--r--test/CodeGen/Generic/2003-05-27-phifcmpd.ll19
-rw-r--r--test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll13
-rw-r--r--test/CodeGen/Generic/2003-05-27-usefsubasbool.ll14
-rw-r--r--test/CodeGen/Generic/2003-05-28-ManyArgs.ll153
-rw-r--r--test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll39
-rw-r--r--test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll33
-rw-r--r--test/CodeGen/Generic/2003-07-06-BadIntCmp.ll51
-rw-r--r--test/CodeGen/Generic/2003-07-07-BadLongConst.ll20
-rw-r--r--test/CodeGen/Generic/2003-07-08-BadCastToBool.ll34
-rw-r--r--test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll40
-rw-r--r--test/CodeGen/Generic/2004-02-08-UnwindSupport.ll17
-rw-r--r--test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll13
-rw-r--r--test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll20
-rw-r--r--test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll20
-rw-r--r--test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll11
-rw-r--r--test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll6
-rw-r--r--test/CodeGen/Generic/2005-10-21-longlonggtu.ll16
-rw-r--r--test/CodeGen/Generic/2005-12-01-Crash.ll20
-rw-r--r--test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll7
-rw-r--r--test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll35
-rw-r--r--test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll15
-rw-r--r--test/CodeGen/Generic/2006-02-12-InsertLibcall.ll60
-rw-r--r--test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll95
-rw-r--r--test/CodeGen/Generic/2006-04-11-vecload.ll12
-rw-r--r--test/CodeGen/Generic/2006-04-26-SetCCAnd.ll40
-rw-r--r--test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll9
-rw-r--r--test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll29
-rw-r--r--test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll10
-rw-r--r--test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll35
-rw-r--r--test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll279
-rw-r--r--test/CodeGen/Generic/2006-07-03-schedulers.ll32
-rw-r--r--test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll112
-rw-r--r--test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll117
-rw-r--r--test/CodeGen/Generic/2006-09-06-SwitchLowering.ll96
-rw-r--r--test/CodeGen/Generic/2006-10-27-CondFolding.ll21
-rw-r--r--test/CodeGen/Generic/2006-10-29-Crash.ll22
-rw-r--r--test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll11
-rw-r--r--test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll41
-rw-r--r--test/CodeGen/Generic/2006-12-16-InlineAsmCrash.ll30
-rw-r--r--test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll12
-rw-r--r--test/CodeGen/Generic/2007-02-16-BranchFold.ll95
-rw-r--r--test/CodeGen/Generic/2007-02-23-DAGCombine-Miscompile.ll13
-rw-r--r--test/CodeGen/Generic/2007-02-25-invoke.ll12
-rw-r--r--test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll11
-rw-r--r--test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll27
-rw-r--r--test/CodeGen/Generic/2007-04-14-BitTestsBadMask.ll160
-rw-r--r--test/CodeGen/Generic/2007-04-17-lsr-crash.ll35
-rw-r--r--test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll18
-rw-r--r--test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll8
-rw-r--r--test/CodeGen/Generic/2007-04-27-LargeMemObject.ll13
-rw-r--r--test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll59
-rw-r--r--test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll12
-rw-r--r--test/CodeGen/Generic/2007-05-05-Personality.ll35
-rw-r--r--test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll90
-rw-r--r--test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll2866
-rw-r--r--test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll159
-rw-r--r--test/CodeGen/Generic/2007-12-17-InvokeAsm.ll15
-rw-r--r--test/CodeGen/Generic/2007-12-31-UnusedSelector.ll36
-rw-r--r--test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll31
-rw-r--r--test/CodeGen/Generic/2008-01-30-LoadCrash.ll19
-rw-r--r--test/CodeGen/Generic/2008-02-04-Ctlz.ll21
-rw-r--r--test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll14
-rw-r--r--test/CodeGen/Generic/2008-02-20-MatchingMem.ll9
-rw-r--r--test/CodeGen/Generic/2008-02-25-NegateZero.ll14
-rw-r--r--test/CodeGen/Generic/2008-02-26-NegatableCrash.ll50
-rw-r--r--test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll7
-rw-r--r--test/CodeGen/Generic/2009-03-17-LSR-APInt.ll92
-rw-r--r--test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll10
-rw-r--r--test/CodeGen/Generic/2009-04-10-SinkCrash.ll16
-rw-r--r--test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll16
-rw-r--r--test/CodeGen/Generic/APIntLoadStore.ll2049
-rw-r--r--test/CodeGen/Generic/APIntParam.ll1537
-rw-r--r--test/CodeGen/Generic/APIntSextParam.ll1537
-rw-r--r--test/CodeGen/Generic/APIntZextParam.ll1537
-rw-r--r--test/CodeGen/Generic/BasicInstrs.ll54
-rw-r--r--test/CodeGen/Generic/BurgBadRegAlloc.ll829
-rw-r--r--test/CodeGen/Generic/ConstantExprLowering.ll22
-rw-r--r--test/CodeGen/Generic/GC/alloc_loop.ll53
-rw-r--r--test/CodeGen/Generic/GC/argpromotion.ll19
-rw-r--r--test/CodeGen/Generic/GC/badreadproto.ll13
-rw-r--r--test/CodeGen/Generic/GC/badrootproto.ll13
-rw-r--r--test/CodeGen/Generic/GC/badwriteproto.ll22
-rw-r--r--test/CodeGen/Generic/GC/deadargelim.ll16
-rw-r--r--test/CodeGen/Generic/GC/dg.exp3
-rw-r--r--test/CodeGen/Generic/GC/fat.ll10
-rw-r--r--test/CodeGen/Generic/GC/frame_size.ll14
-rw-r--r--test/CodeGen/Generic/GC/inline.ll23
-rw-r--r--test/CodeGen/Generic/GC/inline2.ll24
-rw-r--r--test/CodeGen/Generic/GC/lower_gcroot.ll11
-rw-r--r--test/CodeGen/Generic/GC/outside.ll10
-rw-r--r--test/CodeGen/Generic/GC/redundant_init.ll17
-rw-r--r--test/CodeGen/Generic/GC/simple_ocaml.ll42
-rw-r--r--test/CodeGen/Generic/Makefile23
-rw-r--r--test/CodeGen/Generic/SwitchLowering.ll28
-rw-r--r--test/CodeGen/Generic/add-with-overflow-24.ll42
-rw-r--r--test/CodeGen/Generic/add-with-overflow.ll41
-rw-r--r--test/CodeGen/Generic/addc-fold2.ll10
-rw-r--r--test/CodeGen/Generic/asm-large-immediate.ll8
-rw-r--r--test/CodeGen/Generic/badCallArgLRLLVM.ll31
-rw-r--r--test/CodeGen/Generic/badFoldGEP.ll27
-rw-r--r--test/CodeGen/Generic/badarg6.ll32
-rw-r--r--test/CodeGen/Generic/badlive.ll28
-rw-r--r--test/CodeGen/Generic/bit-intrinsics.ll32
-rw-r--r--test/CodeGen/Generic/bool-to-double.ll6
-rw-r--r--test/CodeGen/Generic/bool-vector.ll11
-rw-r--r--test/CodeGen/Generic/call-ret0.ll10
-rw-r--r--test/CodeGen/Generic/call-ret42.ll10
-rw-r--r--test/CodeGen/Generic/call-void.ll11
-rw-r--r--test/CodeGen/Generic/call2-ret0.ll16
-rw-r--r--test/CodeGen/Generic/cast-fp.ll33
-rw-r--r--test/CodeGen/Generic/constindices.ll44
-rw-r--r--test/CodeGen/Generic/debug-info.ll19
-rw-r--r--test/CodeGen/Generic/dg.exp3
-rw-r--r--test/CodeGen/Generic/div-neg-power-2.ll7
-rw-r--r--test/CodeGen/Generic/empty-load-store.ll18
-rw-r--r--test/CodeGen/Generic/externally_available.ll10
-rw-r--r--test/CodeGen/Generic/fastcall.ll14
-rw-r--r--test/CodeGen/Generic/fneg-fabs.ll26
-rw-r--r--test/CodeGen/Generic/fp-to-int-invalid.ll18
-rw-r--r--test/CodeGen/Generic/fp_to_int.ll81
-rw-r--r--test/CodeGen/Generic/fpowi-promote.ll12
-rw-r--r--test/CodeGen/Generic/fwdtwice.ll29
-rw-r--r--test/CodeGen/Generic/getresult-undef.ll6
-rw-r--r--test/CodeGen/Generic/global-ret0.ll8
-rw-r--r--test/CodeGen/Generic/hello.ll11
-rw-r--r--test/CodeGen/Generic/i128-addsub.ll39
-rw-r--r--test/CodeGen/Generic/i128-arith.ll11
-rw-r--r--test/CodeGen/Generic/inline-asm-special-strings.ll6
-rw-r--r--test/CodeGen/Generic/intrinsics.ll40
-rw-r--r--test/CodeGen/Generic/invalid-memcpy.ll19
-rw-r--r--test/CodeGen/Generic/isunord.ll10
-rw-r--r--test/CodeGen/Generic/llvm-ct-intrinsics.ll62
-rw-r--r--test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll18
-rw-r--r--test/CodeGen/Generic/negintconst.ll47
-rw-r--r--test/CodeGen/Generic/nested-select.ll19
-rw-r--r--test/CodeGen/Generic/phi-immediate-factoring.ll54
-rw-r--r--test/CodeGen/Generic/pr2625.ll17
-rw-r--r--test/CodeGen/Generic/pr3288.ll67
-rw-r--r--test/CodeGen/Generic/print-add.ll18
-rw-r--r--test/CodeGen/Generic/print-arith-fp.ll61
-rw-r--r--test/CodeGen/Generic/print-arith-int.ll84
-rw-r--r--test/CodeGen/Generic/print-int.ll13
-rw-r--r--test/CodeGen/Generic/print-mul-exp.ll55
-rw-r--r--test/CodeGen/Generic/print-mul.ll32
-rw-r--r--test/CodeGen/Generic/print-shift.ll34
-rw-r--r--test/CodeGen/Generic/ret0.ll5
-rw-r--r--test/CodeGen/Generic/ret42.ll5
-rw-r--r--test/CodeGen/Generic/select-cc.ll9
-rw-r--r--test/CodeGen/Generic/select.ll187
-rw-r--r--test/CodeGen/Generic/shift-int64.ll12
-rw-r--r--test/CodeGen/Generic/spillccr.ll49
-rw-r--r--test/CodeGen/Generic/stack-protector.ll25
-rw-r--r--test/CodeGen/Generic/stacksave-restore.ll14
-rw-r--r--test/CodeGen/Generic/storetrunc-fp.ll8
-rw-r--r--test/CodeGen/Generic/switch-crit-edge-constant.ll52
-rw-r--r--test/CodeGen/Generic/switch-lower-feature-2.ll50
-rw-r--r--test/CodeGen/Generic/switch-lower-feature.ll29
-rw-r--r--test/CodeGen/Generic/switch-lower.ll334
-rw-r--r--test/CodeGen/Generic/trap.ll9
-rw-r--r--test/CodeGen/Generic/v-split.ll11
-rw-r--r--test/CodeGen/Generic/vector-casts.ll45
-rw-r--r--test/CodeGen/Generic/vector-constantexpr.ll7
-rw-r--r--test/CodeGen/Generic/vector-identity-shuffle.ll17
-rw-r--r--test/CodeGen/Generic/vector.ll154
166 files changed, 15937 insertions, 0 deletions
diff --git a/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll b/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll
new file mode 100644
index 0000000000000..f6d95cbd53fc0
--- /dev/null
+++ b/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-as %s -o - | llc
+
+; This caused the backend to assert out with:
+; SparcInstrInfo.cpp:103: failed assertion `0 && "Unexpected unsigned type"'
+;
+
+declare void @bar(i8*)
+
+define void @foo() {
+ %cast225 = inttoptr i64 123456 to i8* ; <i8*> [#uses=1]
+ call void @bar( i8* %cast225 )
+ ret void
+}
diff --git a/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll b/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll
new file mode 100644
index 0000000000000..d77b9e15596ee
--- /dev/null
+++ b/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | llc
+
+; Compiling this file produces:
+; Sparc.cpp:91: failed assertion `(offset - OFFSET) % getStackFrameSizeAlignment() == 0'
+;
+declare i32 @SIM(i8*, i8*, i32, i32, i32, [256 x i32]*, i32, i32, i32)
+
+define void @foo() {
+bb0:
+ %V = alloca [256 x i32], i32 256 ; <[256 x i32]*> [#uses=1]
+ call i32 @SIM( i8* null, i8* null, i32 0, i32 0, i32 0, [256 x i32]* %V, i32 0, i32 0, i32 2 ) ; <i32>:0 [#uses=0]
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2003-05-27-phifcmpd.ll b/test/CodeGen/Generic/2003-05-27-phifcmpd.ll
new file mode 100644
index 0000000000000..cf17ef455418c
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-27-phifcmpd.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | llc
+
+define void @QRiterate(i32 %p.1, double %tmp.212) {
+entry:
+ %tmp.184 = icmp sgt i32 %p.1, 0 ; <i1> [#uses=1]
+ br i1 %tmp.184, label %shortcirc_next.1, label %shortcirc_done.1
+
+shortcirc_next.1: ; preds = %shortcirc_done.1, %entry
+ %tmp.213 = fcmp une double %tmp.212, 0.000000e+00 ; <i1> [#uses=1]
+ br label %shortcirc_done.1
+
+shortcirc_done.1: ; preds = %shortcirc_next.1, %entry
+ %val.1 = phi i1 [ false, %entry ], [ %tmp.213, %shortcirc_next.1 ] ; <i1> [#uses=1]
+ br i1 %val.1, label %shortcirc_next.1, label %exit.1
+
+exit.1: ; preds = %shortcirc_done.1
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll b/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll
new file mode 100644
index 0000000000000..03b2a16846706
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-as < %s | llc
+
+define void @QRiterate(double %tmp.212) {
+ %tmp.213 = fcmp une double %tmp.212, 0.000000e+00 ; <i1> [#uses=1]
+ br label %shortcirc_next.1
+
+shortcirc_next.1: ; preds = %shortcirc_next.1, %0
+ br i1 %tmp.213, label %shortcirc_next.1, label %exit.1
+
+exit.1: ; preds = %shortcirc_next.1
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll b/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll
new file mode 100644
index 0000000000000..b456eebea2c23
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | llc
+
+define void @QRiterate(double %tmp.212) {
+entry:
+ br label %shortcirc_next.1
+
+shortcirc_next.1: ; preds = %shortcirc_next.1, %entry
+ %tmp.213 = fcmp une double %tmp.212, 0.000000e+00 ; <i1> [#uses=1]
+ br i1 %tmp.213, label %shortcirc_next.1, label %exit.1
+
+exit.1: ; preds = %shortcirc_next.1
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2003-05-28-ManyArgs.ll b/test/CodeGen/Generic/2003-05-28-ManyArgs.ll
new file mode 100644
index 0000000000000..595700ad183ef
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-28-ManyArgs.ll
@@ -0,0 +1,153 @@
+; RUN: llvm-as < %s | llc
+
+;; Date: May 28, 2003.
+;; From: test/Programs/External/SPEC/CINT2000/175.vpr.llvm.bc
+;; Function: int %main(int %argc.1, sbyte** %argv.1)
+;;
+;; Error: A function call with about 56 arguments causes an assertion failure
+;; in llc because the register allocator cannot find a register
+;; not used explicitly by the call instruction.
+;;
+;; Cause: Regalloc was not keeping track of free registers correctly.
+;; It was counting the registers allocated to all outgoing arguments,
+;; even though most of those are copied to the stack (so those
+;; registers are not actually used by the call instruction).
+;;
+;; Fixed: By rewriting selection and allocation so that selection explicitly
+;; inserts all copy operations required for passing arguments and
+;; for the return value of a call, copying to/from registers
+;; and/or to stack locations as needed.
+;;
+ %struct..s_annealing_sched = type { i32, float, float, float, float }
+ %struct..s_chan = type { i32, float, float, float, float }
+ %struct..s_det_routing_arch = type { i32, float, float, float, i32, i32, i16, i16, i16, float, float }
+ %struct..s_placer_opts = type { i32, float, i32, i32, i8*, i32, i32 }
+ %struct..s_router_opts = type { float, float, float, float, float, i32, i32, i32, i32 }
+ %struct..s_segment_inf = type { float, i32, i16, i16, float, float, i32, float, float }
+ %struct..s_switch_inf = type { i32, float, float, float, float }
+
+define i32 @main(i32 %argc.1, i8** %argv.1) {
+entry:
+ %net_file = alloca [300 x i8] ; <[300 x i8]*> [#uses=1]
+ %place_file = alloca [300 x i8] ; <[300 x i8]*> [#uses=1]
+ %arch_file = alloca [300 x i8] ; <[300 x i8]*> [#uses=1]
+ %route_file = alloca [300 x i8] ; <[300 x i8]*> [#uses=1]
+ %full_stats = alloca i32 ; <i32*> [#uses=1]
+ %operation = alloca i32 ; <i32*> [#uses=1]
+ %verify_binary_search = alloca i32 ; <i32*> [#uses=1]
+ %show_graphics = alloca i32 ; <i32*> [#uses=1]
+ %annealing_sched = alloca %struct..s_annealing_sched ; <%struct..s_annealing_sched*> [#uses=5]
+ %placer_opts = alloca %struct..s_placer_opts ; <%struct..s_placer_opts*> [#uses=7]
+ %router_opts = alloca %struct..s_router_opts ; <%struct..s_router_opts*> [#uses=9]
+ %det_routing_arch = alloca %struct..s_det_routing_arch ; <%struct..s_det_routing_arch*> [#uses=11]
+ %segment_inf = alloca %struct..s_segment_inf* ; <%struct..s_segment_inf**> [#uses=1]
+ %timing_inf = alloca { i32, float, float, float, float, float, float, float, float, float, float } ; <{ i32, float, float, float, float, float, float, float, float, float, float }*> [#uses=11]
+ %tmp.101 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 4 ; <i8**> [#uses=1]
+ %tmp.105 = getelementptr [300 x i8]* %net_file, i64 0, i64 0 ; <i8*> [#uses=1]
+ %tmp.106 = getelementptr [300 x i8]* %arch_file, i64 0, i64 0 ; <i8*> [#uses=1]
+ %tmp.107 = getelementptr [300 x i8]* %place_file, i64 0, i64 0 ; <i8*> [#uses=1]
+ %tmp.108 = getelementptr [300 x i8]* %route_file, i64 0, i64 0 ; <i8*> [#uses=1]
+ %tmp.109 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 0 ; <i32*> [#uses=1]
+ %tmp.112 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 0 ; <i32*> [#uses=1]
+ %tmp.114 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 6 ; <i32*> [#uses=1]
+ %tmp.118 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 7 ; <i32*> [#uses=1]
+ %tmp.135 = load i32* %operation ; <i32> [#uses=1]
+ %tmp.137 = load i32* %tmp.112 ; <i32> [#uses=1]
+ %tmp.138 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 1 ; <float*> [#uses=1]
+ %tmp.139 = load float* %tmp.138 ; <float> [#uses=1]
+ %tmp.140 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 2 ; <i32*> [#uses=1]
+ %tmp.141 = load i32* %tmp.140 ; <i32> [#uses=1]
+ %tmp.142 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 3 ; <i32*> [#uses=1]
+ %tmp.143 = load i32* %tmp.142 ; <i32> [#uses=1]
+ %tmp.145 = load i8** %tmp.101 ; <i8*> [#uses=1]
+ %tmp.146 = getelementptr %struct..s_placer_opts* %placer_opts, i64 0, i32 5 ; <i32*> [#uses=1]
+ %tmp.147 = load i32* %tmp.146 ; <i32> [#uses=1]
+ %tmp.149 = load i32* %tmp.114 ; <i32> [#uses=1]
+ %tmp.154 = load i32* %full_stats ; <i32> [#uses=1]
+ %tmp.155 = load i32* %verify_binary_search ; <i32> [#uses=1]
+ %tmp.156 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 0 ; <i32*> [#uses=1]
+ %tmp.157 = load i32* %tmp.156 ; <i32> [#uses=1]
+ %tmp.158 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 1 ; <float*> [#uses=1]
+ %tmp.159 = load float* %tmp.158 ; <float> [#uses=1]
+ %tmp.160 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 2 ; <float*> [#uses=1]
+ %tmp.161 = load float* %tmp.160 ; <float> [#uses=1]
+ %tmp.162 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 3 ; <float*> [#uses=1]
+ %tmp.163 = load float* %tmp.162 ; <float> [#uses=1]
+ %tmp.164 = getelementptr %struct..s_annealing_sched* %annealing_sched, i64 0, i32 4 ; <float*> [#uses=1]
+ %tmp.165 = load float* %tmp.164 ; <float> [#uses=1]
+ %tmp.166 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 0 ; <float*> [#uses=1]
+ %tmp.167 = load float* %tmp.166 ; <float> [#uses=1]
+ %tmp.168 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 1 ; <float*> [#uses=1]
+ %tmp.169 = load float* %tmp.168 ; <float> [#uses=1]
+ %tmp.170 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 2 ; <float*> [#uses=1]
+ %tmp.171 = load float* %tmp.170 ; <float> [#uses=1]
+ %tmp.172 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 3 ; <float*> [#uses=1]
+ %tmp.173 = load float* %tmp.172 ; <float> [#uses=1]
+ %tmp.174 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 4 ; <float*> [#uses=1]
+ %tmp.175 = load float* %tmp.174 ; <float> [#uses=1]
+ %tmp.176 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 5 ; <i32*> [#uses=1]
+ %tmp.177 = load i32* %tmp.176 ; <i32> [#uses=1]
+ %tmp.178 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 6 ; <i32*> [#uses=1]
+ %tmp.179 = load i32* %tmp.178 ; <i32> [#uses=1]
+ %tmp.181 = load i32* %tmp.118 ; <i32> [#uses=1]
+ %tmp.182 = getelementptr %struct..s_router_opts* %router_opts, i64 0, i32 8 ; <i32*> [#uses=1]
+ %tmp.183 = load i32* %tmp.182 ; <i32> [#uses=1]
+ %tmp.184 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 0 ; <i32*> [#uses=1]
+ %tmp.185 = load i32* %tmp.184 ; <i32> [#uses=1]
+ %tmp.186 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 1 ; <float*> [#uses=1]
+ %tmp.187 = load float* %tmp.186 ; <float> [#uses=1]
+ %tmp.188 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 2 ; <float*> [#uses=1]
+ %tmp.189 = load float* %tmp.188 ; <float> [#uses=1]
+ %tmp.190 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 3 ; <float*> [#uses=1]
+ %tmp.191 = load float* %tmp.190 ; <float> [#uses=1]
+ %tmp.192 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 4 ; <i32*> [#uses=1]
+ %tmp.193 = load i32* %tmp.192 ; <i32> [#uses=1]
+ %tmp.194 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 5 ; <i32*> [#uses=1]
+ %tmp.195 = load i32* %tmp.194 ; <i32> [#uses=1]
+ %tmp.196 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 6 ; <i16*> [#uses=1]
+ %tmp.197 = load i16* %tmp.196 ; <i16> [#uses=1]
+ %tmp.198 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 7 ; <i16*> [#uses=1]
+ %tmp.199 = load i16* %tmp.198 ; <i16> [#uses=1]
+ %tmp.200 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 8 ; <i16*> [#uses=1]
+ %tmp.201 = load i16* %tmp.200 ; <i16> [#uses=1]
+ %tmp.202 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 9 ; <float*> [#uses=1]
+ %tmp.203 = load float* %tmp.202 ; <float> [#uses=1]
+ %tmp.204 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, i64 0, i32 10 ; <float*> [#uses=1]
+ %tmp.205 = load float* %tmp.204 ; <float> [#uses=1]
+ %tmp.206 = load %struct..s_segment_inf** %segment_inf ; <%struct..s_segment_inf*> [#uses=1]
+ %tmp.208 = load i32* %tmp.109 ; <i32> [#uses=1]
+ %tmp.209 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 1 ; <float*> [#uses=1]
+ %tmp.210 = load float* %tmp.209 ; <float> [#uses=1]
+ %tmp.211 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 2 ; <float*> [#uses=1]
+ %tmp.212 = load float* %tmp.211 ; <float> [#uses=1]
+ %tmp.213 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 3 ; <float*> [#uses=1]
+ %tmp.214 = load float* %tmp.213 ; <float> [#uses=1]
+ %tmp.215 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 4 ; <float*> [#uses=1]
+ %tmp.216 = load float* %tmp.215 ; <float> [#uses=1]
+ %tmp.217 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 5 ; <float*> [#uses=1]
+ %tmp.218 = load float* %tmp.217 ; <float> [#uses=1]
+ %tmp.219 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 6 ; <float*> [#uses=1]
+ %tmp.220 = load float* %tmp.219 ; <float> [#uses=1]
+ %tmp.221 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 7 ; <float*> [#uses=1]
+ %tmp.222 = load float* %tmp.221 ; <float> [#uses=1]
+ %tmp.223 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 8 ; <float*> [#uses=1]
+ %tmp.224 = load float* %tmp.223 ; <float> [#uses=1]
+ %tmp.225 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 9 ; <float*> [#uses=1]
+ %tmp.226 = load float* %tmp.225 ; <float> [#uses=1]
+ %tmp.227 = getelementptr { i32, float, float, float, float, float, float, float, float, float, float }* %timing_inf, i64 0, i32 10 ; <float*> [#uses=1]
+ %tmp.228 = load float* %tmp.227 ; <float> [#uses=1]
+ call void @place_and_route( i32 %tmp.135, i32 %tmp.137, float %tmp.139, i32 %tmp.141, i32 %tmp.143, i8* %tmp.145, i32 %tmp.147, i32 %tmp.149, i8* %tmp.107, i8* %tmp.105, i8* %tmp.106, i8* %tmp.108, i32 %tmp.154, i32 %tmp.155, i32 %tmp.157, float %tmp.159, float %tmp.161, float %tmp.163, float %tmp.165, float %tmp.167, float %tmp.169, float %tmp.171, float %tmp.173, float %tmp.175, i32 %tmp.177, i32 %tmp.179, i32 %tmp.181, i32 %tmp.183, i32 %tmp.185, float %tmp.187, float %tmp.189, float %tmp.191, i32 %tmp.193, i32 %tmp.195, i16 %tmp.197, i16 %tmp.199, i16 %tmp.201, float %tmp.203, float %tmp.205, %struct..s_segment_inf* %tmp.206, i32 %tmp.208, float %tmp.210, float %tmp.212, float %tmp.214, float %tmp.216, float %tmp.218, float %tmp.220, float %tmp.222, float %tmp.224, float %tmp.226, float %tmp.228 )
+ %tmp.231 = load i32* %show_graphics ; <i32> [#uses=1]
+ %tmp.232 = icmp ne i32 %tmp.231, 0 ; <i1> [#uses=1]
+ br i1 %tmp.232, label %then.2, label %endif.2
+
+then.2: ; preds = %entry
+ br label %endif.2
+
+endif.2: ; preds = %then.2, %entry
+ ret i32 0
+}
+
+declare i32 @printf(i8*, ...)
+
+declare void @place_and_route(i32, i32, float, i32, i32, i8*, i32, i32, i8*, i8*, i8*, i8*, i32, i32, i32, float, float, float, float, float, float, float, float, float, i32, i32, i32, i32, i32, float, float, float, i32, i32, i16, i16, i16, float, float, %struct..s_segment_inf*, i32, float, float, float, float, float, float, float, float, float, float)
diff --git a/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll b/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll
new file mode 100644
index 0000000000000..41c90bd29d385
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll
@@ -0,0 +1,39 @@
+; RUN: llvm-as < %s | llc
+
+;; Date: May 28, 2003.
+;; From: test/Programs/External/SPEC/CINT2000/254.gap.llvm.bc
+;; Function: int %OpenOutput(sbyte* %filename.1)
+;;
+;; Error: A sequence of GEPs is folded incorrectly by llc during selection
+;; causing an assertion about a dynamic casting error.
+;; This code sequence was produced (correctly) by preselection
+;; from a nested pair of ConstantExpr getelementptrs.
+;; The code below is the output of preselection.
+;; The original ConstantExprs are included in a comment.
+;;
+;; Cause: FoldGetElemChain() was inserting an extra leading 0 even though
+;; the first instruction in the sequence contributes no indices.
+;; The next instruction contributes a leading non-zero so another
+;; zero should not be added before it!
+;;
+ %FileType = type { i32, [256 x i8], i32, i32, i32, i32 }
+@OutputFiles = external global [16 x %FileType] ; <[16 x %FileType]*> [#uses=1]
+@Output = internal global %FileType* null ; <%FileType**> [#uses=1]
+
+define internal i32 @OpenOutput(i8* %filename.1) {
+entry:
+ %tmp.0 = load %FileType** @Output ; <%FileType*> [#uses=1]
+ %tmp.4 = getelementptr %FileType* %tmp.0, i64 1 ; <%FileType*> [#uses=1]
+ %addrOfGlobal = getelementptr [16 x %FileType]* @OutputFiles, i64 0 ; <[16 x %FileType]*> [#uses=1]
+ %constantGEP = getelementptr [16 x %FileType]* %addrOfGlobal, i64 1 ; <[16 x %FileType]*> [#uses=1]
+ %constantGEP.upgrd.1 = getelementptr [16 x %FileType]* %constantGEP, i64 0, i64 0 ; <%FileType*> [#uses=1]
+ %tmp.10 = icmp eq %FileType* %tmp.4, %constantGEP.upgrd.1 ; <i1> [#uses=1]
+ br i1 %tmp.10, label %return, label %endif.0
+
+endif.0: ; preds = %entry
+ ret i32 0
+
+return: ; preds = %entry
+ ret i32 1
+}
+
diff --git a/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll b/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll
new file mode 100644
index 0000000000000..43bff82ef7cc2
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll
@@ -0,0 +1,33 @@
+; RUN: llvm-as < %s | llc
+
+;; Date: May 28, 2003.
+;; From: test/Programs/SingleSource/richards_benchmark.c
+;; Function: struct task *handlerfn(struct packet *pkt)
+;;
+;; Error: PreSelection puts the arguments of the Phi just before
+;; the Phi instead of in predecessor blocks. This later
+;; causes llc to produces an invalid register <NULL VALUE>
+;; for the phi arguments.
+
+ %struct..packet = type { %struct..packet*, i32, i32, i32, [4 x i8] }
+ %struct..task = type { %struct..task*, i32, i32, %struct..packet*, i32, %struct..task* (%struct..packet*)*, i32, i32 }
+@v1 = external global i32 ; <i32*> [#uses=1]
+@v2 = external global i32 ; <i32*> [#uses=1]
+
+define %struct..task* @handlerfn(%struct..packet* %pkt.2) {
+entry:
+ %tmp.1 = icmp ne %struct..packet* %pkt.2, null ; <i1> [#uses=1]
+ br i1 %tmp.1, label %cond_false, label %cond_continue
+
+cond_false: ; preds = %entry
+ br label %cond_continue
+
+cond_continue: ; preds = %cond_false, %entry
+ %mem_tmp.0 = phi i32* [ @v2, %cond_false ], [ @v1, %entry ] ; <i32*> [#uses=1]
+ %tmp.12 = bitcast i32* %mem_tmp.0 to %struct..packet* ; <%struct..packet*> [#uses=1]
+ call void @append( %struct..packet* %pkt.2, %struct..packet* %tmp.12 )
+ ret %struct..task* null
+}
+
+declare void @append(%struct..packet*, %struct..packet*)
+
diff --git a/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll b/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll
new file mode 100644
index 0000000000000..d66ea186e8731
--- /dev/null
+++ b/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll
@@ -0,0 +1,51 @@
+; RUN: llvm-as < %s | llc
+
+;; Date: May 28, 2003.
+;; From: test/Programs/MultiSource/Olden-perimeter/maketree.c
+;; Function: int CheckOutside(int x, int y)
+;;
+;; Note: The .ll code below for this regression test has identical
+;; behavior to the above function up to the error, but then prints
+;; true/false on the two branches.
+;;
+;; Error: llc generates a branch-on-xcc instead of branch-on-icc, which
+;; is wrong because the value being compared (int euclid = x*x + y*y)
+;; overflows, so that the 64-bit and 32-bit compares are not equal.
+
+@.str_1 = internal constant [6 x i8] c"true\0A\00" ; <[6 x i8]*> [#uses=1]
+@.str_2 = internal constant [7 x i8] c"false\0A\00" ; <[7 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define internal void @__main() {
+entry:
+ ret void
+}
+
+define internal void @CheckOutside(i32 %x.1, i32 %y.1) {
+entry:
+ %tmp.2 = mul i32 %x.1, %x.1 ; <i32> [#uses=1]
+ %tmp.5 = mul i32 %y.1, %y.1 ; <i32> [#uses=1]
+ %tmp.6 = add i32 %tmp.2, %tmp.5 ; <i32> [#uses=1]
+ %tmp.8 = icmp sle i32 %tmp.6, 4194304 ; <i1> [#uses=1]
+ br i1 %tmp.8, label %then, label %else
+
+then: ; preds = %entry
+ %tmp.11 = call i32 (i8*, ...)* @printf( i8* getelementptr ([6 x i8]* @.str_1, i64 0, i64 0) ) ; <i32> [#uses=0]
+ br label %UnifiedExitNode
+
+else: ; preds = %entry
+ %tmp.13 = call i32 (i8*, ...)* @printf( i8* getelementptr ([7 x i8]* @.str_2, i64 0, i64 0) ) ; <i32> [#uses=0]
+ br label %UnifiedExitNode
+
+UnifiedExitNode: ; preds = %else, %then
+ ret void
+}
+
+define i32 @main() {
+entry:
+ call void @__main( )
+ call void @CheckOutside( i32 2097152, i32 2097152 )
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/2003-07-07-BadLongConst.ll b/test/CodeGen/Generic/2003-07-07-BadLongConst.ll
new file mode 100644
index 0000000000000..80738d54370ca
--- /dev/null
+++ b/test/CodeGen/Generic/2003-07-07-BadLongConst.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s | llc
+
+@.str_1 = internal constant [42 x i8] c" ui = %u (0x%x)\09\09UL-ui = %lld (0x%llx)\0A\00" ; <[42 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define internal i64 @getL() {
+entry:
+ ret i64 -5787213826675591005
+}
+
+define i32 @main(i32 %argc.1, i8** %argv.1) {
+entry:
+ %tmp.11 = call i64 @getL( ) ; <i64> [#uses=2]
+ %tmp.5 = trunc i64 %tmp.11 to i32 ; <i32> [#uses=2]
+ %tmp.23 = and i64 %tmp.11, -4294967296 ; <i64> [#uses=2]
+ %tmp.16 = call i32 (i8*, ...)* @printf( i8* getelementptr ([42 x i8]* @.str_1, i64 0, i64 0), i32 %tmp.5, i32 %tmp.5, i64 %tmp.23, i64 %tmp.23 ) ; <i32> [#uses=0]
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll b/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
new file mode 100644
index 0000000000000..4532b760c7073
--- /dev/null
+++ b/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-as < %s | llc
+
+;; Date: Jul 8, 2003.
+;; From: test/Programs/MultiSource/Olden-perimeter
+;; Function: int %adj(uint %d.1, uint %ct.1)
+;;
+;; Errors: (1) cast-int-to-bool was being treated as a NOP (i.e., the int
+;; register was treated as effectively true if non-zero).
+;; This cannot be used for later boolean operations.
+;; (2) (A or NOT(B)) was being folded into A orn B, which is ok
+;; for bitwise operations but not booleans! For booleans,
+;; the result has to be compared with 0.
+
+@.str_1 = internal constant [30 x i8] c"d = %d, ct = %d, d ^ ct = %d\0A\00"
+
+declare i32 @printf(i8*, ...)
+
+define i32 @adj(i32 %d.1, i32 %ct.1) {
+entry:
+ %tmp.19 = icmp eq i32 %ct.1, 2 ; <i1> [#uses=1]
+ %tmp.22.not = trunc i32 %ct.1 to i1 ; <i1> [#uses=1]
+ %tmp.221 = xor i1 %tmp.22.not, true ; <i1> [#uses=1]
+ %tmp.26 = or i1 %tmp.19, %tmp.221 ; <i1> [#uses=1]
+ %tmp.27 = zext i1 %tmp.26 to i32 ; <i32> [#uses=1]
+ ret i32 %tmp.27
+}
+
+define i32 @main() {
+entry:
+ %result = call i32 @adj( i32 3, i32 2 ) ; <i32> [#uses=1]
+ %tmp.0 = call i32 (i8*, ...)* @printf( i8* getelementptr ([30 x i8]* @.str_1, i64 0, i64 0), i32 3, i32 2, i32 %result ) ; <i32> [#uses=0]
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll b/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll
new file mode 100644
index 0000000000000..54880db392896
--- /dev/null
+++ b/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll
@@ -0,0 +1,40 @@
+; RUN: llvm-as < %s | llc
+
+;; Date: Jul 29, 2003.
+;; From: test/Programs/MultiSource/Ptrdist-bc
+;; Function: ---
+;; Global: %yy_ec = internal constant [256 x sbyte] ...
+;; A subset of this array is used in the test below.
+;;
+;; Error: Character '\07' was being emitted as '\a', at yy_ec[38].
+;; When loaded, this returned the value 97 ('a'), instead of 7.
+;;
+;; Incorrect LLC Output for the array yy_ec was:
+;; yy_ec_1094:
+;; .ascii "\000\001\001\001\001\001\001\001\001\002\003\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\002\004\005\001\001\006\a\001\b\t\n\v\f\r\016\017\020\020\020\020\020\020\020\020\020\020\001\021\022\023\024\001\001\025\025\025\025\025\025\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\026\027\030\031\032\001\033\034\035\036\037 !\"#$%&'()*+,-./$0$1$234\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001\001"
+;;
+
+@yy_ec = internal constant [6 x i8] c"\06\07\01\08\01\09" ; <[6 x i8]*> [#uses=1]
+@.str_3 = internal constant [8 x i8] c"[%d] = \00" ; <[8 x i8]*> [#uses=1]
+@.str_4 = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+entry:
+ br label %loopentry
+
+loopentry: ; preds = %loopentry, %entry
+ %i = phi i64 [ 0, %entry ], [ %inc.i, %loopentry ] ; <i64> [#uses=3]
+ %cptr = getelementptr [6 x i8]* @yy_ec, i64 0, i64 %i ; <i8*> [#uses=1]
+ %c = load i8* %cptr ; <i8> [#uses=1]
+ %ignore = call i32 (i8*, ...)* @printf( i8* getelementptr ([8 x i8]* @.str_3, i64 0, i64 0), i64 %i ) ; <i32> [#uses=0]
+ %ignore2 = call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @.str_4, i64 0, i64 0), i8 %c ) ; <i32> [#uses=0]
+ %inc.i = add i64 %i, 1 ; <i64> [#uses=2]
+ %done = icmp sle i64 %inc.i, 5 ; <i1> [#uses=1]
+ br i1 %done, label %loopentry, label %exit.1
+
+exit.1: ; preds = %loopentry
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/2004-02-08-UnwindSupport.ll b/test/CodeGen/Generic/2004-02-08-UnwindSupport.ll
new file mode 100644
index 0000000000000..10d40693d8e56
--- /dev/null
+++ b/test/CodeGen/Generic/2004-02-08-UnwindSupport.ll
@@ -0,0 +1,17 @@
+; RUN: llvm-as < %s | llc -enable-correct-eh-support
+
+define i32 @test() {
+ unwind
+}
+
+define i32 @main() {
+ %X = invoke i32 @test( )
+ to label %cont unwind label %EH ; <i32> [#uses=0]
+
+cont: ; preds = %0
+ ret i32 1
+
+EH: ; preds = %0
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll b/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll
new file mode 100644
index 0000000000000..1f58ce11fe71a
--- /dev/null
+++ b/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-as < %s | llc
+@global_long_1 = linkonce global i64 7 ; <i64*> [#uses=1]
+@global_long_2 = linkonce global i64 49 ; <i64*> [#uses=1]
+
+define i32 @main() {
+ %l1 = load i64* @global_long_1 ; <i64> [#uses=1]
+ %l2 = load i64* @global_long_2 ; <i64> [#uses=1]
+ %cond = icmp sle i64 %l1, %l2 ; <i1> [#uses=1]
+ %cast2 = zext i1 %cond to i32 ; <i32> [#uses=1]
+ %RV = sub i32 1, %cast2 ; <i32> [#uses=1]
+ ret i32 %RV
+}
+
diff --git a/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll b/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll
new file mode 100644
index 0000000000000..ed8b2a22607d7
--- /dev/null
+++ b/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s | llc
+
+define void @intersect_pixel() {
+entry:
+ %tmp125 = fcmp uno double 0.000000e+00, 0.000000e+00 ; <i1> [#uses=1]
+ %tmp126 = or i1 %tmp125, false ; <i1> [#uses=1]
+ %tmp126.not = xor i1 %tmp126, true ; <i1> [#uses=1]
+ %brmerge1 = or i1 %tmp126.not, false ; <i1> [#uses=1]
+ br i1 %brmerge1, label %bb154, label %cond_false133
+
+cond_false133: ; preds = %entry
+ ret void
+
+bb154: ; preds = %entry
+ %tmp164 = icmp eq i32 0, 0 ; <i1> [#uses=0]
+ ret void
+}
+
+declare i1 @llvm.isunordered.f64(double, double)
+
diff --git a/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll b/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll
new file mode 100644
index 0000000000000..37aaa3237caa9
--- /dev/null
+++ b/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s | llc
+ %struct.TypHeader = type { i32, %struct.TypHeader**, [3 x i8], i8 }
+@.str_67 = external global [4 x i8] ; <[4 x i8]*> [#uses=1]
+@.str_87 = external global [17 x i8] ; <[17 x i8]*> [#uses=1]
+
+define void @PrBinop() {
+entry:
+ br i1 false, label %cond_true, label %else.0
+
+cond_true: ; preds = %entry
+ br label %else.0
+
+else.0: ; preds = %cond_true, %entry
+ %tmp.167.1 = phi i32 [ ptrtoint ([17 x i8]* @.str_87 to i32), %entry ], [ 0, %cond_true ] ; <i32> [#uses=0]
+ call void @Pr( i8* getelementptr ([4 x i8]* @.str_67, i32 0, i32 0), i32 0, i32 0 )
+ ret void
+}
+
+declare void @Pr(i8*, i32, i32)
+
diff --git a/test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll b/test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll
new file mode 100644
index 0000000000000..ab3a31d3c077c
--- /dev/null
+++ b/test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc
+; Test that llvm.memcpy works with a i64 length operand on all targets.
+
+declare void @llvm.memcpy.i64(i8*, i8*, i64, i32)
+
+define void @l12_l94_bc_divide_endif_2E_3_2E_ce() {
+newFuncRoot:
+ tail call void @llvm.memcpy.i64( i8* null, i8* null, i64 0, i32 1 )
+ unreachable
+}
+
diff --git a/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll b/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll
new file mode 100644
index 0000000000000..b2bea1c6be3b0
--- /dev/null
+++ b/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll
@@ -0,0 +1,6 @@
+; RUN: llvm-as < %s | llc
+
+define void @test() {
+ %X = alloca { } ; <{ }*> [#uses=0]
+ ret void
+}
diff --git a/test/CodeGen/Generic/2005-10-21-longlonggtu.ll b/test/CodeGen/Generic/2005-10-21-longlonggtu.ll
new file mode 100644
index 0000000000000..b355b026531e4
--- /dev/null
+++ b/test/CodeGen/Generic/2005-10-21-longlonggtu.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as < %s | llc
+
+define float @t(i64 %u_arg) {
+ %u = bitcast i64 %u_arg to i64 ; <i64> [#uses=1]
+ %tmp5 = add i64 %u, 9007199254740991 ; <i64> [#uses=1]
+ %tmp = icmp ugt i64 %tmp5, 18014398509481982 ; <i1> [#uses=1]
+ br i1 %tmp, label %T, label %F
+
+T: ; preds = %0
+ ret float 1.000000e+00
+
+F: ; preds = %0
+ call float @t( i64 0 ) ; <float>:1 [#uses=0]
+ ret float 0.000000e+00
+}
+
diff --git a/test/CodeGen/Generic/2005-12-01-Crash.ll b/test/CodeGen/Generic/2005-12-01-Crash.ll
new file mode 100644
index 0000000000000..ee72ee1317b0c
--- /dev/null
+++ b/test/CodeGen/Generic/2005-12-01-Crash.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-as < %s | llc
+@str = external global [36 x i8] ; <[36 x i8]*> [#uses=0]
+@str.upgrd.1 = external global [29 x i8] ; <[29 x i8]*> [#uses=0]
+@str1 = external global [29 x i8] ; <[29 x i8]*> [#uses=0]
+@str2 = external global [29 x i8] ; <[29 x i8]*> [#uses=1]
+@str.upgrd.2 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
+@str3 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
+@str4 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
+@str5 = external global [2 x i8] ; <[2 x i8]*> [#uses=0]
+
+define void @printArgsNoRet(i32 %a1, float %a2, i8 %a3, double %a4, i8* %a5, i32 %a6, float %a7, i8 %a8, double %a9, i8* %a10, i32 %a11, float %a12, i8 %a13, double %a14, i8* %a15) {
+entry:
+ %tmp17 = sext i8 %a13 to i32 ; <i32> [#uses=1]
+ %tmp23 = call i32 (i8*, ...)* @printf( i8* getelementptr ([29 x i8]* @str2, i32 0, i64 0), i32 %a11, double 0.000000e+00, i32 %tmp17, double %a14, i32 0 ) ; <i32> [#uses=0]
+ ret void
+}
+
+declare i32 @printf(i8*, ...)
+
+declare i32 @main(i32, i8**)
diff --git a/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll b/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll
new file mode 100644
index 0000000000000..bd2e043c96f42
--- /dev/null
+++ b/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-as < %s | llc
+
+define i64 @test(i64 %A) {
+ %B = trunc i64 %A to i8 ; <i8> [#uses=1]
+ %C = sext i8 %B to i64 ; <i64> [#uses=1]
+ ret i64 %C
+}
diff --git a/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll b/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll
new file mode 100644
index 0000000000000..1a555b3550676
--- /dev/null
+++ b/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-as < %s | llc
+; ModuleID = '2006-01-12-BadSetCCFold.ll'
+ %struct.node_t = type { double*, %struct.node_t*, %struct.node_t**, double**, double*, i32, i32 }
+
+define void @main() {
+entry:
+ br i1 false, label %then.2.i, label %endif.2.i
+
+then.2.i: ; preds = %entry
+ br label %dealwithargs.exit
+
+endif.2.i: ; preds = %entry
+ br i1 false, label %then.3.i, label %dealwithargs.exit
+
+then.3.i: ; preds = %endif.2.i
+ br label %dealwithargs.exit
+
+dealwithargs.exit: ; preds = %then.3.i, %endif.2.i, %then.2.i
+ %n_nodes.4 = phi i32 [ 64, %then.3.i ], [ 64, %then.2.i ], [ 64, %endif.2.i ] ; <i32> [#uses=1]
+ %tmp.14.i1134.i.i = icmp sgt i32 %n_nodes.4, 1 ; <i1> [#uses=2]
+ br i1 %tmp.14.i1134.i.i, label %no_exit.i12.i.i, label %fill_table.exit22.i.i
+
+no_exit.i12.i.i: ; preds = %no_exit.i12.i.i, %dealwithargs.exit
+ br i1 false, label %fill_table.exit22.i.i, label %no_exit.i12.i.i
+
+fill_table.exit22.i.i: ; preds = %no_exit.i12.i.i, %dealwithargs.exit
+ %cur_node.0.i8.1.i.i = phi %struct.node_t* [ undef, %dealwithargs.exit ], [ null, %no_exit.i12.i.i ] ; <%struct.node_t*> [#uses=0]
+ br i1 %tmp.14.i1134.i.i, label %no_exit.i.preheader.i.i, label %make_tables.exit.i
+
+no_exit.i.preheader.i.i: ; preds = %fill_table.exit22.i.i
+ ret void
+
+make_tables.exit.i: ; preds = %fill_table.exit22.i.i
+ ret void
+}
diff --git a/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll b/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll
new file mode 100644
index 0000000000000..b1e08c759c088
--- /dev/null
+++ b/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-as < %s | llc
+; This crashed the PPC backend.
+
+define void @test() {
+ %tmp125 = fcmp uno double 0.000000e+00, 0.000000e+00 ; <i1> [#uses=1]
+ br i1 %tmp125, label %bb154, label %cond_false133
+
+cond_false133: ; preds = %0
+ ret void
+
+bb154: ; preds = %0
+ %tmp164 = icmp eq i32 0, 0 ; <i1> [#uses=0]
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll b/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll
new file mode 100644
index 0000000000000..bacf8b5e2f9ec
--- /dev/null
+++ b/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll
@@ -0,0 +1,60 @@
+; RUN: llvm-as < %s | llc
+@G = external global i32 ; <i32*> [#uses=1]
+
+define void @encode_one_frame(i64 %tmp.2i) {
+entry:
+ %tmp.9 = icmp eq i32 0, 0 ; <i1> [#uses=1]
+ br i1 %tmp.9, label %endif.0, label %shortcirc_next.0
+
+then.5.i: ; preds = %shortcirc_next.i
+ %tmp.114.i = sdiv i64 %tmp.2i, 3 ; <i64> [#uses=1]
+ %tmp.111.i = call i64 @lseek( i32 0, i64 %tmp.114.i, i32 1 ) ; <i64> [#uses=0]
+ ret void
+
+shortcirc_next.0: ; preds = %entry
+ ret void
+
+endif.0: ; preds = %entry
+ %tmp.324.i = icmp eq i32 0, 0 ; <i1> [#uses=2]
+ %tmp.362.i = icmp slt i32 0, 0 ; <i1> [#uses=1]
+ br i1 %tmp.324.i, label %else.4.i, label %then.11.i37
+
+then.11.i37: ; preds = %endif.0
+ ret void
+
+else.4.i: ; preds = %endif.0
+ br i1 %tmp.362.i, label %else.5.i, label %then.12.i
+
+then.12.i: ; preds = %else.4.i
+ ret void
+
+else.5.i: ; preds = %else.4.i
+ br i1 %tmp.324.i, label %then.0.i40, label %then.17.i
+
+then.17.i: ; preds = %else.5.i
+ ret void
+
+then.0.i40: ; preds = %else.5.i
+ %tmp.8.i42 = icmp eq i32 0, 0 ; <i1> [#uses=1]
+ br i1 %tmp.8.i42, label %else.1.i56, label %then.1.i52
+
+then.1.i52: ; preds = %then.0.i40
+ ret void
+
+else.1.i56: ; preds = %then.0.i40
+ %tmp.28.i = load i32* @G ; <i32> [#uses=1]
+ %tmp.29.i = icmp eq i32 %tmp.28.i, 1 ; <i1> [#uses=1]
+ br i1 %tmp.29.i, label %shortcirc_next.i, label %shortcirc_done.i
+
+shortcirc_next.i: ; preds = %else.1.i56
+ %tmp.34.i = icmp eq i32 0, 3 ; <i1> [#uses=1]
+ br i1 %tmp.34.i, label %then.5.i, label %endif.5.i
+
+shortcirc_done.i: ; preds = %else.1.i56
+ ret void
+
+endif.5.i: ; preds = %shortcirc_next.i
+ ret void
+}
+
+declare i64 @lseek(i32, i64, i32)
diff --git a/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll b/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll
new file mode 100644
index 0000000000000..9607ebee1cc86
--- /dev/null
+++ b/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll
@@ -0,0 +1,95 @@
+; RUN: llvm-as < %s | llc
+; Infinite loop in the dag combiner, reduced from 176.gcc.
+%struct._obstack_chunk = type { i8*, %struct._obstack_chunk*, [4 x i8] }
+ %struct.anon = type { i32 }
+ %struct.lang_decl = type opaque
+ %struct.lang_type = type { i32, [1 x %struct.tree_node*] }
+ %struct.obstack = type { i32, %struct._obstack_chunk*, i8*, i8*, i8*, i32, i32, %struct._obstack_chunk* (...)*, void (...)*, i8*, i8 }
+ %struct.rtx_def = type { i16, i8, i8, [1 x %struct.anon] }
+ %struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, i8, i8, i8, i8 }
+ %struct.tree_decl = type { [12 x i8], i8*, i32, %struct.tree_node*, i32, i8, i8, i8, i8, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.anon, { %struct.rtx_def* }, %struct.tree_node*, %struct.lang_decl* }
+ %struct.tree_list = type { [12 x i8], %struct.tree_node*, %struct.tree_node* }
+ %struct.tree_node = type { %struct.tree_decl }
+ %struct.tree_type = type { [12 x i8], %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i32, i8, i8, i8, i8, i32, %struct.tree_node*, %struct.tree_node*, %struct.anon, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.obstack*, %struct.lang_type* }
+@void_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1]
+@char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1]
+@short_integer_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1]
+@short_unsigned_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1]
+@float_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1]
+@signed_char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1]
+@unsigned_char_type_node = external global %struct.tree_node* ; <%struct.tree_node**> [#uses=1]
+
+define fastcc i32 @self_promoting_args_p(%struct.tree_node* %parms) {
+entry:
+ %tmp915 = icmp eq %struct.tree_node* %parms, null ; <i1> [#uses=1]
+ br i1 %tmp915, label %return, label %cond_true92.preheader
+
+cond_true: ; preds = %cond_true92
+ %tmp9.not = icmp ne %struct.tree_node* %tmp2, %tmp7 ; <i1> [#uses=1]
+ %tmp14 = icmp eq %struct.tree_node* %tmp2, null ; <i1> [#uses=1]
+ %bothcond = or i1 %tmp9.not, %tmp14 ; <i1> [#uses=1]
+ br i1 %bothcond, label %return, label %cond_next18
+
+cond_next12: ; preds = %cond_true92
+ %tmp14.old = icmp eq %struct.tree_node* %tmp2, null ; <i1> [#uses=1]
+ br i1 %tmp14.old, label %return, label %cond_next18
+
+cond_next18: ; preds = %cond_next12, %cond_true
+ %tmp20 = bitcast %struct.tree_node* %tmp2 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1]
+ %tmp21 = getelementptr %struct.tree_type* %tmp20, i32 0, i32 17 ; <%struct.tree_node**> [#uses=1]
+ %tmp22 = load %struct.tree_node** %tmp21 ; <%struct.tree_node*> [#uses=6]
+ %tmp24 = icmp eq %struct.tree_node* %tmp22, %tmp23 ; <i1> [#uses=1]
+ br i1 %tmp24, label %return, label %cond_next28
+
+cond_next28: ; preds = %cond_next18
+ %tmp30 = bitcast %struct.tree_node* %tmp2 to %struct.tree_common* ; <%struct.tree_common*> [#uses=1]
+ %tmp = getelementptr %struct.tree_common* %tmp30, i32 0, i32 2 ; <i8*> [#uses=1]
+ %tmp.upgrd.1 = bitcast i8* %tmp to i32* ; <i32*> [#uses=1]
+ %tmp.upgrd.2 = load i32* %tmp.upgrd.1 ; <i32> [#uses=1]
+ %tmp32 = trunc i32 %tmp.upgrd.2 to i8 ; <i8> [#uses=1]
+ %tmp33 = icmp eq i8 %tmp32, 7 ; <i1> [#uses=1]
+ br i1 %tmp33, label %cond_true34, label %cond_next84
+
+cond_true34: ; preds = %cond_next28
+ %tmp40 = icmp eq %struct.tree_node* %tmp22, %tmp39 ; <i1> [#uses=1]
+ %tmp49 = icmp eq %struct.tree_node* %tmp22, %tmp48 ; <i1> [#uses=1]
+ %bothcond6 = or i1 %tmp40, %tmp49 ; <i1> [#uses=1]
+ %tmp58 = icmp eq %struct.tree_node* %tmp22, %tmp57 ; <i1> [#uses=1]
+ %bothcond7 = or i1 %bothcond6, %tmp58 ; <i1> [#uses=1]
+ %tmp67 = icmp eq %struct.tree_node* %tmp22, %tmp66 ; <i1> [#uses=1]
+ %bothcond8 = or i1 %bothcond7, %tmp67 ; <i1> [#uses=1]
+ %tmp76 = icmp eq %struct.tree_node* %tmp22, %tmp75 ; <i1> [#uses=1]
+ %bothcond9 = or i1 %bothcond8, %tmp76 ; <i1> [#uses=2]
+ %brmerge = or i1 %bothcond9, %tmp.upgrd.6 ; <i1> [#uses=1]
+ %bothcond9.upgrd.3 = zext i1 %bothcond9 to i32 ; <i32> [#uses=1]
+ %.mux = xor i32 %bothcond9.upgrd.3, 1 ; <i32> [#uses=1]
+ br i1 %brmerge, label %return, label %cond_true92
+
+cond_next84: ; preds = %cond_next28
+ br i1 %tmp.upgrd.6, label %return, label %cond_true92
+
+cond_true92.preheader: ; preds = %entry
+ %tmp7 = load %struct.tree_node** @void_type_node ; <%struct.tree_node*> [#uses=1]
+ %tmp23 = load %struct.tree_node** @float_type_node ; <%struct.tree_node*> [#uses=1]
+ %tmp39 = load %struct.tree_node** @char_type_node ; <%struct.tree_node*> [#uses=1]
+ %tmp48 = load %struct.tree_node** @signed_char_type_node ; <%struct.tree_node*> [#uses=1]
+ %tmp57 = load %struct.tree_node** @unsigned_char_type_node ; <%struct.tree_node*> [#uses=1]
+ %tmp66 = load %struct.tree_node** @short_integer_type_node ; <%struct.tree_node*> [#uses=1]
+ %tmp75 = load %struct.tree_node** @short_unsigned_type_node ; <%struct.tree_node*> [#uses=1]
+ br label %cond_true92
+
+cond_true92: ; preds = %cond_true92.preheader, %cond_next84, %cond_true34
+ %t.0.0 = phi %struct.tree_node* [ %parms, %cond_true92.preheader ], [ %tmp6, %cond_true34 ], [ %tmp6, %cond_next84 ] ; <%struct.tree_node*> [#uses=2]
+ %tmp.upgrd.4 = bitcast %struct.tree_node* %t.0.0 to %struct.tree_list* ; <%struct.tree_list*> [#uses=1]
+ %tmp.upgrd.5 = getelementptr %struct.tree_list* %tmp.upgrd.4, i32 0, i32 2 ; <%struct.tree_node**> [#uses=1]
+ %tmp2 = load %struct.tree_node** %tmp.upgrd.5 ; <%struct.tree_node*> [#uses=5]
+ %tmp4 = bitcast %struct.tree_node* %t.0.0 to %struct.tree_common* ; <%struct.tree_common*> [#uses=1]
+ %tmp5 = getelementptr %struct.tree_common* %tmp4, i32 0, i32 0 ; <%struct.tree_node**> [#uses=1]
+ %tmp6 = load %struct.tree_node** %tmp5 ; <%struct.tree_node*> [#uses=3]
+ %tmp.upgrd.6 = icmp eq %struct.tree_node* %tmp6, null ; <i1> [#uses=3]
+ br i1 %tmp.upgrd.6, label %cond_true, label %cond_next12
+
+return: ; preds = %cond_next84, %cond_true34, %cond_next18, %cond_next12, %cond_true, %entry
+ %retval.0 = phi i32 [ 1, %entry ], [ 1, %cond_next84 ], [ %.mux, %cond_true34 ], [ 0, %cond_next18 ], [ 0, %cond_next12 ], [ 0, %cond_true ] ; <i32> [#uses=1]
+ ret i32 %retval.0
+}
diff --git a/test/CodeGen/Generic/2006-04-11-vecload.ll b/test/CodeGen/Generic/2006-04-11-vecload.ll
new file mode 100644
index 0000000000000..cc96d8f1ab6ac
--- /dev/null
+++ b/test/CodeGen/Generic/2006-04-11-vecload.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah
+
+; The vload was getting memoized to the previous scalar load!
+
+define void @VertexProgram2() {
+ %xFloat0.688 = load float* null ; <float> [#uses=0]
+ %loadVector37.712 = load <4 x float>* null ; <<4 x float>> [#uses=1]
+ %inFloat3.713 = insertelement <4 x float> %loadVector37.712, float 0.000000e+00, i32 3 ; <<4 x float>> [#uses=1]
+ store <4 x float> %inFloat3.713, <4 x float>* null
+ unreachable
+}
+
diff --git a/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll b/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll
new file mode 100644
index 0000000000000..b99aa98fe9e87
--- /dev/null
+++ b/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll
@@ -0,0 +1,40 @@
+; RUN: llvm-as < %s | llc
+; PR748
+@G = external global i16 ; <i16*> [#uses=1]
+
+define void @OmNewObjHdr() {
+entry:
+ br i1 false, label %endif.4, label %then.0
+
+then.0: ; preds = %entry
+ ret void
+
+endif.4: ; preds = %entry
+ br i1 false, label %else.3, label %shortcirc_next.3
+
+shortcirc_next.3: ; preds = %endif.4
+ ret void
+
+else.3: ; preds = %endif.4
+ switch i32 0, label %endif.10 [
+ i32 5001, label %then.10
+ i32 -5008, label %then.10
+ ]
+
+then.10: ; preds = %else.3, %else.3
+ %tmp.112 = load i16* null ; <i16> [#uses=2]
+ %tmp.113 = load i16* @G ; <i16> [#uses=2]
+ %tmp.114 = icmp ugt i16 %tmp.112, %tmp.113 ; <i1> [#uses=1]
+ %tmp.120 = icmp ult i16 %tmp.112, %tmp.113 ; <i1> [#uses=1]
+ %bothcond = and i1 %tmp.114, %tmp.120 ; <i1> [#uses=1]
+ br i1 %bothcond, label %else.4, label %then.11
+
+then.11: ; preds = %then.10
+ ret void
+
+else.4: ; preds = %then.10
+ ret void
+
+endif.10: ; preds = %else.3
+ ret void
+}
diff --git a/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll b/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll
new file mode 100644
index 0000000000000..6b9bf11860f98
--- /dev/null
+++ b/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll
@@ -0,0 +1,9 @@
+; RUN: llvm-as < %s | llc
+
+define i32 @test(i32 %tmp93) {
+ %tmp98 = shl i32 %tmp93, 31 ; <i32> [#uses=1]
+ %tmp99 = ashr i32 %tmp98, 31 ; <i32> [#uses=1]
+ %tmp99.upgrd.1 = trunc i32 %tmp99 to i8 ; <i8> [#uses=1]
+ %tmp99100 = sext i8 %tmp99.upgrd.1 to i32 ; <i32> [#uses=1]
+ ret i32 %tmp99100
+}
diff --git a/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll b/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
new file mode 100644
index 0000000000000..59ed2953afadd
--- /dev/null
+++ b/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-as < %s | llc
+%struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
+ %struct.SYMBOL_TABLE_ENTRY = type { [9 x i8], [9 x i8], i32, i32, i32, %struct.SYMBOL_TABLE_ENTRY* }
+ %struct.__sFILEX = type opaque
+ %struct.__sbuf = type { i8*, i32 }
+@str14 = external global [6 x i8] ; <[6 x i8]*> [#uses=0]
+
+declare void @fprintf(i32, ...)
+
+define void @OUTPUT_TABLE(%struct.SYMBOL_TABLE_ENTRY* %SYM_TAB) {
+entry:
+ %tmp11 = getelementptr %struct.SYMBOL_TABLE_ENTRY* %SYM_TAB, i32 0, i32 1, i32 0 ; <i8*> [#uses=2]
+ %tmp.i = bitcast i8* %tmp11 to i8* ; <i8*> [#uses=1]
+ br label %bb.i
+
+bb.i: ; preds = %cond_next.i, %entry
+ %s1.0.i = phi i8* [ %tmp.i, %entry ], [ null, %cond_next.i ] ; <i8*> [#uses=0]
+ br i1 false, label %cond_true.i31, label %cond_next.i
+
+cond_true.i31: ; preds = %bb.i
+ call void (i32, ...)* @fprintf( i32 0, i8* %tmp11, i8* null )
+ ret void
+
+cond_next.i: ; preds = %bb.i
+ br i1 false, label %bb.i, label %bb19.i
+
+bb19.i: ; preds = %cond_next.i
+ ret void
+}
diff --git a/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll b/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll
new file mode 100644
index 0000000000000..b644bd2be78fd
--- /dev/null
+++ b/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc -O0
+
+define float @test(i32 %tmp12771278) {
+ switch i32 %tmp12771278, label %bb1279 [
+ ]
+
+bb1279: ; preds = %0
+ ret float 1.000000e+00
+}
+
diff --git a/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll b/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll
new file mode 100644
index 0000000000000..1aa3c62f955b6
--- /dev/null
+++ b/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-as < %s | llc -O0
+
+%struct.cl_perfunc_opts = type { i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i8, i32, i32, i32, i32, i32, i32, i32 }
+@cl_pf_opts = external global %struct.cl_perfunc_opts ; <%struct.cl_perfunc_opts*> [#uses=2]
+
+define void @set_flags_from_O() {
+entry:
+ %tmp22 = icmp sgt i32 0, 0 ; <i1> [#uses=1]
+ br i1 %tmp22, label %cond_true23, label %cond_next159
+
+cond_true23: ; preds = %entry
+ %tmp138 = getelementptr %struct.cl_perfunc_opts* @cl_pf_opts, i32 0, i32 8 ; <i8*> [#uses=1]
+ %tmp138.upgrd.1 = bitcast i8* %tmp138 to i32* ; <i32*> [#uses=2]
+ %tmp139 = load i32* %tmp138.upgrd.1 ; <i32> [#uses=1]
+ %tmp140 = shl i32 1, 27 ; <i32> [#uses=1]
+ %tmp141 = and i32 %tmp140, 134217728 ; <i32> [#uses=1]
+ %tmp142 = and i32 %tmp139, -134217729 ; <i32> [#uses=1]
+ %tmp143 = or i32 %tmp142, %tmp141 ; <i32> [#uses=1]
+ store i32 %tmp143, i32* %tmp138.upgrd.1
+ %tmp144 = getelementptr %struct.cl_perfunc_opts* @cl_pf_opts, i32 0, i32 8 ; <i8*> [#uses=1]
+ %tmp144.upgrd.2 = bitcast i8* %tmp144 to i32* ; <i32*> [#uses=1]
+ %tmp145 = load i32* %tmp144.upgrd.2 ; <i32> [#uses=1]
+ %tmp146 = shl i32 %tmp145, 22 ; <i32> [#uses=1]
+ %tmp147 = lshr i32 %tmp146, 31 ; <i32> [#uses=1]
+ %tmp147.upgrd.3 = trunc i32 %tmp147 to i8 ; <i8> [#uses=1]
+ %tmp148 = icmp eq i8 %tmp147.upgrd.3, 0 ; <i1> [#uses=1]
+ br i1 %tmp148, label %cond_true149, label %cond_next159
+
+cond_true149: ; preds = %cond_true23
+ %tmp150 = bitcast i8* null to i32* ; <i32*> [#uses=0]
+ ret void
+
+cond_next159: ; preds = %cond_true23, %entry
+ ret void
+}
diff --git a/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll b/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll
new file mode 100644
index 0000000000000..8e8f18639bdb0
--- /dev/null
+++ b/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll
@@ -0,0 +1,279 @@
+; RUN: llvm-as < %s | llc
+%struct.rtunion = type { i64 }
+ %struct.rtx_def = type { i16, i8, i8, [1 x %struct.rtunion] }
+@ix86_cpu = external global i32 ; <i32*> [#uses=1]
+@which_alternative = external global i32 ; <i32*> [#uses=3]
+
+declare fastcc i32 @recog()
+
+define void @athlon_fp_unit_ready_cost() {
+entry:
+ %tmp = icmp slt i32 0, 0 ; <i1> [#uses=1]
+ br i1 %tmp, label %cond_true.i, label %cond_true
+
+cond_true: ; preds = %entry
+ ret void
+
+cond_true.i: ; preds = %entry
+ %tmp8.i = tail call fastcc i32 @recog( ) ; <i32> [#uses=1]
+ switch i32 %tmp8.i, label %UnifiedReturnBlock [
+ i32 -1, label %bb2063
+ i32 19, label %bb2035
+ i32 20, label %bb2035
+ i32 21, label %bb2035
+ i32 23, label %bb2035
+ i32 24, label %bb2035
+ i32 27, label %bb2035
+ i32 32, label %bb2035
+ i32 33, label %bb1994
+ i32 35, label %bb2035
+ i32 36, label %bb1994
+ i32 90, label %bb1948
+ i32 94, label %bb1948
+ i32 95, label %bb1948
+ i32 101, label %bb1648
+ i32 102, label %bb1648
+ i32 103, label %bb1648
+ i32 104, label %bb1648
+ i32 133, label %bb1419
+ i32 135, label %bb1238
+ i32 136, label %bb1238
+ i32 137, label %bb1238
+ i32 138, label %bb1238
+ i32 139, label %bb1201
+ i32 140, label %bb1201
+ i32 141, label %bb1154
+ i32 142, label %bb1126
+ i32 144, label %bb1201
+ i32 145, label %bb1126
+ i32 146, label %bb1201
+ i32 147, label %bb1126
+ i32 148, label %bb1201
+ i32 149, label %bb1126
+ i32 150, label %bb1201
+ i32 151, label %bb1126
+ i32 152, label %bb1096
+ i32 153, label %bb1096
+ i32 154, label %bb1096
+ i32 157, label %bb1096
+ i32 158, label %bb1096
+ i32 159, label %bb1096
+ i32 162, label %bb1096
+ i32 163, label %bb1096
+ i32 164, label %bb1096
+ i32 167, label %bb1201
+ i32 168, label %bb1201
+ i32 170, label %bb1201
+ i32 171, label %bb1201
+ i32 173, label %bb1201
+ i32 174, label %bb1201
+ i32 176, label %bb1201
+ i32 177, label %bb1201
+ i32 179, label %bb993
+ i32 180, label %bb993
+ i32 181, label %bb993
+ i32 182, label %bb993
+ i32 183, label %bb993
+ i32 184, label %bb993
+ i32 365, label %bb1126
+ i32 366, label %bb1126
+ i32 367, label %bb1126
+ i32 368, label %bb1126
+ i32 369, label %bb1126
+ i32 370, label %bb1126
+ i32 371, label %bb1126
+ i32 372, label %bb1126
+ i32 373, label %bb1126
+ i32 384, label %bb1126
+ i32 385, label %bb1126
+ i32 386, label %bb1126
+ i32 387, label %bb1126
+ i32 388, label %bb1126
+ i32 389, label %bb1126
+ i32 390, label %bb1126
+ i32 391, label %bb1126
+ i32 392, label %bb1126
+ i32 525, label %bb919
+ i32 526, label %bb839
+ i32 528, label %bb919
+ i32 529, label %bb839
+ i32 531, label %cond_next6.i119
+ i32 532, label %cond_next6.i97
+ i32 533, label %cond_next6.i81
+ i32 534, label %bb495
+ i32 536, label %cond_next6.i81
+ i32 537, label %cond_next6.i81
+ i32 538, label %bb396
+ i32 539, label %bb288
+ i32 541, label %bb396
+ i32 542, label %bb396
+ i32 543, label %bb396
+ i32 544, label %bb396
+ i32 545, label %bb189
+ i32 546, label %cond_next6.i
+ i32 547, label %bb189
+ i32 548, label %cond_next6.i
+ i32 549, label %bb189
+ i32 550, label %cond_next6.i
+ i32 551, label %bb189
+ i32 552, label %cond_next6.i
+ i32 553, label %bb189
+ i32 554, label %cond_next6.i
+ i32 555, label %bb189
+ i32 556, label %cond_next6.i
+ i32 557, label %bb189
+ i32 558, label %cond_next6.i
+ i32 618, label %bb40
+ i32 619, label %bb18
+ i32 620, label %bb40
+ i32 621, label %bb10
+ i32 622, label %bb10
+ ]
+
+bb10: ; preds = %cond_true.i, %cond_true.i
+ ret void
+
+bb18: ; preds = %cond_true.i
+ ret void
+
+bb40: ; preds = %cond_true.i, %cond_true.i
+ ret void
+
+cond_next6.i: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb189: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb288: ; preds = %cond_true.i
+ ret void
+
+bb396: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb495: ; preds = %cond_true.i
+ ret void
+
+cond_next6.i81: ; preds = %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+cond_next6.i97: ; preds = %cond_true.i
+ ret void
+
+cond_next6.i119: ; preds = %cond_true.i
+ %tmp.i126 = icmp eq i16 0, 78 ; <i1> [#uses=1]
+ br i1 %tmp.i126, label %cond_next778, label %bb802
+
+cond_next778: ; preds = %cond_next6.i119
+ %tmp781 = icmp eq i32 0, 1 ; <i1> [#uses=1]
+ br i1 %tmp781, label %cond_next784, label %bb790
+
+cond_next784: ; preds = %cond_next778
+ %tmp785 = load i32* @ix86_cpu ; <i32> [#uses=1]
+ %tmp786 = icmp eq i32 %tmp785, 5 ; <i1> [#uses=1]
+ br i1 %tmp786, label %UnifiedReturnBlock, label %bb790
+
+bb790: ; preds = %cond_next784, %cond_next778
+ %tmp793 = icmp eq i32 0, 1 ; <i1> [#uses=0]
+ ret void
+
+bb802: ; preds = %cond_next6.i119
+ ret void
+
+bb839: ; preds = %cond_true.i, %cond_true.i
+ ret void
+
+bb919: ; preds = %cond_true.i, %cond_true.i
+ ret void
+
+bb993: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb1096: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb1126: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb1154: ; preds = %cond_true.i
+ ret void
+
+bb1201: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb1238: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb1419: ; preds = %cond_true.i
+ ret void
+
+bb1648: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ %tmp1650 = load i32* @which_alternative ; <i32> [#uses=1]
+ switch i32 %tmp1650, label %bb1701 [
+ i32 0, label %cond_next1675
+ i32 1, label %cond_next1675
+ i32 2, label %cond_next1675
+ ]
+
+cond_next1675: ; preds = %bb1648, %bb1648, %bb1648
+ ret void
+
+bb1701: ; preds = %bb1648
+ %tmp1702 = load i32* @which_alternative ; <i32> [#uses=1]
+ switch i32 %tmp1702, label %bb1808 [
+ i32 0, label %cond_next1727
+ i32 1, label %cond_next1727
+ i32 2, label %cond_next1727
+ ]
+
+cond_next1727: ; preds = %bb1701, %bb1701, %bb1701
+ ret void
+
+bb1808: ; preds = %bb1701
+ %bothcond696 = or i1 false, false ; <i1> [#uses=1]
+ br i1 %bothcond696, label %bb1876, label %cond_next1834
+
+cond_next1834: ; preds = %bb1808
+ ret void
+
+bb1876: ; preds = %bb1808
+ %tmp1877signed = load i32* @which_alternative ; <i32> [#uses=4]
+ %tmp1877 = bitcast i32 %tmp1877signed to i32 ; <i32> [#uses=1]
+ %bothcond699 = icmp ult i32 %tmp1877, 2 ; <i1> [#uses=1]
+ %tmp1888 = icmp eq i32 %tmp1877signed, 2 ; <i1> [#uses=1]
+ %bothcond700 = or i1 %bothcond699, %tmp1888 ; <i1> [#uses=1]
+ %bothcond700.not = xor i1 %bothcond700, true ; <i1> [#uses=1]
+ %tmp1894 = icmp eq i32 %tmp1877signed, 3 ; <i1> [#uses=1]
+ %bothcond701 = or i1 %tmp1894, %bothcond700.not ; <i1> [#uses=1]
+ %bothcond702 = or i1 %bothcond701, false ; <i1> [#uses=1]
+ br i1 %bothcond702, label %UnifiedReturnBlock, label %cond_next1902
+
+cond_next1902: ; preds = %bb1876
+ switch i32 %tmp1877signed, label %cond_next1937 [
+ i32 0, label %bb1918
+ i32 1, label %bb1918
+ i32 2, label %bb1918
+ ]
+
+bb1918: ; preds = %cond_next1902, %cond_next1902, %cond_next1902
+ ret void
+
+cond_next1937: ; preds = %cond_next1902
+ ret void
+
+bb1948: ; preds = %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb1994: ; preds = %cond_true.i, %cond_true.i
+ ret void
+
+bb2035: ; preds = %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i, %cond_true.i
+ ret void
+
+bb2063: ; preds = %cond_true.i
+ ret void
+
+UnifiedReturnBlock: ; preds = %bb1876, %cond_next784, %cond_true.i
+ %UnifiedRetVal = phi i32 [ 100, %bb1876 ], [ 100, %cond_true.i ], [ 4, %cond_next784 ] ; <i32> [#uses=0]
+ ret void
+}
diff --git a/test/CodeGen/Generic/2006-07-03-schedulers.ll b/test/CodeGen/Generic/2006-07-03-schedulers.ll
new file mode 100644
index 0000000000000..4c4481ccad8ce
--- /dev/null
+++ b/test/CodeGen/Generic/2006-07-03-schedulers.ll
@@ -0,0 +1,32 @@
+; RUN: llvm-as < %s | llc -pre-RA-sched=default
+; RUN: llvm-as < %s | llc -pre-RA-sched=list-burr
+; RUN: llvm-as < %s | llc -pre-RA-sched=fast
+; PR859
+
+; The top-down schedulers are excluded here because they don't yet support
+; targets that use physreg defs.
+
+declare i32 @printf(i8*, i32, float)
+
+define i32 @testissue(i32 %i, float %x, float %y) {
+ br label %bb1
+
+bb1: ; preds = %bb1, %0
+ %x1 = mul float %x, %y ; <float> [#uses=1]
+ %y1 = mul float %y, 7.500000e-01 ; <float> [#uses=1]
+ %z1 = add float %x1, %y1 ; <float> [#uses=1]
+ %x2 = mul float %x, 5.000000e-01 ; <float> [#uses=1]
+ %y2 = mul float %y, 0x3FECCCCCC0000000 ; <float> [#uses=1]
+ %z2 = add float %x2, %y2 ; <float> [#uses=1]
+ %z3 = add float %z1, %z2 ; <float> [#uses=1]
+ %i1 = shl i32 %i, 3 ; <i32> [#uses=1]
+ %j1 = add i32 %i, 7 ; <i32> [#uses=1]
+ %m1 = add i32 %i1, %j1 ; <i32> [#uses=2]
+ %b = icmp sle i32 %m1, 6 ; <i1> [#uses=1]
+ br i1 %b, label %bb1, label %bb2
+
+bb2: ; preds = %bb1
+ %Msg = inttoptr i64 0 to i8* ; <i8*> [#uses=1]
+ call i32 @printf( i8* %Msg, i32 %m1, float %z3 ) ; <i32>:1 [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll b/test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll
new file mode 100644
index 0000000000000..7f8af5dda4980
--- /dev/null
+++ b/test/CodeGen/Generic/2006-08-30-CoalescerCrash.ll
@@ -0,0 +1,112 @@
+; RUN: llvm-as < %s | llc
+%struct.CUMULATIVE_ARGS = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 }
+ %struct.VEC_edge = type { i32, i32, [1 x %struct.edge_def*] }
+ %struct._obstack_chunk = type { i8*, %struct._obstack_chunk*, [4 x i8] }
+ %struct.basic_block_def = type { %struct.rtx_def*, %struct.rtx_def*, %struct.tree_node*, %struct.VEC_edge*, %struct.VEC_edge*, %struct.bitmap_head_def*, %struct.bitmap_head_def*, i8*, %struct.loop*, [2 x %struct.et_node*], %struct.basic_block_def*, %struct.basic_block_def*, %struct.reorder_block_def*, %struct.bb_ann_d*, i64, i32, i32, i32, i32 }
+ %struct.bb_ann_d = type { %struct.tree_node*, i8, %struct.edge_prediction* }
+ %struct.bitmap_element_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, i32, [4 x i32] }
+ %struct.bitmap_head_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, i32, %struct.bitmap_obstack* }
+ %struct.bitmap_obstack = type { %struct.bitmap_element_def*, %struct.bitmap_head_def*, %struct.obstack }
+ %struct.cost_pair = type { %struct.iv_cand*, i32, %struct.bitmap_head_def* }
+ %struct.dataflow_d = type { %struct.varray_head_tag*, [2 x %struct.tree_node*] }
+ %struct.def_operand_ptr = type { %struct.tree_node** }
+ %struct.def_optype_d = type { i32, [1 x %struct.def_operand_ptr] }
+ %struct.edge_def = type { %struct.basic_block_def*, %struct.basic_block_def*, %struct.edge_def_insns, i8*, %struct.location_t*, i32, i32, i64, i32 }
+ %struct.edge_def_insns = type { %struct.rtx_def* }
+ %struct.edge_prediction = type { %struct.edge_prediction*, %struct.edge_def*, i32, i32 }
+ %struct.eh_status = type opaque
+ %struct.emit_status = type { i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack*, i32, %struct.location_t, i32, i8*, %struct.rtx_def** }
+ %struct.et_node = type opaque
+ %struct.expr_status = type { i32, i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def* }
+ %struct.function = type { %struct.eh_status*, %struct.expr_status*, %struct.emit_status*, %struct.varasm_status*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.function*, i32, i32, i32, i32, %struct.rtx_def*, %struct.CUMULATIVE_ARGS, %struct.rtx_def*, %struct.rtx_def*, %struct.initial_value_struct*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, i8, i32, i64, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.varray_head_tag*, %struct.temp_slot*, i32, %struct.var_refs_queue*, i32, i32, %struct.rtvec_def*, %struct.tree_node*, i32, i32, i32, %struct.machine_function*, i32, i32, i1, i1, %struct.language_function*, %struct.rtx_def*, i32, i32, i32, i32, %struct.location_t, %struct.varray_head_tag*, %struct.tree_node*, i8, i8, i8 }
+ %struct.htab = type { i32 (i8*)*, i32 (i8*, i8*)*, void (i8*)*, i8**, i32, i32, i32, i32, i32, i8* (i32, i32)*, void (i8*)*, i8*, i8* (i8*, i32, i32)*, void (i8*, i8*)*, i32 }
+ %struct.initial_value_struct = type opaque
+ %struct.iv = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i1, i1, i32 }
+ %struct.iv_cand = type { i32, i1, i32, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.iv*, i32 }
+ %struct.iv_use = type { i32, i32, %struct.iv*, %struct.tree_node*, %struct.tree_node**, %struct.bitmap_head_def*, i32, %struct.cost_pair*, %struct.iv_cand* }
+ %struct.ivopts_data = type { %struct.loop*, %struct.htab*, i32, %struct.version_info*, %struct.bitmap_head_def*, i32, %struct.varray_head_tag*, %struct.varray_head_tag*, %struct.bitmap_head_def*, i1 }
+ %struct.lang_decl = type opaque
+ %struct.language_function = type opaque
+ %struct.location_t = type { i8*, i32 }
+ %struct.loop = type { i32, %struct.basic_block_def*, %struct.basic_block_def*, %struct.basic_block_def*, %struct.lpt_decision, i32, i32, %struct.edge_def**, i32, %struct.basic_block_def*, %struct.basic_block_def*, i32, %struct.edge_def**, i32, %struct.edge_def**, i32, %struct.simple_bitmap_def*, i32, %struct.loop**, i32, %struct.loop*, %struct.loop*, %struct.loop*, %struct.loop*, i32, i8*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, i32, %struct.tree_node*, %struct.tree_node*, %struct.nb_iter_bound*, %struct.edge_def*, i1 }
+ %struct.lpt_decision = type { i32, i32 }
+ %struct.machine_function = type { %struct.stack_local_entry*, i8*, %struct.rtx_def*, i32, i32, i32, i32, i32 }
+ %struct.nb_iter_bound = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.nb_iter_bound* }
+ %struct.obstack = type { i32, %struct._obstack_chunk*, i8*, i8*, i8*, i32, i32, %struct._obstack_chunk* (i8*, i32)*, void (i8*, %struct._obstack_chunk*)*, i8*, i8 }
+ %struct.reorder_block_def = type { %struct.rtx_def*, %struct.rtx_def*, %struct.basic_block_def*, %struct.basic_block_def*, %struct.basic_block_def*, i32, i32, i32 }
+ %struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] }
+ %struct.rtx_def = type { i16, i8, i8, %struct.u }
+ %struct.sequence_stack = type { %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack* }
+ %struct.simple_bitmap_def = type { i32, i32, i32, [1 x i64] }
+ %struct.stack_local_entry = type opaque
+ %struct.stmt_ann_d = type { %struct.tree_ann_common_d, i8, %struct.basic_block_def*, %struct.stmt_operands_d, %struct.dataflow_d*, %struct.bitmap_head_def*, i32 }
+ %struct.stmt_operands_d = type { %struct.def_optype_d*, %struct.def_optype_d*, %struct.v_may_def_optype_d*, %struct.vuse_optype_d*, %struct.v_may_def_optype_d* }
+ %struct.temp_slot = type opaque
+ %struct.tree_ann_common_d = type { i32, i8*, %struct.tree_node* }
+ %struct.tree_ann_d = type { %struct.stmt_ann_d }
+ %struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_ann_d*, i8, i8, i8, i8, i8 }
+ %struct.tree_decl = type { %struct.tree_common, %struct.location_t, i32, %struct.tree_node*, i8, i8, i8, i8, i8, i8, i8, i32, %struct.tree_decl_u1, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, i32, %struct.tree_decl_u2, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_decl* }
+ %struct.tree_decl_u1 = type { i64 }
+ %struct.tree_decl_u2 = type { %struct.function* }
+ %struct.tree_node = type { %struct.tree_decl }
+ %struct.u = type { [1 x i64] }
+ %struct.v_def_use_operand_type_t = type { %struct.tree_node*, %struct.tree_node* }
+ %struct.v_may_def_optype_d = type { i32, [1 x %struct.v_def_use_operand_type_t] }
+ %struct.var_refs_queue = type { %struct.rtx_def*, i32, i32, %struct.var_refs_queue* }
+ %struct.varasm_status = type opaque
+ %struct.varray_head_tag = type { i32, i32, i32, i8*, %struct.u }
+ %struct.version_info = type { %struct.tree_node*, %struct.iv*, i1, i32, i1 }
+ %struct.vuse_optype_d = type { i32, [1 x %struct.tree_node*] }
+
+define i1 @determine_use_iv_cost(%struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand) {
+entry:
+ switch i32 0, label %bb91 [
+ i32 0, label %bb
+ i32 1, label %bb6
+ i32 3, label %cond_next135
+ ]
+
+bb: ; preds = %entry
+ ret i1 false
+
+bb6: ; preds = %entry
+ br i1 false, label %bb87, label %cond_next27
+
+cond_next27: ; preds = %bb6
+ br i1 false, label %cond_true30, label %cond_next55
+
+cond_true30: ; preds = %cond_next27
+ br i1 false, label %cond_next41, label %cond_true35
+
+cond_true35: ; preds = %cond_true30
+ ret i1 false
+
+cond_next41: ; preds = %cond_true30
+ %tmp44 = call i32 @force_var_cost( %struct.ivopts_data* %data, %struct.tree_node* null, %struct.bitmap_head_def** null ) ; <i32> [#uses=2]
+ %tmp46 = udiv i32 %tmp44, 5 ; <i32> [#uses=1]
+ call void @set_use_iv_cost( %struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand, i32 %tmp46, %struct.bitmap_head_def* null )
+ %tmp44.off = add i32 %tmp44, -50000000 ; <i32> [#uses=1]
+ %tmp52 = icmp ugt i32 %tmp44.off, 4 ; <i1> [#uses=1]
+ %tmp52.upgrd.1 = zext i1 %tmp52 to i32 ; <i32> [#uses=1]
+ br label %bb87
+
+cond_next55: ; preds = %cond_next27
+ ret i1 false
+
+bb87: ; preds = %cond_next41, %bb6
+ %tmp2.0 = phi i32 [ %tmp52.upgrd.1, %cond_next41 ], [ 1, %bb6 ] ; <i32> [#uses=0]
+ ret i1 false
+
+bb91: ; preds = %entry
+ ret i1 false
+
+cond_next135: ; preds = %entry
+ %tmp193 = call i1 @determine_use_iv_cost_generic( %struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand ) ; <i1> [#uses=0]
+ ret i1 false
+}
+
+declare void @set_use_iv_cost(%struct.ivopts_data*, %struct.iv_use*, %struct.iv_cand*, i32, %struct.bitmap_head_def*)
+
+declare i32 @force_var_cost(%struct.ivopts_data*, %struct.tree_node*, %struct.bitmap_head_def**)
+
+declare i1 @determine_use_iv_cost_generic(%struct.ivopts_data*, %struct.iv_use*, %struct.iv_cand*)
diff --git a/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll b/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll
new file mode 100644
index 0000000000000..c6d0dfee38158
--- /dev/null
+++ b/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll
@@ -0,0 +1,117 @@
+; RUN: llvm-as < %s | llc -regalloc=local
+
+%struct.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 }
+@search = external global %struct.CHESS_POSITION ; <%struct.CHESS_POSITION*> [#uses=2]
+@bishop_shift_rl45 = external global [64 x i32] ; <[64 x i32]*> [#uses=1]
+@bishop_shift_rr45 = external global [64 x i32] ; <[64 x i32]*> [#uses=1]
+@black_outpost = external global [64 x i8] ; <[64 x i8]*> [#uses=1]
+@bishop_mobility_rl45 = external global [64 x [256 x i32]] ; <[64 x [256 x i32]]*> [#uses=1]
+@bishop_mobility_rr45 = external global [64 x [256 x i32]] ; <[64 x [256 x i32]]*> [#uses=1]
+
+declare fastcc i32 @FirstOne()
+
+define fastcc void @Evaluate() {
+entry:
+ br i1 false, label %cond_false186, label %cond_true
+
+cond_true: ; preds = %entry
+ ret void
+
+cond_false186: ; preds = %entry
+ br i1 false, label %cond_true293, label %bb203
+
+bb203: ; preds = %cond_false186
+ ret void
+
+cond_true293: ; preds = %cond_false186
+ br i1 false, label %cond_true298, label %cond_next317
+
+cond_true298: ; preds = %cond_true293
+ br i1 false, label %cond_next518, label %cond_true397.preheader
+
+cond_next317: ; preds = %cond_true293
+ ret void
+
+cond_true397.preheader: ; preds = %cond_true298
+ ret void
+
+cond_next518: ; preds = %cond_true298
+ br i1 false, label %bb1069, label %cond_true522
+
+cond_true522: ; preds = %cond_next518
+ ret void
+
+bb1069: ; preds = %cond_next518
+ br i1 false, label %cond_next1131, label %bb1096
+
+bb1096: ; preds = %bb1069
+ ret void
+
+cond_next1131: ; preds = %bb1069
+ br i1 false, label %cond_next1207, label %cond_true1150
+
+cond_true1150: ; preds = %cond_next1131
+ ret void
+
+cond_next1207: ; preds = %cond_next1131
+ br i1 false, label %cond_next1219, label %cond_true1211
+
+cond_true1211: ; preds = %cond_next1207
+ ret void
+
+cond_next1219: ; preds = %cond_next1207
+ br i1 false, label %cond_true1223, label %cond_next1283
+
+cond_true1223: ; preds = %cond_next1219
+ br i1 false, label %cond_true1254, label %cond_true1264
+
+cond_true1254: ; preds = %cond_true1223
+ br i1 false, label %bb1567, label %cond_true1369.preheader
+
+cond_true1264: ; preds = %cond_true1223
+ ret void
+
+cond_next1283: ; preds = %cond_next1219
+ ret void
+
+cond_true1369.preheader: ; preds = %cond_true1254
+ ret void
+
+bb1567: ; preds = %cond_true1254
+ %tmp1580 = load i64* getelementptr (%struct.CHESS_POSITION* @search, i32 0, i32 3) ; <i64> [#uses=1]
+ %tmp1591 = load i64* getelementptr (%struct.CHESS_POSITION* @search, i32 0, i32 4) ; <i64> [#uses=1]
+ %tmp1572 = tail call fastcc i32 @FirstOne( ) ; <i32> [#uses=5]
+ %tmp1582 = getelementptr [64 x i32]* @bishop_shift_rl45, i32 0, i32 %tmp1572 ; <i32*> [#uses=1]
+ %tmp1583 = load i32* %tmp1582 ; <i32> [#uses=1]
+ %tmp1583.upgrd.1 = trunc i32 %tmp1583 to i8 ; <i8> [#uses=1]
+ %shift.upgrd.2 = zext i8 %tmp1583.upgrd.1 to i64 ; <i64> [#uses=1]
+ %tmp1584 = lshr i64 %tmp1580, %shift.upgrd.2 ; <i64> [#uses=1]
+ %tmp1584.upgrd.3 = trunc i64 %tmp1584 to i32 ; <i32> [#uses=1]
+ %tmp1585 = and i32 %tmp1584.upgrd.3, 255 ; <i32> [#uses=1]
+ %gep.upgrd.4 = zext i32 %tmp1585 to i64 ; <i64> [#uses=1]
+ %tmp1587 = getelementptr [64 x [256 x i32]]* @bishop_mobility_rl45, i32 0, i32 %tmp1572, i64 %gep.upgrd.4 ; <i32*> [#uses=1]
+ %tmp1588 = load i32* %tmp1587 ; <i32> [#uses=1]
+ %tmp1593 = getelementptr [64 x i32]* @bishop_shift_rr45, i32 0, i32 %tmp1572 ; <i32*> [#uses=1]
+ %tmp1594 = load i32* %tmp1593 ; <i32> [#uses=1]
+ %tmp1594.upgrd.5 = trunc i32 %tmp1594 to i8 ; <i8> [#uses=1]
+ %shift.upgrd.6 = zext i8 %tmp1594.upgrd.5 to i64 ; <i64> [#uses=1]
+ %tmp1595 = lshr i64 %tmp1591, %shift.upgrd.6 ; <i64> [#uses=1]
+ %tmp1595.upgrd.7 = trunc i64 %tmp1595 to i32 ; <i32> [#uses=1]
+ %tmp1596 = and i32 %tmp1595.upgrd.7, 255 ; <i32> [#uses=1]
+ %gep.upgrd.8 = zext i32 %tmp1596 to i64 ; <i64> [#uses=1]
+ %tmp1598 = getelementptr [64 x [256 x i32]]* @bishop_mobility_rr45, i32 0, i32 %tmp1572, i64 %gep.upgrd.8 ; <i32*> [#uses=1]
+ %tmp1599 = load i32* %tmp1598 ; <i32> [#uses=1]
+ %tmp1600.neg = sub i32 0, %tmp1588 ; <i32> [#uses=1]
+ %tmp1602 = sub i32 %tmp1600.neg, %tmp1599 ; <i32> [#uses=1]
+ %tmp1604 = getelementptr [64 x i8]* @black_outpost, i32 0, i32 %tmp1572 ; <i8*> [#uses=1]
+ %tmp1605 = load i8* %tmp1604 ; <i8> [#uses=1]
+ %tmp1606 = icmp eq i8 %tmp1605, 0 ; <i1> [#uses=1]
+ br i1 %tmp1606, label %cond_next1637, label %cond_true1607
+
+cond_true1607: ; preds = %bb1567
+ ret void
+
+cond_next1637: ; preds = %bb1567
+ %tmp1662 = sub i32 %tmp1602, 0 ; <i32> [#uses=0]
+ ret void
+}
diff --git a/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll b/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll
new file mode 100644
index 0000000000000..2134d3302bc2c
--- /dev/null
+++ b/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll
@@ -0,0 +1,96 @@
+; RUN: llvm-as < %s | llc
+
+define void @foo() {
+ br label %cond_true813.i
+
+cond_true813.i: ; preds = %0
+ br i1 false, label %cond_true818.i, label %cond_next1146.i
+
+cond_true818.i: ; preds = %cond_true813.i
+ br i1 false, label %recog_memoized.exit52, label %cond_next1146.i
+
+recog_memoized.exit52: ; preds = %cond_true818.i
+ switch i32 0, label %bb886.i.preheader [
+ i32 0, label %bb907.i
+ i32 44, label %bb866.i
+ i32 103, label %bb874.i
+ i32 114, label %bb874.i
+ ]
+
+bb857.i: ; preds = %bb886.i, %bb866.i
+ %tmp862.i494.24 = phi i8* [ null, %bb866.i ], [ %tmp862.i494.26, %bb886.i ] ; <i8*> [#uses=4]
+ switch i32 0, label %bb886.i.preheader [
+ i32 0, label %bb907.i
+ i32 44, label %bb866.i
+ i32 103, label %bb874.i
+ i32 114, label %bb874.i
+ ]
+
+bb866.i.loopexit: ; preds = %bb874.i
+ br label %bb866.i
+
+bb866.i.loopexit31: ; preds = %cond_true903.i
+ br label %bb866.i
+
+bb866.i: ; preds = %bb866.i.loopexit31, %bb866.i.loopexit, %bb857.i, %recog_memoized.exit52
+ br i1 false, label %bb907.i, label %bb857.i
+
+bb874.i.preheader.loopexit: ; preds = %cond_true903.i, %cond_true903.i
+ ret void
+
+bb874.i: ; preds = %bb857.i, %bb857.i, %recog_memoized.exit52, %recog_memoized.exit52
+ %tmp862.i494.25 = phi i8* [ %tmp862.i494.24, %bb857.i ], [ %tmp862.i494.24, %bb857.i ], [ undef, %recog_memoized.exit52 ], [ undef, %recog_memoized.exit52 ] ; <i8*> [#uses=1]
+ switch i32 0, label %bb886.i.preheader.loopexit [
+ i32 0, label %bb907.i
+ i32 44, label %bb866.i.loopexit
+ i32 103, label %bb874.i.backedge
+ i32 114, label %bb874.i.backedge
+ ]
+
+bb874.i.backedge: ; preds = %bb874.i, %bb874.i
+ ret void
+
+bb886.i.preheader.loopexit: ; preds = %bb874.i
+ ret void
+
+bb886.i.preheader: ; preds = %bb857.i, %recog_memoized.exit52
+ %tmp862.i494.26 = phi i8* [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.24, %bb857.i ] ; <i8*> [#uses=1]
+ br label %bb886.i
+
+bb886.i: ; preds = %cond_true903.i, %bb886.i.preheader
+ br i1 false, label %bb857.i, label %cond_true903.i
+
+cond_true903.i: ; preds = %bb886.i
+ switch i32 0, label %bb886.i [
+ i32 0, label %bb907.i
+ i32 44, label %bb866.i.loopexit31
+ i32 103, label %bb874.i.preheader.loopexit
+ i32 114, label %bb874.i.preheader.loopexit
+ ]
+
+bb907.i: ; preds = %cond_true903.i, %bb874.i, %bb866.i, %bb857.i, %recog_memoized.exit52
+ %tmp862.i494.0 = phi i8* [ %tmp862.i494.24, %bb857.i ], [ null, %bb866.i ], [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.25, %bb874.i ], [ null, %cond_true903.i ] ; <i8*> [#uses=1]
+ br i1 false, label %cond_next1146.i, label %cond_true910.i
+
+cond_true910.i: ; preds = %bb907.i
+ ret void
+
+cond_next1146.i: ; preds = %bb907.i, %cond_true818.i, %cond_true813.i
+ %tmp862.i494.1 = phi i8* [ %tmp862.i494.0, %bb907.i ], [ undef, %cond_true818.i ], [ undef, %cond_true813.i ] ; <i8*> [#uses=0]
+ ret void
+
+bb2060.i: ; No predecessors!
+ br i1 false, label %cond_true2064.i, label %bb2067.i
+
+cond_true2064.i: ; preds = %bb2060.i
+ unreachable
+
+bb2067.i: ; preds = %bb2060.i
+ ret void
+
+cond_next3473: ; No predecessors!
+ ret void
+
+cond_next3521: ; No predecessors!
+ ret void
+}
diff --git a/test/CodeGen/Generic/2006-10-27-CondFolding.ll b/test/CodeGen/Generic/2006-10-27-CondFolding.ll
new file mode 100644
index 0000000000000..b3cfb9941bbb2
--- /dev/null
+++ b/test/CodeGen/Generic/2006-10-27-CondFolding.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-as < %s | llc
+
+define void @start_pass_huff(i32 %gather_statistics) {
+entry:
+ %tmp = icmp eq i32 %gather_statistics, 0 ; <i1> [#uses=1]
+ br i1 false, label %cond_next22, label %bb166
+
+cond_next22: ; preds = %entry
+ %bothcond = and i1 false, %tmp ; <i1> [#uses=1]
+ br i1 %bothcond, label %bb34, label %bb46
+
+bb34: ; preds = %cond_next22
+ ret void
+
+bb46: ; preds = %cond_next22
+ ret void
+
+bb166: ; preds = %entry
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2006-10-29-Crash.ll b/test/CodeGen/Generic/2006-10-29-Crash.ll
new file mode 100644
index 0000000000000..cabec54d16108
--- /dev/null
+++ b/test/CodeGen/Generic/2006-10-29-Crash.ll
@@ -0,0 +1,22 @@
+; RUN: llvm-as < %s | llc
+
+define void @form_component_prediction(i32 %dy) {
+entry:
+ %tmp7 = and i32 %dy, 1 ; <i32> [#uses=1]
+ %tmp27 = icmp eq i32 %tmp7, 0 ; <i1> [#uses=1]
+ br i1 false, label %cond_next30, label %bb115
+
+cond_next30: ; preds = %entry
+ ret void
+
+bb115: ; preds = %entry
+ %bothcond1 = or i1 %tmp27, false ; <i1> [#uses=1]
+ br i1 %bothcond1, label %bb228, label %cond_next125
+
+cond_next125: ; preds = %bb115
+ ret void
+
+bb228: ; preds = %bb115
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll b/test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll
new file mode 100644
index 0000000000000..a773759f36ea9
--- /dev/null
+++ b/test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc -march=x86 | not grep adc
+; PR987
+
+declare void @llvm.memcpy.i64(i8*, i8*, i64, i32)
+
+define void @foo(i64 %a) {
+ %b = add i64 %a, 1 ; <i64> [#uses=1]
+ call void @llvm.memcpy.i64( i8* null, i8* null, i64 %b, i32 1 )
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll b/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll
new file mode 100644
index 0000000000000..95ef53c62ec52
--- /dev/null
+++ b/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll
@@ -0,0 +1,41 @@
+; RUN: llvm-as < %s | llc
+; PR1011
+%struct.mng_data = type { i8* (%struct.mng_data*, i32)*, i32, i32, i32, i8, i8, i32, i32, i32, i32, i32 }
+
+define void @mng_display_bgr565() {
+entry:
+ br i1 false, label %bb.preheader, label %return
+
+bb.preheader: ; preds = %entry
+ br i1 false, label %cond_true48, label %cond_next80
+
+cond_true48: ; preds = %bb.preheader
+ %tmp = load i8* null ; <i8> [#uses=1]
+ %tmp51 = zext i8 %tmp to i16 ; <i16> [#uses=1]
+ %tmp99 = load i8* null ; <i8> [#uses=1]
+ %tmp54 = bitcast i8 %tmp99 to i8 ; <i8> [#uses=1]
+ %tmp54.upgrd.1 = zext i8 %tmp54 to i32 ; <i32> [#uses=1]
+ %tmp55 = lshr i32 %tmp54.upgrd.1, 3 ; <i32> [#uses=1]
+ %tmp55.upgrd.2 = trunc i32 %tmp55 to i16 ; <i16> [#uses=1]
+ %tmp52 = shl i16 %tmp51, 5 ; <i16> [#uses=1]
+ %tmp56 = and i16 %tmp55.upgrd.2, 28 ; <i16> [#uses=1]
+ %tmp57 = or i16 %tmp56, %tmp52 ; <i16> [#uses=1]
+ %tmp60 = zext i16 %tmp57 to i32 ; <i32> [#uses=1]
+ %tmp62 = xor i32 0, 65535 ; <i32> [#uses=1]
+ %tmp63 = mul i32 %tmp60, %tmp62 ; <i32> [#uses=1]
+ %tmp65 = add i32 0, %tmp63 ; <i32> [#uses=1]
+ %tmp69 = add i32 0, %tmp65 ; <i32> [#uses=1]
+ %tmp70 = lshr i32 %tmp69, 16 ; <i32> [#uses=1]
+ %tmp70.upgrd.3 = trunc i32 %tmp70 to i16 ; <i16> [#uses=1]
+ %tmp75 = lshr i16 %tmp70.upgrd.3, 8 ; <i16> [#uses=1]
+ %tmp75.upgrd.4 = trunc i16 %tmp75 to i8 ; <i8> [#uses=1]
+ %tmp76 = lshr i8 %tmp75.upgrd.4, 5 ; <i8> [#uses=1]
+ store i8 %tmp76, i8* null
+ ret void
+
+cond_next80: ; preds = %bb.preheader
+ ret void
+
+return: ; preds = %entry
+ ret void
+}
diff --git a/test/CodeGen/Generic/2006-12-16-InlineAsmCrash.ll b/test/CodeGen/Generic/2006-12-16-InlineAsmCrash.ll
new file mode 100644
index 0000000000000..91ac3b9909dc1
--- /dev/null
+++ b/test/CodeGen/Generic/2006-12-16-InlineAsmCrash.ll
@@ -0,0 +1,30 @@
+; RUN: llvm-as < %s | llc -march=x86
+; PR1049
+target datalayout = "e-p:32:32"
+target triple = "i686-pc-linux-gnu"
+ %struct.QBasicAtomic = type { i32 }
+ %struct.QByteArray = type { %"struct.QByteArray::Data"* }
+ %"struct.QByteArray::Data" = type { %struct.QBasicAtomic, i32, i32, i8*, [1 x i8] }
+ %struct.QFactoryLoader = type { %struct.QObject }
+ %struct.QImageIOHandler = type { i32 (...)**, %struct.QImageIOHandlerPrivate* }
+ %struct.QImageIOHandlerPrivate = type opaque
+ %struct.QImageWriter = type { %struct.QImageWriterPrivate* }
+ %struct.QImageWriterPrivate = type { %struct.QByteArray, %struct.QFactoryLoader*, i1, %struct.QImageIOHandler*, i32, float, %struct.QString, %struct.QString, i32, %struct.QString, %struct.QImageWriter* }
+ %"struct.QList<QByteArray>" = type { %"struct.QList<QByteArray>::._20" }
+ %"struct.QList<QByteArray>::._20" = type { %struct.QListData }
+ %struct.QListData = type { %"struct.QListData::Data"* }
+ %"struct.QListData::Data" = type { %struct.QBasicAtomic, i32, i32, i32, i8, [1 x i8*] }
+ %struct.QObject = type { i32 (...)**, %struct.QObjectData* }
+ %struct.QObjectData = type { i32 (...)**, %struct.QObject*, %struct.QObject*, %"struct.QList<QByteArray>", i8, [3 x i8], i32, i32 }
+ %struct.QString = type { %"struct.QString::Data"* }
+ %"struct.QString::Data" = type { %struct.QBasicAtomic, i32, i32, i16*, i8, i8, [1 x i16] }
+
+define i1 @_ZNK12QImageWriter8canWriteEv() {
+ %tmp62 = load %struct.QImageWriterPrivate** null ; <%struct.QImageWriterPrivate*> [#uses=1]
+ %tmp = getelementptr %struct.QImageWriterPrivate* %tmp62, i32 0, i32 9 ; <%struct.QString*> [#uses=1]
+ %tmp75 = call %struct.QString* @_ZN7QStringaSERKS_( %struct.QString* %tmp, %struct.QString* null ) ; <%struct.QString*> [#uses=0]
+ call void asm sideeffect "lock\0Adecl $0\0Asetne 1", "=*m"( i32* null )
+ ret i1 false
+}
+
+declare %struct.QString* @_ZN7QStringaSERKS_(%struct.QString*, %struct.QString*)
diff --git a/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll b/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll
new file mode 100644
index 0000000000000..49203d95d4a06
--- /dev/null
+++ b/test/CodeGen/Generic/2007-01-15-LoadSelectCycle.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc
+; PR1114
+
+declare i1 @foo()
+
+define i32 @test(i32* %A, i32* %B) {
+ %a = load i32* %A
+ %b = load i32* %B
+ %cond = call i1 @foo()
+ %c = select i1 %cond, i32 %a, i32 %b
+ ret i32 %c
+}
diff --git a/test/CodeGen/Generic/2007-02-16-BranchFold.ll b/test/CodeGen/Generic/2007-02-16-BranchFold.ll
new file mode 100644
index 0000000000000..0a8e49e56e490
--- /dev/null
+++ b/test/CodeGen/Generic/2007-02-16-BranchFold.ll
@@ -0,0 +1,95 @@
+; PR 1200
+; RUN: llvm-as < %s | llc -enable-tail-merge=0 | not grep jmp
+
+; ModuleID = '<stdin>'
+target datalayout = "e-p:32:32"
+target triple = "i686-apple-darwin8"
+ %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
+ %struct.Index_Map = type { i32, %struct.item_set** }
+ %struct.Item = type { [4 x i16], %struct.rule* }
+ %struct.__sFILEX = type opaque
+ %struct.__sbuf = type { i8*, i32 }
+ %struct.dimension = type { i16*, %struct.Index_Map, %struct.mapping*, i32, %struct.plankMap* }
+ %struct.item_set = type { i32, i32, %struct.operator*, [2 x %struct.item_set*], %struct.item_set*, i16*, %struct.Item*, %struct.Item* }
+ %struct.list = type { i8*, %struct.list* }
+ %struct.mapping = type { %struct.list**, i32, i32, i32, %struct.item_set** }
+ %struct.nonterminal = type { i8*, i32, i32, i32, %struct.plankMap*, %struct.rule* }
+ %struct.operator = type { i8*, i8, i32, i32, i32, i32, %struct.table* }
+ %struct.pattern = type { %struct.nonterminal*, %struct.operator*, [2 x %struct.nonterminal*] }
+ %struct.plank = type { i8*, %struct.list*, i32 }
+ %struct.plankMap = type { %struct.list*, i32, %struct.stateMap* }
+ %struct.rule = type { [4 x i16], i32, i32, i32, %struct.nonterminal*, %struct.pattern*, i8 }
+ %struct.stateMap = type { i8*, %struct.plank*, i32, i16* }
+ %struct.table = type { %struct.operator*, %struct.list*, i16*, [2 x %struct.dimension*], %struct.item_set** }
+@outfile = external global %struct.FILE* ; <%struct.FILE**> [#uses=1]
+@str1 = external global [11 x i8] ; <[11 x i8]*> [#uses=1]
+
+declare i32 @fprintf(%struct.FILE*, i8*, ...)
+
+define i16 @main_bb_2E_i9_2E_i_2E_i932_2E_ce(%struct.list* %l_addr.01.0.i2.i.i929, %struct.operator** %tmp66.i62.i.out) {
+newFuncRoot:
+ br label %bb.i9.i.i932.ce
+
+NewDefault: ; preds = %LeafBlock, %LeafBlock1, %LeafBlock2, %LeafBlock3
+ br label %bb36.i.i.exitStub
+
+bb36.i.i.exitStub: ; preds = %NewDefault
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 0
+
+bb.i14.i.exitStub: ; preds = %LeafBlock
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 1
+
+bb12.i.i935.exitStub: ; preds = %LeafBlock1
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 2
+
+bb20.i.i937.exitStub: ; preds = %LeafBlock2
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 3
+
+bb28.i.i938.exitStub: ; preds = %LeafBlock3
+ store %struct.operator* %tmp66.i62.i, %struct.operator** %tmp66.i62.i.out
+ ret i16 4
+
+bb.i9.i.i932.ce: ; preds = %newFuncRoot
+ %tmp1.i3.i.i930 = getelementptr %struct.list* %l_addr.01.0.i2.i.i929, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2.i4.i.i931 = load i8** %tmp1.i3.i.i930 ; <i8*> [#uses=1]
+ %tmp66.i62.i = bitcast i8* %tmp2.i4.i.i931 to %struct.operator* ; <%struct.operator*> [#uses=7]
+ %tmp1.i6.i = getelementptr %struct.operator* %tmp66.i62.i, i32 0, i32 2 ; <i32*> [#uses=1]
+ %tmp2.i7.i = load i32* %tmp1.i6.i ; <i32> [#uses=1]
+ %tmp3.i8.i = load %struct.FILE** @outfile ; <%struct.FILE*> [#uses=1]
+ %tmp5.i9.i = call i32 (%struct.FILE*, i8*, ...)* @fprintf( %struct.FILE* %tmp3.i8.i, i8* getelementptr ([11 x i8]* @str1, i32 0, i32 0), i32 %tmp2.i7.i ) ; <i32> [#uses=0]
+ %tmp7.i10.i = getelementptr %struct.operator* %tmp66.i62.i, i32 0, i32 5 ; <i32*> [#uses=1]
+ %tmp8.i11.i = load i32* %tmp7.i10.i ; <i32> [#uses=7]
+ br label %NodeBlock5
+
+NodeBlock5: ; preds = %bb.i9.i.i932.ce
+ icmp slt i32 %tmp8.i11.i, 1 ; <i1>:0 [#uses=1]
+ br i1 %0, label %NodeBlock, label %NodeBlock4
+
+NodeBlock4: ; preds = %NodeBlock5
+ icmp slt i32 %tmp8.i11.i, 2 ; <i1>:1 [#uses=1]
+ br i1 %1, label %LeafBlock2, label %LeafBlock3
+
+LeafBlock3: ; preds = %NodeBlock4
+ icmp eq i32 %tmp8.i11.i, 2 ; <i1>:2 [#uses=1]
+ br i1 %2, label %bb28.i.i938.exitStub, label %NewDefault
+
+LeafBlock2: ; preds = %NodeBlock4
+ icmp eq i32 %tmp8.i11.i, 1 ; <i1>:3 [#uses=1]
+ br i1 %3, label %bb20.i.i937.exitStub, label %NewDefault
+
+NodeBlock: ; preds = %NodeBlock5
+ icmp slt i32 %tmp8.i11.i, 0 ; <i1>:4 [#uses=1]
+ br i1 %4, label %LeafBlock, label %LeafBlock1
+
+LeafBlock1: ; preds = %NodeBlock
+ icmp eq i32 %tmp8.i11.i, 0 ; <i1>:5 [#uses=1]
+ br i1 %5, label %bb12.i.i935.exitStub, label %NewDefault
+
+LeafBlock: ; preds = %NodeBlock
+ icmp eq i32 %tmp8.i11.i, -1 ; <i1>:6 [#uses=1]
+ br i1 %6, label %bb.i14.i.exitStub, label %NewDefault
+}
diff --git a/test/CodeGen/Generic/2007-02-23-DAGCombine-Miscompile.ll b/test/CodeGen/Generic/2007-02-23-DAGCombine-Miscompile.ll
new file mode 100644
index 0000000000000..8b7db478181e2
--- /dev/null
+++ b/test/CodeGen/Generic/2007-02-23-DAGCombine-Miscompile.ll
@@ -0,0 +1,13 @@
+; PR1219
+; RUN: llvm-as < %s | llc -march=x86 | grep {movl \$1, %eax}
+
+define i32 @test(i1 %X) {
+old_entry1:
+ %hvar2 = zext i1 %X to i32
+ %C = icmp sgt i32 %hvar2, -1
+ br i1 %C, label %cond_true15, label %cond_true
+cond_true15:
+ ret i32 1
+cond_true:
+ ret i32 2
+}
diff --git a/test/CodeGen/Generic/2007-02-25-invoke.ll b/test/CodeGen/Generic/2007-02-25-invoke.ll
new file mode 100644
index 0000000000000..6dba99e21f790
--- /dev/null
+++ b/test/CodeGen/Generic/2007-02-25-invoke.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc
+
+; PR1224
+
+declare i32 @test()
+define i32 @test2() {
+ %A = invoke i32 @test() to label %invcont unwind label %blat
+invcont:
+ ret i32 %A
+blat:
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll b/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll
new file mode 100644
index 0000000000000..9cbf3146eb80c
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-08-MultipleFrameIndices.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc
+; XFAIL: sparc-sun-solaris2
+; PR1308
+; PR1557
+
+define i32 @stuff(i32, ...) {
+ %foo = alloca i8*
+ %bar = alloca i32*
+ %A = call i32 asm sideeffect "inline asm $0 $2 $3 $4", "=r,0,i,m,m"( i32 0, i32 1, i8** %foo, i32** %bar )
+ ret i32 %A
+}
diff --git a/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll b/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll
new file mode 100644
index 0000000000000..1418bbf16dfd8
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll
@@ -0,0 +1,27 @@
+; RUN: llvm-as < %s | llc -O0
+; PR 1323
+
+; ModuleID = 'test.bc'
+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"
+target triple = "i686-apple-darwin8"
+ %struct.comp = type { i8*, i32, i8*, [3 x i8], i32 }
+
+define void @regbranch() {
+cond_next240.i:
+ br i1 false, label %cond_true251.i, label %cond_next272.i
+
+cond_true251.i: ; preds = %cond_next240.i
+ switch i8 0, label %cond_next272.i [
+ i8 42, label %bb268.i
+ i8 43, label %bb268.i
+ i8 63, label %bb268.i
+ ]
+
+bb268.i: ; preds = %cond_true251.i, %cond_true251.i, %cond_true251.i
+ br label %cond_next272.i
+
+cond_next272.i: ; preds = %bb268.i, %cond_true251.i, %cond_next240.i
+ %len.2.i = phi i32 [ 0, %bb268.i ], [ 0, %cond_next240.i ], [ 0, %cond_true251.i ] ; <i32> [#uses=1]
+ %tmp278.i = icmp eq i32 %len.2.i, 1 ; <i1> [#uses=0]
+ ret void
+}
diff --git a/test/CodeGen/Generic/2007-04-14-BitTestsBadMask.ll b/test/CodeGen/Generic/2007-04-14-BitTestsBadMask.ll
new file mode 100644
index 0000000000000..5490687e1ba81
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-14-BitTestsBadMask.ll
@@ -0,0 +1,160 @@
+; RUN: llvm-as < %s | llc -march=x86 | grep 8388635
+; RUN: llvm-as < %s | llc -march=x86-64 | grep 4294981120
+; PR 1325
+
+; ModuleID = 'bugpoint.test.bc'
+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"
+target triple = "powerpc-apple-darwin8.8.0"
+;target triple = "i686-linux-gnu"
+ %struct.FILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x i8], [1 x i8], %struct.__sbuf, i32, i64 }
+ %struct.__sFILEX = type opaque
+ %struct.__sbuf = type { i8*, i32 }
+@PL_rsfp = external global %struct.FILE* ; <%struct.FILE**> [#uses=1]
+@PL_bufend = external global i8* ; <i8**> [#uses=1]
+@PL_in_eval = external global i32 ; <i32*> [#uses=1]
+
+declare fastcc void @incline(i8*)
+
+define i16 @Perl_skipspace_bb60(i8* %s, i8** %s_addr.4.out) {
+newFuncRoot:
+ %tmp138.loc = alloca i8* ; <i8**> [#uses=2]
+ %s_addr.4.loc = alloca i8* ; <i8**> [#uses=2]
+ %tmp274.loc = alloca i8* ; <i8**> [#uses=2]
+ br label %bb60
+
+cond_next154.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl
+ store i8* %s_addr.4.reload, i8** %s_addr.4.out
+ ret i16 0
+
+cond_next161.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl
+ store i8* %s_addr.4.reload, i8** %s_addr.4.out
+ ret i16 1
+
+cond_next167.UnifiedReturnBlock_crit_edge.exitStub: ; preds = %codeRepl
+ store i8* %s_addr.4.reload, i8** %s_addr.4.out
+ ret i16 2
+
+cond_false29.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl
+ store i8* %s_addr.4.reload, i8** %s_addr.4.out
+ ret i16 3
+
+cond_next.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl
+ store i8* %s_addr.4.reload, i8** %s_addr.4.out
+ ret i16 4
+
+cond_true19.i.cond_true190_crit_edge.exitStub: ; preds = %codeRepl
+ store i8* %s_addr.4.reload, i8** %s_addr.4.out
+ ret i16 5
+
+bb60: ; preds = %bb60.backedge, %newFuncRoot
+ %s_addr.2 = phi i8* [ %s, %newFuncRoot ], [ %s_addr.2.be, %bb60.backedge ] ; <i8*> [#uses=3]
+ %tmp61 = load i8** @PL_bufend ; <i8*> [#uses=1]
+ %tmp63 = icmp ult i8* %s_addr.2, %tmp61 ; <i1> [#uses=1]
+ br i1 %tmp63, label %bb60.cond_next67_crit_edge, label %bb60.bb101_crit_edge
+
+bb37: ; preds = %cond_next67.bb37_crit_edge5, %cond_next67.bb37_crit_edge4, %cond_next67.bb37_crit_edge3, %cond_next67.bb37_crit_edge2, %cond_next67.bb37_crit_edge
+ %tmp40 = icmp eq i8 %tmp69, 10 ; <i1> [#uses=1]
+ %tmp43 = getelementptr i8* %s_addr.27.2, i32 1 ; <i8*> [#uses=5]
+ br i1 %tmp40, label %cond_true45, label %bb37.bb60_crit_edge
+
+cond_true45: ; preds = %bb37
+ %tmp46 = volatile load i32* @PL_in_eval ; <i32> [#uses=1]
+ %tmp47 = icmp eq i32 %tmp46, 0 ; <i1> [#uses=1]
+ br i1 %tmp47, label %cond_true45.bb60_crit_edge, label %cond_true50
+
+cond_true50: ; preds = %cond_true45
+ %tmp51 = volatile load %struct.FILE** @PL_rsfp ; <%struct.FILE*> [#uses=1]
+ %tmp52 = icmp eq %struct.FILE* %tmp51, null ; <i1> [#uses=1]
+ br i1 %tmp52, label %cond_true55, label %cond_true50.bb60_crit_edge
+
+cond_true55: ; preds = %cond_true50
+ tail call fastcc void @incline( i8* %tmp43 )
+ br label %bb60.backedge
+
+cond_next67: ; preds = %Perl_newSV.exit.cond_next67_crit_edge, %cond_true148.cond_next67_crit_edge, %bb60.cond_next67_crit_edge
+ %s_addr.27.2 = phi i8* [ %s_addr.2, %bb60.cond_next67_crit_edge ], [ %tmp274.reload, %Perl_newSV.exit.cond_next67_crit_edge ], [ %tmp138.reload, %cond_true148.cond_next67_crit_edge ] ; <i8*> [#uses=3]
+ %tmp69 = load i8* %s_addr.27.2 ; <i8> [#uses=2]
+ switch i8 %tmp69, label %cond_next67.bb101_crit_edge [
+ i8 32, label %cond_next67.bb37_crit_edge
+ i8 9, label %cond_next67.bb37_crit_edge2
+ i8 10, label %cond_next67.bb37_crit_edge3
+ i8 13, label %cond_next67.bb37_crit_edge4
+ i8 12, label %cond_next67.bb37_crit_edge5
+ ]
+
+codeRepl: ; preds = %bb101.preheader
+ %targetBlock = call i16 @Perl_skipspace_bb60_bb101( i8* %s_addr.27.3.ph, i8** %tmp274.loc, i8** %s_addr.4.loc, i8** %tmp138.loc ) ; <i16> [#uses=1]
+ %tmp274.reload = load i8** %tmp274.loc ; <i8*> [#uses=4]
+ %s_addr.4.reload = load i8** %s_addr.4.loc ; <i8*> [#uses=6]
+ %tmp138.reload = load i8** %tmp138.loc ; <i8*> [#uses=1]
+ switch i16 %targetBlock, label %cond_true19.i.cond_true190_crit_edge.exitStub [
+ i16 0, label %cond_next271.bb60_crit_edge
+ i16 1, label %cond_true290.bb60_crit_edge
+ i16 2, label %cond_true295.bb60_crit_edge
+ i16 3, label %Perl_newSV.exit.cond_next67_crit_edge
+ i16 4, label %cond_true148.cond_next67_crit_edge
+ i16 5, label %cond_next154.UnifiedReturnBlock_crit_edge.exitStub
+ i16 6, label %cond_next161.UnifiedReturnBlock_crit_edge.exitStub
+ i16 7, label %cond_next167.UnifiedReturnBlock_crit_edge.exitStub
+ i16 8, label %cond_false29.i.cond_true190_crit_edge.exitStub
+ i16 9, label %cond_next.i.cond_true190_crit_edge.exitStub
+ ]
+
+bb37.bb60_crit_edge: ; preds = %bb37
+ br label %bb60.backedge
+
+cond_true45.bb60_crit_edge: ; preds = %cond_true45
+ br label %bb60.backedge
+
+cond_true50.bb60_crit_edge: ; preds = %cond_true50
+ br label %bb60.backedge
+
+bb60.cond_next67_crit_edge: ; preds = %bb60
+ br label %cond_next67
+
+bb60.bb101_crit_edge: ; preds = %bb60
+ br label %bb101.preheader
+
+cond_next67.bb101_crit_edge: ; preds = %cond_next67
+ br label %bb101.preheader
+
+cond_next67.bb37_crit_edge: ; preds = %cond_next67
+ br label %bb37
+
+cond_next67.bb37_crit_edge2: ; preds = %cond_next67
+ br label %bb37
+
+cond_next67.bb37_crit_edge3: ; preds = %cond_next67
+ br label %bb37
+
+cond_next67.bb37_crit_edge4: ; preds = %cond_next67
+ br label %bb37
+
+cond_next67.bb37_crit_edge5: ; preds = %cond_next67
+ br label %bb37
+
+cond_true148.cond_next67_crit_edge: ; preds = %codeRepl
+ br label %cond_next67
+
+cond_next271.bb60_crit_edge: ; preds = %codeRepl
+ br label %bb60.backedge
+
+cond_true290.bb60_crit_edge: ; preds = %codeRepl
+ br label %bb60.backedge
+
+cond_true295.bb60_crit_edge: ; preds = %codeRepl
+ br label %bb60.backedge
+
+Perl_newSV.exit.cond_next67_crit_edge: ; preds = %codeRepl
+ br label %cond_next67
+
+bb101.preheader: ; preds = %cond_next67.bb101_crit_edge, %bb60.bb101_crit_edge
+ %s_addr.27.3.ph = phi i8* [ %s_addr.27.2, %cond_next67.bb101_crit_edge ], [ %s_addr.2, %bb60.bb101_crit_edge ] ; <i8*> [#uses=1]
+ br label %codeRepl
+
+bb60.backedge: ; preds = %cond_true295.bb60_crit_edge, %cond_true290.bb60_crit_edge, %cond_next271.bb60_crit_edge, %cond_true50.bb60_crit_edge, %cond_true45.bb60_crit_edge, %bb37.bb60_crit_edge, %cond_true55
+ %s_addr.2.be = phi i8* [ %tmp43, %cond_true55 ], [ %tmp43, %bb37.bb60_crit_edge ], [ %tmp43, %cond_true45.bb60_crit_edge ], [ %tmp43, %cond_true50.bb60_crit_edge ], [ %tmp274.reload, %cond_next271.bb60_crit_edge ], [ %tmp274.reload, %cond_true290.bb60_crit_edge ], [ %tmp274.reload, %cond_true295.bb60_crit_edge ] ; <i8*> [#uses=1]
+ br label %bb60
+}
+
+declare i16 @Perl_skipspace_bb60_bb101(i8*, i8**, i8**, i8**)
diff --git a/test/CodeGen/Generic/2007-04-17-lsr-crash.ll b/test/CodeGen/Generic/2007-04-17-lsr-crash.ll
new file mode 100644
index 0000000000000..4257e9f4c2dcd
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-17-lsr-crash.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-as < %s | llc
+
+define void @foo(i32 %inTextSize) {
+entry:
+ br label %bb236.outer
+
+cond_next193: ; preds = %bb236
+ %tmp211 = add i32 %inTextSize_addr.1.ph17, -2 ; <i32> [#uses=1]
+ br i1 false, label %cond_next232, label %cond_true227
+
+cond_true227: ; preds = %cond_next193
+ ret void
+
+cond_next232: ; preds = %cond_next193
+ %indvar.next49 = add i32 %indvar48, 1 ; <i32> [#uses=1]
+ br label %bb236.outer
+
+bb236.outer: ; preds = %cond_next232, %entry
+ %indvar48 = phi i32 [ %indvar.next49, %cond_next232 ], [ 0, %entry ] ; <i32> [#uses=2]
+ %inTextSize_addr.1.ph17 = phi i32 [ %tmp211, %cond_next232 ], [ %inTextSize, %entry ] ; <i32> [#uses=3]
+ %tmp.50 = sub i32 0, %indvar48 ; <i32> [#uses=1]
+ %tmp219 = icmp eq i32 %tmp.50, 0 ; <i1> [#uses=1]
+ br i1 %tmp219, label %bb236.us, label %bb236
+
+bb236.us: ; preds = %bb236.outer
+ %inTextSize_addr.1.us = add i32 0, %inTextSize_addr.1.ph17 ; <i32> [#uses=0]
+ ret void
+
+bb236: ; preds = %bb236.outer
+ %tmp238 = icmp eq i32 %inTextSize_addr.1.ph17, 0 ; <i1> [#uses=1]
+ br i1 %tmp238, label %exit, label %cond_next193
+
+exit: ; preds = %bb236
+ ret void
+}
diff --git a/test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll b/test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll
new file mode 100644
index 0000000000000..16d7a1654d936
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llc -march=x86 | grep je | count 3
+; RUN: llvm-as < %s | llc -march=x86-64 | grep 4297064449
+; PR 1325+
+
+define i32 @foo(i8 %bar) {
+entry:
+ switch i8 %bar, label %bb1203 [
+ i8 117, label %bb1204
+ i8 85, label %bb1204
+ i8 106, label %bb1204
+ ]
+
+bb1203: ; preds = %entry
+ ret i32 1
+
+bb1204: ; preds = %entry, %entry, %entry
+ ret i32 2
+}
diff --git a/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll b/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll
new file mode 100644
index 0000000000000..0ea13a2ad2e84
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll
@@ -0,0 +1,8 @@
+; RUN: llvm-as < %s | llc
+
+; Test that we can have an "X" output constraint.
+
+define void @test(i16 * %t) {
+ call void asm sideeffect "foo $0", "=*X,~{dirflag},~{fpsr},~{flags},~{memory}"( i16* %t )
+ ret void
+}
diff --git a/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll b/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll
new file mode 100644
index 0000000000000..9424ea7a29fde
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-as < %s | llc
+
+ %struct..0anon = type { [100 x i32] }
+
+define void @test() {
+entry:
+ %currfpu = alloca %struct..0anon, align 16 ; <%struct..0anon*> [#uses=2]
+ %mxcsr = alloca %struct..0anon, align 16 ; <%struct..0anon*> [#uses=1]
+ call void asm sideeffect "fnstenv $0", "=*m,~{dirflag},~{fpsr},~{flags}"( %struct..0anon* %currfpu )
+ call void asm sideeffect "$0 $1", "=*m,*m,~{dirflag},~{fpsr},~{flags}"( %struct..0anon* %mxcsr, %struct..0anon* %currfpu )
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll b/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll
new file mode 100644
index 0000000000000..71b4c857d0794
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-30-LandingPadBranchFolding.ll
@@ -0,0 +1,59 @@
+; RUN: llvm-as < %s | llc
+; PR1228
+
+ "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider" = type { i8* }
+ "struct.std::locale" = type { "struct.std::locale::_Impl"* }
+ "struct.std::locale::_Impl" = type { i32, "struct.std::locale::facet"**, i32, "struct.std::locale::facet"**, i8** }
+ "struct.std::locale::facet" = type { i32 (...)**, i32 }
+ "struct.std::string" = type { "struct.std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Alloc_hider" }
+
+define void @_ZNKSt6locale4nameEv("struct.std::string"* %agg.result) {
+entry:
+ %tmp105 = icmp eq i8* null, null ; <i1> [#uses=1]
+ br i1 %tmp105, label %cond_true, label %cond_true222
+
+cond_true: ; preds = %entry
+ invoke void @_ZNSs14_M_replace_auxEjjjc( )
+ to label %cond_next1328 unwind label %cond_true1402
+
+cond_true222: ; preds = %cond_true222, %entry
+ %tmp207 = call i32 @strcmp( ) ; <i32> [#uses=1]
+ %tmp208 = icmp eq i32 %tmp207, 0 ; <i1> [#uses=2]
+ %bothcond1480 = and i1 %tmp208, false ; <i1> [#uses=1]
+ br i1 %bothcond1480, label %cond_true222, label %cond_next226.loopexit
+
+cond_next226.loopexit: ; preds = %cond_true222
+ %phitmp = xor i1 %tmp208, true ; <i1> [#uses=1]
+ br i1 %phitmp, label %cond_false280, label %cond_true235
+
+cond_true235: ; preds = %cond_next226.loopexit
+ invoke void @_ZNSs6assignEPKcj( )
+ to label %cond_next1328 unwind label %cond_true1402
+
+cond_false280: ; preds = %cond_next226.loopexit
+ invoke void @_ZNSs7reserveEj( )
+ to label %invcont282 unwind label %cond_true1402
+
+invcont282: ; preds = %cond_false280
+ invoke void @_ZNSs6appendEPKcj( )
+ to label %invcont317 unwind label %cond_true1402
+
+invcont317: ; preds = %invcont282
+ ret void
+
+cond_next1328: ; preds = %cond_true235, %cond_true
+ ret void
+
+cond_true1402: ; preds = %invcont282, %cond_false280, %cond_true235, %cond_true
+ ret void
+}
+
+declare void @_ZNSs14_M_replace_auxEjjjc()
+
+declare i32 @strcmp()
+
+declare void @_ZNSs6assignEPKcj()
+
+declare void @_ZNSs7reserveEj()
+
+declare void @_ZNSs6appendEPKcj()
diff --git a/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll b/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
new file mode 100644
index 0000000000000..8a427902f7218
--- /dev/null
+++ b/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc -enable-eh -march=x86
+
+ %struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
+@program_error = external global %struct.exception ; <%struct.exception*> [#uses=1]
+
+define void @typeinfo() {
+entry:
+ %eh_typeid = tail call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @program_error, i32 0, i32 0) ) ; <i32> [#uses=0]
+ ret void
+}
+
+declare i32 @llvm.eh.typeid.for.i32(i8*)
diff --git a/test/CodeGen/Generic/2007-05-05-Personality.ll b/test/CodeGen/Generic/2007-05-05-Personality.ll
new file mode 100644
index 0000000000000..0fa0e2ff6b220
--- /dev/null
+++ b/test/CodeGen/Generic/2007-05-05-Personality.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-as < %s | llc -mtriple=i686-pc-linux-gnu -enable-eh -o - | grep zPLR
+
+@error = external global i8 ; <i8*> [#uses=2]
+
+define void @_ada_x() {
+entry:
+ invoke void @raise( )
+ to label %eh_then unwind label %unwind
+
+unwind: ; preds = %entry
+ %eh_ptr = tail call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i8* @error ) ; <i32> [#uses=1]
+ %eh_typeid = tail call i32 @llvm.eh.typeid.for.i32( i8* @error ) ; <i32> [#uses=1]
+ %tmp2 = icmp eq i32 %eh_select, %eh_typeid ; <i1> [#uses=1]
+ br i1 %tmp2, label %eh_then, label %Unwind
+
+eh_then: ; preds = %unwind, %entry
+ ret void
+
+Unwind: ; preds = %unwind
+ tail call i32 (...)* @_Unwind_Resume( i8* %eh_ptr ) ; <i32>:0 [#uses=0]
+ unreachable
+}
+
+declare void @raise()
+
+declare i8* @llvm.eh.exception()
+
+declare i32 @llvm.eh.selector.i32(i8*, i8*, ...)
+
+declare i32 @llvm.eh.typeid.for.i32(i8*)
+
+declare i32 @__gnat_eh_personality(...)
+
+declare i32 @_Unwind_Resume(...)
diff --git a/test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll b/test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll
new file mode 100644
index 0000000000000..74957952fe7b5
--- /dev/null
+++ b/test/CodeGen/Generic/2007-05-15-InfiniteRecursion.ll
@@ -0,0 +1,90 @@
+; RUN: llvm-as < %s | llc
+
+ %struct.AVClass = type { i8*, i8* (i8*)*, %struct.AVOption* }
+ %struct.AVCodec = type { i8*, i32, i32, i32, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32, i8*)*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32*, i8*, i32)*, i32, %struct.AVCodec*, void (%struct.AVCodecContext*)*, %struct.AVRational*, i32* }
+ %struct.AVCodecContext = type { %struct.AVClass*, i32, i32, i32, i32, i32, i8*, i32, %struct.AVRational, i32, i32, i32, i32, i32, void (%struct.AVCodecContext*, %struct.AVFrame*, i32*, i32, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, float, float, i32, i32, i32, i32, float, i32, i32, i32, %struct.AVCodec*, i8*, i32, i32, void (%struct.AVCodecContext*, i8*, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, [32 x i8], i32, i32, i32, i32, i32, i32, i32, float, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, void (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i8*, i8*, float, float, i32, %struct.RcOverride*, i32, i8*, i32, i32, i32, float, float, float, float, i32, float, float, float, float, float, i32, i32, i32, i32*, i32, i32, i32, i32, %struct.AVRational, %struct.AVFrame*, i32, i32, [4 x i64], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32*)*, i32, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i32, i32, i16*, i16*, i32, i32, i32, i32, %struct.AVPaletteControl*, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32 (%struct.AVCodecContext*, i8*)*, i8**, i32*, i32)*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64 }
+ %struct.AVEvalExpr = type opaque
+ %struct.AVFrame = type { [4 x i8*], [4 x i32], [4 x i8*], i32, i32, i64, i32, i32, i32, i32, i32, i8*, i32, i8*, [2 x [2 x i16]*], i32*, i8, i8*, [4 x i64], i32, i32, i32, i32, i32, %struct.AVPanScan*, i32, i32, i16*, [2 x i8*] }
+ %struct.AVOption = type opaque
+ %struct.AVPaletteControl = type { i32, [256 x i32] }
+ %struct.AVPanScan = type { i32, i32, i32, [3 x [2 x i16]] }
+ %struct.AVRational = type { i32, i32 }
+ %struct.DSPContext = type { void (i16*, i8*, i32)*, void (i16*, i8*, i8*, i32)*, void (i16*, i8*, i32)*, void (i16*, i8*, i32)*, void (i16*, i8*, i32)*, void (i8*, i16*, i32)*, void (i8*, i16*, i32)*, void (i8*, i8*, i32, i32, i32, i32, i32)*, void (i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32)*, void (i16*)*, i32 (i8*, i32)*, i32 (i8*, i32)*, [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], [5 x i32 (i8*, i8*, i8*, i32, i32)*], i32 (i8*, i16*, i32)*, [4 x [4 x void (i8*, i8*, i32, i32)*]], [4 x [4 x void (i8*, i8*, i32, i32)*]], [4 x [4 x void (i8*, i8*, i32, i32)*]], [4 x [4 x void (i8*, i8*, i32, i32)*]], [2 x void (i8*, i8*, i8*, i32, i32)*], [11 x void (i8*, i8*, i32, i32, i32)*], [11 x void (i8*, i8*, i32, i32, i32)*], [2 x [16 x void (i8*, i8*, i32)*]], [2 x [16 x void (i8*, i8*, i32)*]], [2 x [16 x void (i8*, i8*, i32)*]], [2 x [16 x void (i8*, i8*, i32)*]], [8 x void (i8*, i8*, i32)*], [3 x void (i8*, i8*, i32, i32, i32, i32)*], [3 x void (i8*, i8*, i32, i32, i32, i32)*], [3 x void (i8*, i8*, i32, i32, i32, i32)*], [4 x [16 x void (i8*, i8*, i32)*]], [4 x [16 x void (i8*, i8*, i32)*]], [4 x [16 x void (i8*, i8*, i32)*]], [4 x [16 x void (i8*, i8*, i32)*]], [10 x void (i8*, i32, i32, i32, i32)*], [10 x void (i8*, i8*, i32, i32, i32, i32, i32)*], [2 x [16 x void (i8*, i8*, i32)*]], [2 x [16 x void (i8*, i8*, i32)*]], void (i8*, i32, i32, i32, i32, i32, i32)*, void (i8*, i32, i32, i32, i32, i32, i32)*, void (i8*, i32, i32, i32, i32, i32, i32)*, void (i8*, i32, i32, i32, i32, i32, i32)*, void (i8*, i16*, i32)*, [2 x [4 x i32 (i8*, i8*, i8*, i32, i32)*]], void (i8*, i8*, i32)*, void (i8*, i8*, i8*, i32)*, void (i8*, i8*, i8*, i32, i32*, i32*)*, void (i32*, i32*, i32)*, void (i8*, i32, i32, i32, i8*)*, void (i8*, i32, i32, i32, i8*)*, void (i8*, i32, i32, i32, i8*)*, void (i8*, i32, i32, i32, i8*)*, void (i8*, i32, i32, i32)*, void (i8*, i32, i32, i32)*, void ([4 x [4 x i16]]*, i8*, [40 x i8]*, [40 x [2 x i16]]*, i32, i32, i32, i32, i32)*, void (i8*, i32, i32)*, void (i8*, i32, i32)*, void (i8*, i32)*, void (float*, float*, i32)*, void (float*, float*, i32)*, void (float*, float*, float*, i32)*, void (float*, float*, float*, float*, i32, i32, i32)*, void (i16*, float*, i32)*, void (i16*)*, void (i16*)*, void (i16*)*, void (i8*, i32, i16*)*, void (i8*, i32, i16*)*, [64 x i8], i32, i32 (i16*, i16*, i16*, i32)*, void (i16*, i16*, i32)*, void (i8*, i16*, i32)*, void (i8*, i16*, i32)*, void (i8*, i16*, i32)*, void (i8*, i16*, i32)*, void ([4 x i16]*)*, void (i32*, i32*, i32*, i32*, i32*, i32*, i32)*, void (i32*, i32)*, void (i8*, i32, i8**, i32, i32, i32, i32, i32, %struct.slice_buffer*, i32, i8*)*, void (i8*, i32, i32)*, [4 x void (i8*, i32, i8*, i32, i32, i32)*], void (i16*)*, void (i16*, i32)*, void (i16*, i32)*, void (i16*, i32)*, void (i8*, i32)*, void (i8*, i32)*, [16 x void (i8*, i8*, i32, i32)*] }
+ %struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
+ %struct.GetBitContext = type { i8*, i8*, i32*, i32, i32, i32, i32 }
+ %struct.MJpegContext = type opaque
+ %struct.MotionEstContext = type { %struct.AVCodecContext*, i32, [4 x [2 x i32]], [4 x [2 x i32]], i8*, i8*, [2 x i8*], i8*, i32, i32*, i32*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [4 x [4 x i8*]], [4 x [4 x i8*]], i32, i32, i32, i32, i32, [4 x void (i8*, i8*, i32, i32)*]*, [4 x void (i8*, i8*, i32, i32)*]*, [16 x void (i8*, i8*, i32)*]*, [16 x void (i8*, i8*, i32)*]*, [4097 x i8]*, i8*, i32 (%struct.MpegEncContext*, i32*, i32*, i32, i32, i32, i32, i32)* }
+ %struct.MpegEncContext = type { %struct.AVCodecContext*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.PutBitContext, i32, i32, i32, i32, i32, i32, i64, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.Picture*, %struct.Picture**, %struct.Picture**, i32, i32, [8 x %struct.MpegEncContext*], %struct.Picture, %struct.Picture, %struct.Picture, %struct.Picture, %struct.Picture*, %struct.Picture*, %struct.Picture*, [3 x i8*], [3 x i32], i16*, [3 x i16*], [20 x i16], i32, i32, i8*, i8*, i8*, i8*, i8*, [16 x i16]*, [3 x [16 x i16]*], i32, i8*, i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i32, i32, i32, i32*, i32, i32, i32, i32, i32, i32, i32, [5 x i32], i32, i32, i32, i32, %struct.DSPContext, i32, i32, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x [2 x [2 x i16]*]], [2 x [2 x [2 x [2 x i16]*]]], [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x i16]*, [2 x [2 x [2 x i16]*]], [2 x [2 x [2 x [2 x i16]*]]], [2 x i8*], [2 x [2 x i8*]], i32, i32, i32, [2 x [4 x [2 x i32]]], [2 x [2 x i32]], [2 x [2 x [2 x i32]]], i8*, [2 x [64 x i16]], %struct.MotionEstContext, i32, i32, i32, i32, i32, i32, i16*, [6 x i32], [6 x i32], [3 x i8*], i32*, [64 x i16], [64 x i16], [64 x i16], [64 x i16], i32, i32, i32, i32, i32, i8*, i8*, i8*, i8*, i8*, i8*, [8 x i32], [64 x i32]*, [64 x i32]*, [2 x [64 x i16]]*, [2 x [64 x i16]]*, [12 x i32], %struct.ScanTable, %struct.ScanTable, %struct.ScanTable, %struct.ScanTable, [64 x i32]*, [2 x i32], [64 x i16]*, i8*, i64, i64, i32, i32, %struct.RateControlContext, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, i32, i32, %struct.GetBitContext, i32, i32, i32, %struct.ParseContext, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i64, i16, i16, i16, i16, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x [2 x i32]], [2 x [2 x i32]], [2 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, %struct.PutBitContext, %struct.PutBitContext, i32, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i32, [3 x i32], %struct.MJpegContext*, [3 x i32], [3 x i32], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x [65 x [65 x [2 x i32]]]]*, i32, i32, %struct.GetBitContext, i32, i32, i32, i8*, i32, [2 x [2 x i32]], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [2 x i32], i32, i32, i32, i32, i8*, i32, [12 x i16*], [64 x i16]*, [8 x [64 x i16]]*, i32 (%struct.MpegEncContext*, [64 x i16]*)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, void (%struct.MpegEncContext*, i16*, i32, i32)*, i32 (%struct.MpegEncContext*, i16*, i32, i32, i32*)*, i32 (%struct.MpegEncContext*, i16*, i32, i32, i32*)*, void (%struct.MpegEncContext*, i16*)* }
+ %struct.ParseContext = type { i8*, i32, i32, i32, i32, i32, i32, i32 }
+ %struct.Picture = type { [4 x i8*], [4 x i32], [4 x i8*], i32, i32, i64, i32, i32, i32, i32, i32, i8*, i32, i8*, [2 x [2 x i16]*], i32*, i8, i8*, [4 x i64], i32, i32, i32, i32, i32, %struct.AVPanScan*, i32, i32, i16*, [2 x i8*], [3 x i8*], [2 x [2 x i16]*], i32*, [2 x i32], i32, i32, i32, i32, [2 x [16 x i32]], [2 x i32], i32, i32, i16*, i16*, i8*, i32*, i32 }
+ %struct.Predictor = type { double, double, double }
+ %struct.PutBitContext = type { i32, i32, i8*, i8*, i8* }
+ %struct.RateControlContext = type { %struct.FILE*, i32, %struct.RateControlEntry*, double, [5 x %struct.Predictor], double, double, double, double, double, [5 x double], i32, i32, [5 x i64], [5 x i64], [5 x i64], [5 x i64], [5 x i32], i32, i8*, float, i32, %struct.AVEvalExpr* }
+ %struct.RateControlEntry = type { i32, float, i32, i32, i32, i32, i32, i64, i32, float, i32, i32, i32, i32, i32, i32 }
+ %struct.RcOverride = type { i32, i32, i32, float }
+ %struct.ScanTable = type { i8*, [64 x i8], [64 x i8] }
+ %struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 }
+ %struct.slice_buffer = type opaque
+
+define float @ff_rate_estimate_qscale(%struct.MpegEncContext* %s, i32 %dry_run) {
+entry:
+ br i1 false, label %cond_false163, label %cond_true135
+
+cond_true135: ; preds = %entry
+ ret float 0.000000e+00
+
+cond_false163: ; preds = %entry
+ br i1 false, label %cond_true203, label %cond_next211
+
+cond_true203: ; preds = %cond_false163
+ ret float 0.000000e+00
+
+cond_next211: ; preds = %cond_false163
+ br i1 false, label %cond_false243, label %cond_true220
+
+cond_true220: ; preds = %cond_next211
+ br i1 false, label %cond_next237, label %cond_true225
+
+cond_true225: ; preds = %cond_true220
+ ret float 0.000000e+00
+
+cond_next237: ; preds = %cond_true220
+ br i1 false, label %cond_false785, label %cond_true735
+
+cond_false243: ; preds = %cond_next211
+ ret float 0.000000e+00
+
+cond_true735: ; preds = %cond_next237
+ ret float 0.000000e+00
+
+cond_false785: ; preds = %cond_next237
+ br i1 false, label %cond_true356.i.preheader, label %bb359.i
+
+cond_true356.i.preheader: ; preds = %cond_false785
+ %tmp116117.i = zext i8 0 to i32 ; <i32> [#uses=1]
+ br i1 false, label %cond_false.i, label %cond_next159.i
+
+cond_false.i: ; preds = %cond_true356.i.preheader
+ ret float 0.000000e+00
+
+cond_next159.i: ; preds = %cond_true356.i.preheader
+ %tmp178.i = add i32 %tmp116117.i, -128 ; <i32> [#uses=2]
+ %tmp181.i = mul i32 %tmp178.i, %tmp178.i ; <i32> [#uses=1]
+ %tmp181182.i = sitofp i32 %tmp181.i to float ; <float> [#uses=1]
+ %tmp199200.pn.in.i = mul float %tmp181182.i, 0.000000e+00 ; <float> [#uses=1]
+ %tmp199200.pn.i = fpext float %tmp199200.pn.in.i to double ; <double> [#uses=1]
+ %tmp201.pn.i = sub double 1.000000e+00, %tmp199200.pn.i ; <double> [#uses=1]
+ %factor.2.in.i = mul double 0.000000e+00, %tmp201.pn.i ; <double> [#uses=1]
+ %factor.2.i = fptrunc double %factor.2.in.i to float ; <float> [#uses=1]
+ br i1 false, label %cond_next312.i, label %cond_false222.i
+
+cond_false222.i: ; preds = %cond_next159.i
+ ret float 0.000000e+00
+
+cond_next312.i: ; preds = %cond_next159.i
+ %tmp313314.i = fpext float %factor.2.i to double ; <double> [#uses=0]
+ ret float 0.000000e+00
+
+bb359.i: ; preds = %cond_false785
+ ret float 0.000000e+00
+}
diff --git a/test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll b/test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll
new file mode 100644
index 0000000000000..0b98ebe4b665f
--- /dev/null
+++ b/test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll
@@ -0,0 +1,2866 @@
+; RUN: llvm-as < %s | llc -march=x86 -enable-eh -asm-verbose -o - | \
+; RUN: grep -A 3 {Llabel138.*Region start} | grep {3.*Action}
+; PR1422
+; PR1508
+
+target triple = "i686-pc-linux-gnu"
+ %struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
+ %struct.string___XUB = type { i32, i32 }
+ %struct.string___XUP = type { i8*, %struct.string___XUB* }
+ %struct.system__secondary_stack__mark_id = type { i8*, i32 }
+@weekS.154 = internal constant [28 x i8] c"SSUNSMONSTUESWEDSTHUSFRISSAT" ; <[28 x i8]*> [#uses=1]
+@weekN.179 = internal constant [8 x i8] c"\01\05\09\0D\11\15\19\1D" ; <[8 x i8]*> [#uses=1]
+@C.28.862 = internal constant %struct.string___XUB { i32 1, i32 85 } ; <%struct.string___XUB*> [#uses=1]
+@C.29.865 = internal constant %struct.string___XUB { i32 1, i32 7 } ; <%struct.string___XUB*> [#uses=1]
+@C.30.904 = internal constant %struct.string___XUB { i32 1, i32 30 } ; <%struct.string___XUB*> [#uses=1]
+@C.32.910 = internal constant %struct.string___XUB { i32 1, i32 28 } ; <%struct.string___XUB*> [#uses=1]
+@C.35.915 = internal constant %struct.string___XUB { i32 1, i32 24 } ; <%struct.string___XUB*> [#uses=1]
+@C.36.923 = internal constant %struct.string___XUB { i32 1, i32 29 } ; <%struct.string___XUB*> [#uses=1]
+@C.98.1466 = internal constant %struct.string___XUB { i32 1, i32 31 } ; <%struct.string___XUB*> [#uses=1]
+@C.101.1473 = internal constant %struct.string___XUB { i32 1, i32 46 } ; <%struct.string___XUB*> [#uses=1]
+@C.104.1478 = internal constant %struct.string___XUB { i32 1, i32 25 } ; <%struct.string___XUB*> [#uses=1]
+@C.124.1606 = internal constant %struct.string___XUB { i32 1, i32 18 } ; <%struct.string___XUB*> [#uses=1]
+@C.143.1720 = internal constant [2 x i32] [ i32 1, i32 2 ] ; <[2 x i32]*> [#uses=1]
+@C.146.1725 = internal constant %struct.string___XUB { i32 1, i32 37 } ; <%struct.string___XUB*> [#uses=1]
+@C.170.1990 = internal constant %struct.string___XUB { i32 1, i32 19 } ; <%struct.string___XUB*> [#uses=1]
+@C.178.2066 = internal constant %struct.string___XUB { i32 1, i32 27 } ; <%struct.string___XUB*> [#uses=1]
+@.str = internal constant [13 x i8] c"c36104b.adb\00\00" ; <[13 x i8]*> [#uses=1]
+@.str1 = internal constant [85 x i8] c"CONSTRAINT_ERROR IS RAISED OR NOT IN DYNAMIC DISCRETE_RANGES WITH EXPLICIT TYPE_MARKS" ; <[85 x i8]*> [#uses=1]
+@.str2 = internal constant [7 x i8] c"C36104B" ; <[7 x i8]*> [#uses=1]
+@constraint_error = external global %struct.exception ; <%struct.exception*> [#uses=18]
+@__gnat_others_value = external constant i32 ; <i32*> [#uses=37]
+@.str3 = internal constant [30 x i8] c"CONSTRAINT_ERROR NOT RAISED 1 " ; <[30 x i8]*> [#uses=1]
+@system__soft_links__abort_undefer = external global void ()* ; <void ()**> [#uses=30]
+@.str4 = internal constant [28 x i8] c"UNHANDLED EXCEPTION RAISED 1" ; <[28 x i8]*> [#uses=1]
+@.str5 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 1" ; <[24 x i8]*> [#uses=1]
+@.str6 = internal constant [29 x i8] c"CONSTRAINT_ERROR NOT RAISED 3" ; <[29 x i8]*> [#uses=1]
+@.str7 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 3" ; <[24 x i8]*> [#uses=1]
+@.str10 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 4" ; <[24 x i8]*> [#uses=1]
+@.str11 = internal constant [30 x i8] c"CONSTRAINT_ERROR NOT RAISED 7 " ; <[30 x i8]*> [#uses=1]
+@.str12 = internal constant [28 x i8] c"UNHANDLED EXCEPTION RAISED 7" ; <[28 x i8]*> [#uses=1]
+@.str13 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 7" ; <[24 x i8]*> [#uses=1]
+@.str14 = internal constant [30 x i8] c"CONSTRAINT_ERROR NOT RAISED 8 " ; <[30 x i8]*> [#uses=1]
+@.str15 = internal constant [28 x i8] c"UNHANDLED EXCEPTION RAISED 8" ; <[28 x i8]*> [#uses=1]
+@.str16 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 8" ; <[24 x i8]*> [#uses=1]
+@.str17 = internal constant [30 x i8] c"CONSTRAINT_ERROR NOT RAISED 9 " ; <[30 x i8]*> [#uses=1]
+@.str18 = internal constant [24 x i8] c"WRONG EXCEPTION RAISED 9" ; <[24 x i8]*> [#uses=1]
+@.str19 = internal constant [31 x i8] c"CONSTRAINT_ERROR NOT RAISED 10 " ; <[31 x i8]*> [#uses=1]
+@.str20 = internal constant [46 x i8] c"DID NOT RAISE CONSTRAINT_ERROR AT PROPER PLACE" ; <[46 x i8]*> [#uses=1]
+@.str21 = internal constant [25 x i8] c"WRONG EXCEPTION RAISED 10" ; <[25 x i8]*> [#uses=1]
+@.str22 = internal constant [31 x i8] c"CONSTRAINT_ERROR NOT RAISED 11 " ; <[31 x i8]*> [#uses=1]
+@.str23 = internal constant [25 x i8] c"WRONG EXCEPTION RAISED 11" ; <[25 x i8]*> [#uses=1]
+@.str24 = internal constant [30 x i8] c"'FIRST OF NULL ARRAY INCORRECT" ; <[30 x i8]*> [#uses=1]
+@.str25 = internal constant [18 x i8] c"EXCEPTION RAISED 1" ; <[18 x i8]*> [#uses=1]
+@.str26 = internal constant [18 x i8] c"EXCEPTION RAISED 3" ; <[18 x i8]*> [#uses=1]
+@.str27 = internal constant [31 x i8] c"'LENGTH OF NULL ARRAY INCORRECT" ; <[31 x i8]*> [#uses=1]
+@.str28 = internal constant [18 x i8] c"EXCEPTION RAISED 5" ; <[18 x i8]*> [#uses=1]
+@.str29 = internal constant [37 x i8] c"EVALUATION OF EXPRESSION IS INCORRECT" ; <[37 x i8]*> [#uses=1]
+@.str30 = internal constant [18 x i8] c"EXCEPTION RAISED 7" ; <[18 x i8]*> [#uses=1]
+@.str32 = internal constant [18 x i8] c"EXCEPTION RAISED 9" ; <[18 x i8]*> [#uses=1]
+@.str33 = internal constant [19 x i8] c"EXCEPTION RAISED 10" ; <[19 x i8]*> [#uses=1]
+@.str34 = internal constant [19 x i8] c"EXCEPTION RAISED 12" ; <[19 x i8]*> [#uses=1]
+@.str35 = internal constant [27 x i8] c"INCORRECT 'IN' EVALUATION 1" ; <[27 x i8]*> [#uses=1]
+@.str36 = internal constant [27 x i8] c"INCORRECT 'IN' EVALUATION 2" ; <[27 x i8]*> [#uses=1]
+@.str37 = internal constant [29 x i8] c"INCORRECT 'NOT IN' EVALUATION" ; <[29 x i8]*> [#uses=1]
+@.str38 = internal constant [19 x i8] c"EXCEPTION RAISED 52" ; <[19 x i8]*> [#uses=1]
+
+define void @_ada_c36104b() {
+entry:
+ %tmp9 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
+ %tmp12 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp15 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp31 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
+ %tmp34 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp37 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp46 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
+ %tmp49 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp52 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp55 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
+ %tmp58 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp61 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp63 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
+ %tmp66 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp69 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp72 = alloca %struct.system__secondary_stack__mark_id, align 8 ; <%struct.system__secondary_stack__mark_id*> [#uses=3]
+ %tmp75 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp78 = alloca %struct.string___XUP, align 8 ; <%struct.string___XUP*> [#uses=3]
+ %tmp123 = call i32 @report__ident_int( i32 0 ) ; <i32> [#uses=3]
+ %tmp125 = icmp ugt i32 %tmp123, 6 ; <i1> [#uses=1]
+ br i1 %tmp125, label %cond_true, label %cond_next136
+
+cond_true: ; preds = %entry
+ call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 50 )
+ unreachable
+
+cond_next136: ; preds = %entry
+ %tmp137138 = trunc i32 %tmp123 to i8 ; <i8> [#uses=21]
+ %tmp139 = icmp ugt i8 %tmp137138, 6 ; <i1> [#uses=1]
+ br i1 %tmp139, label %bb, label %bb144
+
+bb: ; preds = %cond_next136
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 50 )
+ unreachable
+
+bb144: ; preds = %cond_next136
+ %tmp150 = call i32 @report__ident_int( i32 1 ) ; <i32> [#uses=4]
+ %tmp154 = icmp ugt i32 %tmp150, 6 ; <i1> [#uses=1]
+ br i1 %tmp154, label %cond_true157, label %cond_next169
+
+cond_true157: ; preds = %bb144
+ call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 51 )
+ unreachable
+
+cond_next169: ; preds = %bb144
+ %tmp170171 = trunc i32 %tmp150 to i8 ; <i8> [#uses=34]
+ %tmp172 = icmp ugt i8 %tmp170171, 6 ; <i1> [#uses=1]
+ br i1 %tmp172, label %bb175, label %bb178
+
+bb175: ; preds = %cond_next169
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 51 )
+ unreachable
+
+bb178: ; preds = %cond_next169
+ %tmp184 = call i32 @report__ident_int( i32 2 ) ; <i32> [#uses=3]
+ %tmp188 = icmp ugt i32 %tmp184, 6 ; <i1> [#uses=1]
+ br i1 %tmp188, label %cond_true191, label %cond_next203
+
+cond_true191: ; preds = %bb178
+ call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 52 )
+ unreachable
+
+cond_next203: ; preds = %bb178
+ %tmp204205 = trunc i32 %tmp184 to i8 ; <i8> [#uses=30]
+ %tmp206 = icmp ugt i8 %tmp204205, 6 ; <i1> [#uses=3]
+ br i1 %tmp206, label %bb209, label %bb212
+
+bb209: ; preds = %cond_next203
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 52 )
+ unreachable
+
+bb212: ; preds = %cond_next203
+ %tmp218 = call i32 @report__ident_int( i32 3 ) ; <i32> [#uses=4]
+ %tmp222 = icmp ugt i32 %tmp218, 6 ; <i1> [#uses=1]
+ br i1 %tmp222, label %cond_true225, label %cond_next237
+
+cond_true225: ; preds = %bb212
+ call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 53 )
+ unreachable
+
+cond_next237: ; preds = %bb212
+ %tmp238239 = trunc i32 %tmp218 to i8 ; <i8> [#uses=34]
+ %tmp240 = icmp ugt i8 %tmp238239, 6 ; <i1> [#uses=2]
+ br i1 %tmp240, label %bb243, label %bb246
+
+bb243: ; preds = %cond_next237
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 53 )
+ unreachable
+
+bb246: ; preds = %cond_next237
+ %tmp252 = call i32 @report__ident_int( i32 4 ) ; <i32> [#uses=3]
+ %tmp256 = icmp ugt i32 %tmp252, 6 ; <i1> [#uses=1]
+ br i1 %tmp256, label %cond_true259, label %cond_next271
+
+cond_true259: ; preds = %bb246
+ call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 54 )
+ unreachable
+
+cond_next271: ; preds = %bb246
+ %tmp272273 = trunc i32 %tmp252 to i8 ; <i8> [#uses=27]
+ %tmp274 = icmp ugt i8 %tmp272273, 6 ; <i1> [#uses=4]
+ br i1 %tmp274, label %bb277, label %bb280
+
+bb277: ; preds = %cond_next271
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 54 )
+ unreachable
+
+bb280: ; preds = %cond_next271
+ %tmp286 = call i32 @report__ident_int( i32 5 ) ; <i32> [#uses=3]
+ %tmp290 = icmp ugt i32 %tmp286, 6 ; <i1> [#uses=1]
+ br i1 %tmp290, label %cond_true293, label %cond_next305
+
+cond_true293: ; preds = %bb280
+ call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 55 )
+ unreachable
+
+cond_next305: ; preds = %bb280
+ %tmp306307 = trunc i32 %tmp286 to i8 ; <i8> [#uses=16]
+ %tmp308 = icmp ugt i8 %tmp306307, 6 ; <i1> [#uses=1]
+ br i1 %tmp308, label %bb311, label %bb314
+
+bb311: ; preds = %cond_next305
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 55 )
+ unreachable
+
+bb314: ; preds = %cond_next305
+ %tmp320 = call i32 @report__ident_int( i32 6 ) ; <i32> [#uses=2]
+ %tmp324 = icmp ugt i32 %tmp320, 6 ; <i1> [#uses=1]
+ br i1 %tmp324, label %cond_true327, label %cond_next339
+
+cond_true327: ; preds = %bb314
+ call void @__gnat_rcheck_10( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 56 )
+ unreachable
+
+cond_next339: ; preds = %bb314
+ %tmp340341 = trunc i32 %tmp320 to i8 ; <i8> [#uses=4]
+ %tmp342 = icmp ugt i8 %tmp340341, 6 ; <i1> [#uses=1]
+ br i1 %tmp342, label %bb345, label %bb348
+
+bb345: ; preds = %cond_next339
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 56 )
+ unreachable
+
+bb348: ; preds = %cond_next339
+ %tmp364 = icmp ult i8 %tmp272273, %tmp204205 ; <i1> [#uses=2]
+ br i1 %tmp364, label %cond_next383, label %cond_true367
+
+cond_true367: ; preds = %bb348
+ %tmp370 = icmp ult i8 %tmp204205, %tmp170171 ; <i1> [#uses=1]
+ %tmp374 = icmp ugt i8 %tmp272273, %tmp306307 ; <i1> [#uses=1]
+ %tmp378 = or i1 %tmp374, %tmp370 ; <i1> [#uses=1]
+ br i1 %tmp378, label %cond_true381, label %cond_next383
+
+cond_true381: ; preds = %cond_true367
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 59 )
+ unreachable
+
+cond_next383: ; preds = %cond_true367, %bb348
+ %tmp384 = call i32 @report__ident_int( i32 -5 ) ; <i32> [#uses=15]
+ %tmp388 = add i32 %tmp384, 10 ; <i32> [#uses=1]
+ %tmp389 = icmp ugt i32 %tmp388, 20 ; <i1> [#uses=1]
+ br i1 %tmp389, label %cond_true392, label %cond_next393
+
+cond_true392: ; preds = %cond_next383
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 63 )
+ unreachable
+
+cond_next393: ; preds = %cond_next383
+ %tmp394 = call i32 @report__ident_int( i32 5 ) ; <i32> [#uses=18]
+ %tmp398 = add i32 %tmp394, 10 ; <i32> [#uses=1]
+ %tmp399 = icmp ugt i32 %tmp398, 20 ; <i1> [#uses=1]
+ br i1 %tmp399, label %cond_true402, label %cond_next403
+
+cond_true402: ; preds = %cond_next393
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 64 )
+ unreachable
+
+cond_next403: ; preds = %cond_next393
+ %tmp416 = icmp slt i32 %tmp394, %tmp384 ; <i1> [#uses=1]
+ br i1 %tmp416, label %cond_next437, label %cond_true419
+
+cond_true419: ; preds = %cond_next403
+ %tmp423 = icmp slt i32 %tmp384, -10 ; <i1> [#uses=1]
+ %tmp428 = icmp sgt i32 %tmp394, 10 ; <i1> [#uses=1]
+ %tmp432 = or i1 %tmp428, %tmp423 ; <i1> [#uses=1]
+ br i1 %tmp432, label %cond_true435, label %cond_next437
+
+cond_true435: ; preds = %cond_true419
+ call void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 63 )
+ unreachable
+
+cond_next437: ; preds = %cond_true419, %cond_next403
+ call void @report__test( i64 or (i64 zext (i32 ptrtoint ([7 x i8]* @.str2 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.29.865 to i32) to i64), i64 32)), i64 or (i64 zext (i32 ptrtoint ([85 x i8]* @.str1 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.28.862 to i32) to i64), i64 32)) )
+ %tmp453 = icmp sgt i32 %tmp384, 0 ; <i1> [#uses=1]
+ %tmp458 = icmp slt i32 %tmp394, 6 ; <i1> [#uses=1]
+ %tmp462 = or i1 %tmp458, %tmp453 ; <i1> [#uses=3]
+ br i1 %tmp462, label %cond_true465, label %cond_next467
+
+cond_true465: ; preds = %cond_next437
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 80 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind
+
+unwind: ; preds = %cleanup798, %unwind783, %cond_true465
+ %eh_ptr = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid8065921 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp8085923 = icmp eq i32 %eh_select, %eh_typeid8065921 ; <i1> [#uses=1]
+ br i1 %tmp8085923, label %eh_then809, label %eh_else823
+
+cond_next467: ; preds = %cond_next437
+ invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp9 sret )
+ to label %invcont472 unwind label %unwind468
+
+unwind468: ; preds = %cleanup, %unwind480, %cond_next467
+ %eh_ptr469 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select471 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr469, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid5928 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp7815929 = icmp eq i32 %eh_select471, %eh_typeid5928 ; <i1> [#uses=1]
+ br i1 %tmp7815929, label %eh_then, label %cleanup805
+
+invcont472: ; preds = %cond_next467
+ %tmp475 = getelementptr %struct.system__secondary_stack__mark_id* %tmp9, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp476 = load i8** %tmp475 ; <i8*> [#uses=2]
+ %tmp478 = getelementptr %struct.system__secondary_stack__mark_id* %tmp9, i32 0, i32 1 ; <i32*> [#uses=1]
+ %tmp479 = load i32* %tmp478 ; <i32> [#uses=2]
+ %tmp485 = invoke i32 @report__ident_int( i32 1 )
+ to label %invcont484 unwind label %unwind480 ; <i32> [#uses=2]
+
+unwind480: ; preds = %invcont734, %invcont717, %cond_next665, %cond_true663, %cond_next639, %cond_true637, %cond_next613, %cond_true611, %cond_next587, %cond_true585, %cond_next561, %cond_true559, %cond_next535, %cond_true533, %cond_next509, %cond_true507, %invcont472
+ %eh_ptr481 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select483 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr481, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %tmp7685575 = ptrtoint i8* %tmp476 to i32 ; <i32> [#uses=1]
+ %tmp76855755576 = zext i32 %tmp7685575 to i64 ; <i64> [#uses=1]
+ %tmp7715572 = zext i32 %tmp479 to i64 ; <i64> [#uses=1]
+ %tmp77155725573 = shl i64 %tmp7715572, 32 ; <i64> [#uses=1]
+ %tmp77155725573.ins = or i64 %tmp77155725573, %tmp76855755576 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp77155725573.ins )
+ to label %cleanup779 unwind label %unwind468
+
+invcont484: ; preds = %invcont472
+ %tmp492 = icmp slt i32 %tmp485, %tmp384 ; <i1> [#uses=1]
+ %tmp500 = icmp sgt i32 %tmp485, %tmp394 ; <i1> [#uses=1]
+ %tmp504 = or i1 %tmp492, %tmp500 ; <i1> [#uses=1]
+ br i1 %tmp504, label %cond_true507, label %cond_next509
+
+cond_true507: ; preds = %invcont484
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind480
+
+cond_next509: ; preds = %invcont484
+ %tmp511 = invoke i32 @report__ident_int( i32 1 )
+ to label %invcont510 unwind label %unwind480 ; <i32> [#uses=3]
+
+invcont510: ; preds = %cond_next509
+ %tmp518 = icmp slt i32 %tmp511, %tmp384 ; <i1> [#uses=1]
+ %tmp526 = icmp sgt i32 %tmp511, %tmp394 ; <i1> [#uses=1]
+ %tmp530 = or i1 %tmp518, %tmp526 ; <i1> [#uses=1]
+ br i1 %tmp530, label %cond_true533, label %cond_next535
+
+cond_true533: ; preds = %invcont510
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind480
+
+cond_next535: ; preds = %invcont510
+ %tmp537 = invoke i32 @report__ident_int( i32 1 )
+ to label %invcont536 unwind label %unwind480 ; <i32> [#uses=2]
+
+invcont536: ; preds = %cond_next535
+ %tmp544 = icmp slt i32 %tmp537, %tmp384 ; <i1> [#uses=1]
+ %tmp552 = icmp sgt i32 %tmp537, %tmp394 ; <i1> [#uses=1]
+ %tmp556 = or i1 %tmp544, %tmp552 ; <i1> [#uses=1]
+ br i1 %tmp556, label %cond_true559, label %cond_next561
+
+cond_true559: ; preds = %invcont536
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind480
+
+cond_next561: ; preds = %invcont536
+ %tmp563 = invoke i32 @report__ident_int( i32 1 )
+ to label %invcont562 unwind label %unwind480 ; <i32> [#uses=2]
+
+invcont562: ; preds = %cond_next561
+ %tmp570 = icmp slt i32 %tmp563, %tmp384 ; <i1> [#uses=1]
+ %tmp578 = icmp sgt i32 %tmp563, %tmp394 ; <i1> [#uses=1]
+ %tmp582 = or i1 %tmp570, %tmp578 ; <i1> [#uses=1]
+ br i1 %tmp582, label %cond_true585, label %cond_next587
+
+cond_true585: ; preds = %invcont562
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind480
+
+cond_next587: ; preds = %invcont562
+ %tmp589 = invoke i32 @report__ident_int( i32 1 )
+ to label %invcont588 unwind label %unwind480 ; <i32> [#uses=2]
+
+invcont588: ; preds = %cond_next587
+ %tmp596 = icmp slt i32 %tmp589, %tmp384 ; <i1> [#uses=1]
+ %tmp604 = icmp sgt i32 %tmp589, %tmp394 ; <i1> [#uses=1]
+ %tmp608 = or i1 %tmp596, %tmp604 ; <i1> [#uses=1]
+ br i1 %tmp608, label %cond_true611, label %cond_next613
+
+cond_true611: ; preds = %invcont588
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind480
+
+cond_next613: ; preds = %invcont588
+ %tmp615 = invoke i32 @report__ident_int( i32 1 )
+ to label %invcont614 unwind label %unwind480 ; <i32> [#uses=2]
+
+invcont614: ; preds = %cond_next613
+ %tmp622 = icmp slt i32 %tmp615, %tmp384 ; <i1> [#uses=1]
+ %tmp630 = icmp sgt i32 %tmp615, %tmp394 ; <i1> [#uses=1]
+ %tmp634 = or i1 %tmp622, %tmp630 ; <i1> [#uses=1]
+ br i1 %tmp634, label %cond_true637, label %cond_next639
+
+cond_true637: ; preds = %invcont614
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind480
+
+cond_next639: ; preds = %invcont614
+ %tmp641 = invoke i32 @report__ident_int( i32 1 )
+ to label %invcont640 unwind label %unwind480 ; <i32> [#uses=2]
+
+invcont640: ; preds = %cond_next639
+ %tmp648 = icmp slt i32 %tmp641, %tmp384 ; <i1> [#uses=1]
+ %tmp656 = icmp sgt i32 %tmp641, %tmp394 ; <i1> [#uses=1]
+ %tmp660 = or i1 %tmp648, %tmp656 ; <i1> [#uses=1]
+ br i1 %tmp660, label %cond_true663, label %cond_next665
+
+cond_true663: ; preds = %invcont640
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 86 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind480
+
+cond_next665: ; preds = %invcont640
+ invoke void @system__img_int__image_integer( %struct.string___XUP* %tmp12 sret , i32 %tmp511 )
+ to label %invcont717 unwind label %unwind480
+
+invcont717: ; preds = %cond_next665
+ %tmp719 = getelementptr %struct.string___XUP* %tmp12, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp720 = load i8** %tmp719 ; <i8*> [#uses=1]
+ %tmp7205888 = ptrtoint i8* %tmp720 to i32 ; <i32> [#uses=1]
+ %tmp72058885889 = zext i32 %tmp7205888 to i64 ; <i64> [#uses=1]
+ %tmp722 = getelementptr %struct.string___XUP* %tmp12, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp723 = load %struct.string___XUB** %tmp722 ; <%struct.string___XUB*> [#uses=1]
+ %tmp7235884 = ptrtoint %struct.string___XUB* %tmp723 to i32 ; <i32> [#uses=1]
+ %tmp72358845885 = zext i32 %tmp7235884 to i64 ; <i64> [#uses=1]
+ %tmp723588458855886 = shl i64 %tmp72358845885, 32 ; <i64> [#uses=1]
+ %tmp723588458855886.ins = or i64 %tmp723588458855886, %tmp72058885889 ; <i64> [#uses=1]
+ invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp15 sret , i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str3 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)), i64 %tmp723588458855886.ins )
+ to label %invcont734 unwind label %unwind480
+
+invcont734: ; preds = %invcont717
+ %tmp736 = getelementptr %struct.string___XUP* %tmp15, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp737 = load i8** %tmp736 ; <i8*> [#uses=1]
+ %tmp7375876 = ptrtoint i8* %tmp737 to i32 ; <i32> [#uses=1]
+ %tmp73758765877 = zext i32 %tmp7375876 to i64 ; <i64> [#uses=1]
+ %tmp739 = getelementptr %struct.string___XUP* %tmp15, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp740 = load %struct.string___XUB** %tmp739 ; <%struct.string___XUB*> [#uses=1]
+ %tmp7405872 = ptrtoint %struct.string___XUB* %tmp740 to i32 ; <i32> [#uses=1]
+ %tmp74058725873 = zext i32 %tmp7405872 to i64 ; <i64> [#uses=1]
+ %tmp740587258735874 = shl i64 %tmp74058725873, 32 ; <i64> [#uses=1]
+ %tmp740587258735874.ins = or i64 %tmp740587258735874, %tmp73758765877 ; <i64> [#uses=1]
+ invoke void @report__failed( i64 %tmp740587258735874.ins )
+ to label %cleanup unwind label %unwind480
+
+cleanup: ; preds = %invcont734
+ %tmp7515581 = ptrtoint i8* %tmp476 to i32 ; <i32> [#uses=1]
+ %tmp75155815582 = zext i32 %tmp7515581 to i64 ; <i64> [#uses=1]
+ %tmp7545578 = zext i32 %tmp479 to i64 ; <i64> [#uses=1]
+ %tmp75455785579 = shl i64 %tmp7545578, 32 ; <i64> [#uses=1]
+ %tmp75455785579.ins = or i64 %tmp75455785579, %tmp75155815582 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp75455785579.ins )
+ to label %cond_true856 unwind label %unwind468
+
+cleanup779: ; preds = %unwind480
+ %eh_typeid = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp781 = icmp eq i32 %eh_select483, %eh_typeid ; <i1> [#uses=1]
+ br i1 %tmp781, label %eh_then, label %cleanup805
+
+eh_then: ; preds = %cleanup779, %unwind468
+ %eh_exception.35924.0 = phi i8* [ %eh_ptr469, %unwind468 ], [ %eh_ptr481, %cleanup779 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.35924.0 )
+ to label %invcont787 unwind label %unwind783
+
+unwind783: ; preds = %invcont789, %invcont787, %eh_then
+ %eh_ptr784 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select786 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr784, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_exception.35924.0 )
+ to label %cleanup805 unwind label %unwind
+
+invcont787: ; preds = %eh_then
+ %tmp788 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp788( )
+ to label %invcont789 unwind label %unwind783
+
+invcont789: ; preds = %invcont787
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @.str4 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)) )
+ to label %cleanup798 unwind label %unwind783
+
+cleanup798: ; preds = %invcont789
+ invoke void @__gnat_end_handler( i8* %eh_exception.35924.0 )
+ to label %cond_true856 unwind label %unwind
+
+cleanup805: ; preds = %unwind783, %cleanup779, %unwind468
+ %eh_selector.0 = phi i32 [ %eh_select471, %unwind468 ], [ %eh_select483, %cleanup779 ], [ %eh_select786, %unwind783 ] ; <i32> [#uses=2]
+ %eh_exception.0 = phi i8* [ %eh_ptr469, %unwind468 ], [ %eh_ptr481, %cleanup779 ], [ %eh_ptr784, %unwind783 ] ; <i8*> [#uses=2]
+ %eh_typeid806 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp808 = icmp eq i32 %eh_selector.0, %eh_typeid806 ; <i1> [#uses=1]
+ br i1 %tmp808, label %eh_then809, label %eh_else823
+
+eh_then809: ; preds = %cleanup805, %unwind
+ %eh_exception.05914.0 = phi i8* [ %eh_ptr, %unwind ], [ %eh_exception.0, %cleanup805 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.05914.0 )
+ to label %invcont815 unwind label %unwind813
+
+unwind813: ; preds = %invcont815, %eh_then809
+ %eh_ptr814 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_exception.05914.0 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr814 ) ; <i32>:0 [#uses=0]
+ unreachable
+
+invcont815: ; preds = %eh_then809
+ %tmp816 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp816( )
+ to label %cleanup819 unwind label %unwind813
+
+cleanup819: ; preds = %invcont815
+ call void @__gnat_end_handler( i8* %eh_exception.05914.0 )
+ %tmp8595931 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %tmp8635932 = icmp ugt i8 %tmp170171, %tmp272273 ; <i1> [#uses=1]
+ %tmp8675933 = or i1 %tmp8635932, %tmp8595931 ; <i1> [#uses=1]
+ br i1 %tmp8675933, label %cond_true870, label %bb887
+
+eh_else823: ; preds = %cleanup805, %unwind
+ %eh_selector.05912.1 = phi i32 [ %eh_select, %unwind ], [ %eh_selector.0, %cleanup805 ] ; <i32> [#uses=1]
+ %eh_exception.05914.1 = phi i8* [ %eh_ptr, %unwind ], [ %eh_exception.0, %cleanup805 ] ; <i8*> [#uses=4]
+ %eh_typeid824 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp826 = icmp eq i32 %eh_selector.05912.1, %eh_typeid824 ; <i1> [#uses=1]
+ br i1 %tmp826, label %eh_then827, label %Unwind
+
+eh_then827: ; preds = %eh_else823
+ invoke void @__gnat_begin_handler( i8* %eh_exception.05914.1 )
+ to label %invcont833 unwind label %unwind831
+
+unwind831: ; preds = %invcont835, %invcont833, %eh_then827
+ %eh_ptr832 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_exception.05914.1 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr832 ) ; <i32>:1 [#uses=0]
+ unreachable
+
+invcont833: ; preds = %eh_then827
+ %tmp834 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp834( )
+ to label %invcont835 unwind label %unwind831
+
+invcont835: ; preds = %invcont833
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str5 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
+ to label %cleanup844 unwind label %unwind831
+
+cleanup844: ; preds = %invcont835
+ call void @__gnat_end_handler( i8* %eh_exception.05914.1 )
+ br label %cond_true856
+
+cond_true856: ; preds = %cleanup844, %cleanup798, %cleanup
+ %tmp859 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %tmp863 = icmp ugt i8 %tmp170171, %tmp272273 ; <i1> [#uses=1]
+ %tmp867 = or i1 %tmp863, %tmp859 ; <i1> [#uses=1]
+ br i1 %tmp867, label %cond_true870, label %bb887
+
+cond_true870: ; preds = %cond_true856, %cleanup819
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 103 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind871
+
+unwind871: ; preds = %cond_next905, %bb887, %cond_true870
+ %sat.3 = phi i8 [ %tmp340341, %cond_true870 ], [ %sat.1, %bb887 ], [ %sat.0, %cond_next905 ] ; <i8> [#uses=2]
+ %eh_ptr872 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=8]
+ %eh_select874 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr872, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid915 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp917 = icmp eq i32 %eh_select874, %eh_typeid915 ; <i1> [#uses=1]
+ br i1 %tmp917, label %eh_then918, label %eh_else932
+
+bb887: ; preds = %cond_next901, %cond_true856, %cleanup819
+ %indvar = phi i8 [ %indvar.next10, %cond_next901 ], [ 0, %cond_true856 ], [ 0, %cleanup819 ] ; <i8> [#uses=2]
+ %sat.1 = phi i8 [ %sat.0, %cond_next901 ], [ %tmp340341, %cond_true856 ], [ %tmp340341, %cleanup819 ] ; <i8> [#uses=2]
+ %tmp889 = invoke i8 @report__equal( i32 2, i32 2 )
+ to label %invcont888 unwind label %unwind871 ; <i8> [#uses=1]
+
+invcont888: ; preds = %bb887
+ %i.4 = add i8 %indvar, %tmp170171 ; <i8> [#uses=1]
+ %tmp890 = icmp eq i8 %tmp889, 0 ; <i1> [#uses=1]
+ %sat.0 = select i1 %tmp890, i8 %sat.1, i8 6 ; <i8> [#uses=3]
+ %tmp897 = icmp eq i8 %i.4, %tmp170171 ; <i1> [#uses=1]
+ br i1 %tmp897, label %cond_next905, label %cond_next901
+
+cond_next901: ; preds = %invcont888
+ %indvar.next10 = add i8 %indvar, 1 ; <i8> [#uses=1]
+ br label %bb887
+
+cond_next905: ; preds = %invcont888
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([29 x i8]* @.str6 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.36.923 to i32) to i64), i64 32)) )
+ to label %finally913 unwind label %unwind871
+
+eh_then918: ; preds = %unwind871
+ invoke void @__gnat_begin_handler( i8* %eh_ptr872 )
+ to label %invcont924 unwind label %unwind922
+
+unwind922: ; preds = %invcont924, %eh_then918
+ %eh_ptr923 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr872 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr923 ) ; <i32>:2 [#uses=0]
+ unreachable
+
+invcont924: ; preds = %eh_then918
+ %tmp925 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp925( )
+ to label %cleanup928 unwind label %unwind922
+
+cleanup928: ; preds = %invcont924
+ call void @__gnat_end_handler( i8* %eh_ptr872 )
+ br i1 %tmp462, label %cond_true973, label %UnifiedReturnBlock35
+
+eh_else932: ; preds = %unwind871
+ %eh_typeid933 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp935 = icmp eq i32 %eh_select874, %eh_typeid933 ; <i1> [#uses=1]
+ br i1 %tmp935, label %eh_then936, label %Unwind
+
+eh_then936: ; preds = %eh_else932
+ invoke void @__gnat_begin_handler( i8* %eh_ptr872 )
+ to label %invcont942 unwind label %unwind940
+
+unwind940: ; preds = %invcont944, %invcont942, %eh_then936
+ %eh_ptr941 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr872 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr941 ) ; <i32>:3 [#uses=0]
+ unreachable
+
+invcont942: ; preds = %eh_then936
+ %tmp943 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp943( )
+ to label %invcont944 unwind label %unwind940
+
+invcont944: ; preds = %invcont942
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str7 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
+ to label %cleanup953 unwind label %unwind940
+
+cleanup953: ; preds = %invcont944
+ call void @__gnat_end_handler( i8* %eh_ptr872 )
+ br label %finally913
+
+finally913: ; preds = %cleanup953, %cond_next905
+ %sat.4 = phi i8 [ %sat.3, %cleanup953 ], [ %sat.0, %cond_next905 ] ; <i8> [#uses=1]
+ br i1 %tmp462, label %cond_true973, label %UnifiedReturnBlock35
+
+cond_true973: ; preds = %finally913, %cleanup928
+ %sat.45934.0 = phi i8 [ %sat.3, %cleanup928 ], [ %sat.4, %finally913 ] ; <i8> [#uses=9]
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 119 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind974
+
+unwind974: ; preds = %cond_true973
+ %eh_ptr975 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=8]
+ %eh_select977 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr975, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid13135959 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp13155961 = icmp eq i32 %eh_select977, %eh_typeid13135959 ; <i1> [#uses=1]
+ br i1 %tmp13155961, label %eh_then1316, label %eh_else1330
+
+eh_then1316: ; preds = %unwind974
+ invoke void @__gnat_begin_handler( i8* %eh_ptr975 )
+ to label %invcont1322 unwind label %unwind1320
+
+unwind1320: ; preds = %invcont1322, %eh_then1316
+ %eh_ptr1321 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr975 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr1321 ) ; <i32>:4 [#uses=0]
+ unreachable
+
+invcont1322: ; preds = %eh_then1316
+ %tmp1323 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp1323( )
+ to label %cleanup1326 unwind label %unwind1320
+
+cleanup1326: ; preds = %invcont1322
+ call void @__gnat_end_handler( i8* %eh_ptr975 )
+ br label %finally1311
+
+eh_else1330: ; preds = %unwind974
+ %eh_typeid1331 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp1333 = icmp eq i32 %eh_select977, %eh_typeid1331 ; <i1> [#uses=1]
+ br i1 %tmp1333, label %eh_then1334, label %Unwind
+
+eh_then1334: ; preds = %eh_else1330
+ invoke void @__gnat_begin_handler( i8* %eh_ptr975 )
+ to label %invcont1340 unwind label %unwind1338
+
+unwind1338: ; preds = %invcont1342, %invcont1340, %eh_then1334
+ %eh_ptr1339 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr975 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr1339 ) ; <i32>:5 [#uses=0]
+ unreachable
+
+invcont1340: ; preds = %eh_then1334
+ %tmp1341 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp1341( )
+ to label %invcont1342 unwind label %unwind1338
+
+invcont1342: ; preds = %invcont1340
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str10 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
+ to label %cleanup1351 unwind label %unwind1338
+
+cleanup1351: ; preds = %invcont1342
+ call void @__gnat_end_handler( i8* %eh_ptr975 )
+ br label %finally1311
+
+finally1311: ; preds = %cleanup1351, %cleanup1326
+ %tmp1356 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=6]
+ %tmp13571358 = and i32 %tmp184, 255 ; <i32> [#uses=11]
+ %tmp13831384 = and i32 %tmp252, 255 ; <i32> [#uses=5]
+ %tmp1387 = add i32 %tmp13571358, -1 ; <i32> [#uses=2]
+ %tmp1388 = icmp sge i32 %tmp13831384, %tmp1387 ; <i1> [#uses=1]
+ %max1389 = select i1 %tmp1388, i32 %tmp13831384, i32 %tmp1387 ; <i32> [#uses=1]
+ %tmp1392 = sub i32 %max1389, %tmp13571358 ; <i32> [#uses=1]
+ %tmp1393 = add i32 %tmp1392, 1 ; <i32> [#uses=2]
+ %tmp1394 = icmp sgt i32 %tmp1393, -1 ; <i1> [#uses=1]
+ %max1395 = select i1 %tmp1394, i32 %tmp1393, i32 0 ; <i32> [#uses=5]
+ %tmp1397 = alloca i8, i32 %max1395 ; <i8*> [#uses=2]
+ %tmp1401 = icmp ult i8 %tmp238239, %tmp170171 ; <i1> [#uses=2]
+ br i1 %tmp1401, label %cond_next1425, label %cond_true1404
+
+cond_true1404: ; preds = %finally1311
+ %tmp1407 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %tmp1411 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
+ %tmp1415 = or i1 %tmp1411, %tmp1407 ; <i1> [#uses=1]
+ br i1 %tmp1415, label %cond_true1418, label %cond_next1425
+
+cond_true1418: ; preds = %cond_true1404
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 144 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind1419
+
+unwind1419: ; preds = %cleanup1702, %cleanup1686, %unwind1676, %cond_next1548, %cond_true1546, %cond_true1418
+ %eh_ptr1420 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select1422 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1420, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid17215981 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp17235983 = icmp eq i32 %eh_select1422, %eh_typeid17215981 ; <i1> [#uses=1]
+ br i1 %tmp17235983, label %eh_then1724, label %eh_else1742
+
+cond_next1425: ; preds = %cond_true1404, %finally1311
+ %tmp14281429 = and i32 %tmp150, 255 ; <i32> [#uses=3]
+ %tmp14841485 = and i32 %tmp218, 255 ; <i32> [#uses=3]
+ %tmp1488 = add i32 %tmp14281429, -1 ; <i32> [#uses=2]
+ %tmp1489 = icmp sge i32 %tmp14841485, %tmp1488 ; <i1> [#uses=1]
+ %max1490 = select i1 %tmp1489, i32 %tmp14841485, i32 %tmp1488 ; <i32> [#uses=1]
+ %tmp1493 = sub i32 %max1490, %tmp14281429 ; <i32> [#uses=1]
+ %tmp1494 = add i32 %tmp1493, 1 ; <i32> [#uses=2]
+ %tmp1495 = icmp sgt i32 %tmp1494, -1 ; <i1> [#uses=1]
+ %max1496 = select i1 %tmp1495, i32 %tmp1494, i32 0 ; <i32> [#uses=1]
+ %tmp1497 = alloca i8, i32 %max1496 ; <i8*> [#uses=3]
+ %tmp1504 = icmp ugt i8 %tmp170171, %tmp238239 ; <i1> [#uses=1]
+ br i1 %tmp1504, label %cond_next1526, label %bb1509
+
+bb1509: ; preds = %cond_next1425
+ store i8 %tmp238239, i8* %tmp1497
+ %tmp1518 = icmp eq i8 %tmp238239, %tmp170171 ; <i1> [#uses=1]
+ br i1 %tmp1518, label %cond_next1526, label %cond_next1522.preheader
+
+cond_next1522.preheader: ; preds = %bb1509
+ %J64b.55984.8 = add i8 %tmp170171, 1 ; <i8> [#uses=1]
+ br label %cond_next1522
+
+cond_next1522: ; preds = %cond_next1522, %cond_next1522.preheader
+ %indvar6241 = phi i8 [ 0, %cond_next1522.preheader ], [ %indvar.next, %cond_next1522 ] ; <i8> [#uses=2]
+ %tmp1524 = add i8 %J64b.55984.8, %indvar6241 ; <i8> [#uses=2]
+ %tmp151015115988 = zext i8 %tmp1524 to i32 ; <i32> [#uses=1]
+ %tmp15135989 = sub i32 %tmp151015115988, %tmp14281429 ; <i32> [#uses=1]
+ %tmp15145990 = getelementptr i8* %tmp1497, i32 %tmp15135989 ; <i8*> [#uses=1]
+ store i8 %tmp238239, i8* %tmp15145990
+ %tmp15185992 = icmp eq i8 %tmp238239, %tmp1524 ; <i1> [#uses=1]
+ %indvar.next = add i8 %indvar6241, 1 ; <i8> [#uses=1]
+ br i1 %tmp15185992, label %cond_next1526, label %cond_next1522
+
+cond_next1526: ; preds = %cond_next1522, %bb1509, %cond_next1425
+ %tmp15271528 = zext i8 %tmp272273 to i64 ; <i64> [#uses=1]
+ %tmp15291530 = zext i8 %tmp204205 to i64 ; <i64> [#uses=1]
+ %tmp1531 = sub i64 %tmp15271528, %tmp15291530 ; <i64> [#uses=1]
+ %tmp1532 = add i64 %tmp1531, 1 ; <i64> [#uses=2]
+ %tmp1533 = icmp sgt i64 %tmp1532, -1 ; <i1> [#uses=1]
+ %max1534 = select i1 %tmp1533, i64 %tmp1532, i64 0 ; <i64> [#uses=1]
+ %tmp15351536 = zext i8 %tmp238239 to i64 ; <i64> [#uses=1]
+ %tmp15371538 = zext i8 %tmp170171 to i64 ; <i64> [#uses=1]
+ %tmp1539 = sub i64 %tmp15351536, %tmp15371538 ; <i64> [#uses=1]
+ %tmp1540 = add i64 %tmp1539, 1 ; <i64> [#uses=2]
+ %tmp1541 = icmp sgt i64 %tmp1540, -1 ; <i1> [#uses=1]
+ %max1542 = select i1 %tmp1541, i64 %tmp1540, i64 0 ; <i64> [#uses=1]
+ %tmp1543 = icmp eq i64 %max1534, %max1542 ; <i1> [#uses=1]
+ br i1 %tmp1543, label %cond_next1548, label %cond_true1546
+
+cond_true1546: ; preds = %cond_next1526
+ invoke void @__gnat_rcheck_07( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 144 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind1419
+
+cond_next1548: ; preds = %cond_next1526
+ call void @llvm.memcpy.i32( i8* %tmp1397, i8* %tmp1497, i32 %max1395, i32 1 )
+ invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp31 sret )
+ to label %invcont1552 unwind label %unwind1419
+
+invcont1552: ; preds = %cond_next1548
+ %tmp1555 = getelementptr %struct.system__secondary_stack__mark_id* %tmp31, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp1556 = load i8** %tmp1555 ; <i8*> [#uses=3]
+ %tmp1558 = getelementptr %struct.system__secondary_stack__mark_id* %tmp31, i32 0, i32 1 ; <i32*> [#uses=1]
+ %tmp1559 = load i32* %tmp1558 ; <i32> [#uses=3]
+ %tmp1562 = icmp ult i8 %tmp238239, %tmp204205 ; <i1> [#uses=1]
+ %tmp1566 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
+ %tmp1570 = or i1 %tmp1566, %tmp1562 ; <i1> [#uses=1]
+ br i1 %tmp1570, label %cond_true1573, label %cond_next1591
+
+cond_true1573: ; preds = %invcont1552
+ invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 148 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind1574
+
+unwind1574: ; preds = %invcont1638, %invcont1621, %bb1607, %bb1605, %cond_true1573
+ %eh_ptr1575 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select1577 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1575, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid1652 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp1654 = icmp eq i32 %eh_select1577, %eh_typeid1652 ; <i1> [#uses=1]
+ br i1 %tmp1654, label %eh_then1655, label %cleanup1686
+
+cond_next1591: ; preds = %invcont1552
+ %tmp1595 = sub i32 %tmp14841485, %tmp13571358 ; <i32> [#uses=1]
+ %tmp1596 = getelementptr i8* %tmp1397, i32 %tmp1595 ; <i8*> [#uses=1]
+ %tmp1597 = load i8* %tmp1596 ; <i8> [#uses=2]
+ %tmp1599 = icmp ugt i8 %tmp1597, 6 ; <i1> [#uses=1]
+ br i1 %tmp1599, label %bb1605, label %bb1607
+
+bb1605: ; preds = %cond_next1591
+ invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 148 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind1574
+
+bb1607: ; preds = %cond_next1591
+ %tmp16151616 = zext i8 %tmp1597 to i32 ; <i32> [#uses=1]
+ invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp34 sret , i32 %tmp16151616, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
+ to label %invcont1621 unwind label %unwind1574
+
+invcont1621: ; preds = %bb1607
+ %tmp1623 = getelementptr %struct.string___XUP* %tmp34, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp1624 = load i8** %tmp1623 ; <i8*> [#uses=1]
+ %tmp16245815 = ptrtoint i8* %tmp1624 to i32 ; <i32> [#uses=1]
+ %tmp162458155816 = zext i32 %tmp16245815 to i64 ; <i64> [#uses=1]
+ %tmp1626 = getelementptr %struct.string___XUP* %tmp34, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp1627 = load %struct.string___XUB** %tmp1626 ; <%struct.string___XUB*> [#uses=1]
+ %tmp16275811 = ptrtoint %struct.string___XUB* %tmp1627 to i32 ; <i32> [#uses=1]
+ %tmp162758115812 = zext i32 %tmp16275811 to i64 ; <i64> [#uses=1]
+ %tmp1627581158125813 = shl i64 %tmp162758115812, 32 ; <i64> [#uses=1]
+ %tmp1627581158125813.ins = or i64 %tmp1627581158125813, %tmp162458155816 ; <i64> [#uses=1]
+ invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp37 sret , i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str11 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)), i64 %tmp1627581158125813.ins )
+ to label %invcont1638 unwind label %unwind1574
+
+invcont1638: ; preds = %invcont1621
+ %tmp1640 = getelementptr %struct.string___XUP* %tmp37, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp1641 = load i8** %tmp1640 ; <i8*> [#uses=1]
+ %tmp16415803 = ptrtoint i8* %tmp1641 to i32 ; <i32> [#uses=1]
+ %tmp164158035804 = zext i32 %tmp16415803 to i64 ; <i64> [#uses=1]
+ %tmp1643 = getelementptr %struct.string___XUP* %tmp37, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp1644 = load %struct.string___XUB** %tmp1643 ; <%struct.string___XUB*> [#uses=1]
+ %tmp16445799 = ptrtoint %struct.string___XUB* %tmp1644 to i32 ; <i32> [#uses=1]
+ %tmp164457995800 = zext i32 %tmp16445799 to i64 ; <i64> [#uses=1]
+ %tmp1644579958005801 = shl i64 %tmp164457995800, 32 ; <i64> [#uses=1]
+ %tmp1644579958005801.ins = or i64 %tmp1644579958005801, %tmp164158035804 ; <i64> [#uses=1]
+ invoke void @report__failed( i64 %tmp1644579958005801.ins )
+ to label %cleanup1702 unwind label %unwind1574
+
+eh_then1655: ; preds = %unwind1574
+ invoke void @__gnat_begin_handler( i8* %eh_ptr1575 )
+ to label %invcont1663 unwind label %unwind1659
+
+unwind1659: ; preds = %invcont1665, %invcont1663, %eh_then1655
+ %eh_ptr1660 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select1662 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1660, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_ptr1575 )
+ to label %cleanup1686 unwind label %unwind1676
+
+invcont1663: ; preds = %eh_then1655
+ %tmp1664 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp1664( )
+ to label %invcont1665 unwind label %unwind1659
+
+invcont1665: ; preds = %invcont1663
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @.str12 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)) )
+ to label %cleanup1674 unwind label %unwind1659
+
+cleanup1674: ; preds = %invcont1665
+ invoke void @__gnat_end_handler( i8* %eh_ptr1575 )
+ to label %cleanup1702 unwind label %unwind1676
+
+unwind1676: ; preds = %cleanup1674, %unwind1659
+ %eh_ptr1677 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select1679 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1677, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %tmp169255575995 = ptrtoint i8* %tmp1556 to i32 ; <i32> [#uses=1]
+ %tmp1692555755585996 = zext i32 %tmp169255575995 to i64 ; <i64> [#uses=1]
+ %tmp169555545997 = zext i32 %tmp1559 to i64 ; <i64> [#uses=1]
+ %tmp1695555455555998 = shl i64 %tmp169555545997, 32 ; <i64> [#uses=1]
+ %tmp169555545555.ins5999 = or i64 %tmp1695555455555998, %tmp1692555755585996 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp169555545555.ins5999 )
+ to label %cleanup1720 unwind label %unwind1419
+
+cleanup1686: ; preds = %unwind1659, %unwind1574
+ %eh_selector.18 = phi i32 [ %eh_select1577, %unwind1574 ], [ %eh_select1662, %unwind1659 ] ; <i32> [#uses=1]
+ %eh_exception.18 = phi i8* [ %eh_ptr1575, %unwind1574 ], [ %eh_ptr1660, %unwind1659 ] ; <i8*> [#uses=1]
+ %tmp16925557 = ptrtoint i8* %tmp1556 to i32 ; <i32> [#uses=1]
+ %tmp169255575558 = zext i32 %tmp16925557 to i64 ; <i64> [#uses=1]
+ %tmp16955554 = zext i32 %tmp1559 to i64 ; <i64> [#uses=1]
+ %tmp169555545555 = shl i64 %tmp16955554, 32 ; <i64> [#uses=1]
+ %tmp169555545555.ins = or i64 %tmp169555545555, %tmp169255575558 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp169555545555.ins )
+ to label %cleanup1720 unwind label %unwind1419
+
+cleanup1702: ; preds = %cleanup1674, %invcont1638
+ %tmp17095551 = ptrtoint i8* %tmp1556 to i32 ; <i32> [#uses=1]
+ %tmp170955515552 = zext i32 %tmp17095551 to i64 ; <i64> [#uses=1]
+ %tmp17125548 = zext i32 %tmp1559 to i64 ; <i64> [#uses=1]
+ %tmp171255485549 = shl i64 %tmp17125548, 32 ; <i64> [#uses=1]
+ %tmp171255485549.ins = or i64 %tmp171255485549, %tmp170955515552 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp171255485549.ins )
+ to label %cleanup1773 unwind label %unwind1419
+
+cleanup1720: ; preds = %cleanup1686, %unwind1676
+ %eh_selector.185993.1 = phi i32 [ %eh_select1679, %unwind1676 ], [ %eh_selector.18, %cleanup1686 ] ; <i32> [#uses=2]
+ %eh_exception.185994.1 = phi i8* [ %eh_ptr1677, %unwind1676 ], [ %eh_exception.18, %cleanup1686 ] ; <i8*> [#uses=2]
+ %eh_typeid1721 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp1723 = icmp eq i32 %eh_selector.185993.1, %eh_typeid1721 ; <i1> [#uses=1]
+ br i1 %tmp1723, label %eh_then1724, label %eh_else1742
+
+eh_then1724: ; preds = %cleanup1720, %unwind1419
+ %eh_exception.135974.0 = phi i8* [ %eh_ptr1420, %unwind1419 ], [ %eh_exception.185994.1, %cleanup1720 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.135974.0 )
+ to label %invcont1730 unwind label %unwind1728
+
+unwind1728: ; preds = %invcont1730, %eh_then1724
+ %eh_ptr1729 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_exception.135974.0 )
+ to label %cleanup1771 unwind label %unwind1736
+
+invcont1730: ; preds = %eh_then1724
+ %tmp1731 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp1731( )
+ to label %cleanup1734 unwind label %unwind1728
+
+cleanup1734: ; preds = %invcont1730
+ invoke void @__gnat_end_handler( i8* %eh_exception.135974.0 )
+ to label %cleanup1773 unwind label %unwind1736
+
+unwind1736: ; preds = %cleanup1763, %unwind1750, %cleanup1734, %unwind1728
+ %eh_ptr1737 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp1356 )
+ call void @llvm.stackrestore( i8* %tmp1356 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr1737 ) ; <i32>:6 [#uses=0]
+ unreachable
+
+eh_else1742: ; preds = %cleanup1720, %unwind1419
+ %eh_selector.135972.1 = phi i32 [ %eh_select1422, %unwind1419 ], [ %eh_selector.185993.1, %cleanup1720 ] ; <i32> [#uses=1]
+ %eh_exception.135974.1 = phi i8* [ %eh_ptr1420, %unwind1419 ], [ %eh_exception.185994.1, %cleanup1720 ] ; <i8*> [#uses=4]
+ %eh_typeid1743 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp1745 = icmp eq i32 %eh_selector.135972.1, %eh_typeid1743 ; <i1> [#uses=1]
+ br i1 %tmp1745, label %eh_then1746, label %cleanup1771
+
+eh_then1746: ; preds = %eh_else1742
+ invoke void @__gnat_begin_handler( i8* %eh_exception.135974.1 )
+ to label %invcont1752 unwind label %unwind1750
+
+unwind1750: ; preds = %invcont1754, %invcont1752, %eh_then1746
+ %eh_ptr1751 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_exception.135974.1 )
+ to label %cleanup1771 unwind label %unwind1736
+
+invcont1752: ; preds = %eh_then1746
+ %tmp1753 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp1753( )
+ to label %invcont1754 unwind label %unwind1750
+
+invcont1754: ; preds = %invcont1752
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str13 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
+ to label %cleanup1763 unwind label %unwind1750
+
+cleanup1763: ; preds = %invcont1754
+ invoke void @__gnat_end_handler( i8* %eh_exception.135974.1 )
+ to label %cleanup1773 unwind label %unwind1736
+
+cleanup1771: ; preds = %unwind1750, %eh_else1742, %unwind1728
+ %eh_exception.20 = phi i8* [ %eh_ptr1729, %unwind1728 ], [ %eh_exception.135974.1, %eh_else1742 ], [ %eh_ptr1751, %unwind1750 ] ; <i8*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp1356 )
+ call void @llvm.stackrestore( i8* %tmp1356 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_exception.20 ) ; <i32>:7 [#uses=0]
+ unreachable
+
+cleanup1773: ; preds = %cleanup1763, %cleanup1734, %cleanup1702
+ call void @llvm.stackrestore( i8* %tmp1356 )
+ call void @llvm.stackrestore( i8* %tmp1356 )
+ %tmp1780 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=6]
+ %tmp17811782 = and i32 %tmp150, 255 ; <i32> [#uses=4]
+ %tmp18071808 = and i32 %tmp286, 255 ; <i32> [#uses=2]
+ %tmp1811 = add i32 %tmp17811782, -1 ; <i32> [#uses=2]
+ %tmp1812 = icmp sge i32 %tmp18071808, %tmp1811 ; <i1> [#uses=1]
+ %max1813 = select i1 %tmp1812, i32 %tmp18071808, i32 %tmp1811 ; <i32> [#uses=1]
+ %tmp1816 = sub i32 %max1813, %tmp17811782 ; <i32> [#uses=1]
+ %tmp1817 = add i32 %tmp1816, 1 ; <i32> [#uses=2]
+ %tmp1818 = icmp sgt i32 %tmp1817, -1 ; <i1> [#uses=1]
+ %max1819 = select i1 %tmp1818, i32 %tmp1817, i32 0 ; <i32> [#uses=3]
+ %tmp1821 = alloca i8, i32 %max1819 ; <i8*> [#uses=2]
+ %tmp1863 = alloca i8, i32 %max1819 ; <i8*> [#uses=3]
+ %tmp1870 = icmp ugt i8 %tmp170171, %tmp306307 ; <i1> [#uses=1]
+ br i1 %tmp1870, label %cond_next1900, label %bb1875
+
+bb1875: ; preds = %cleanup1773
+ store i8 %tmp238239, i8* %tmp1863
+ %tmp1884 = icmp eq i8 %tmp306307, %tmp170171 ; <i1> [#uses=1]
+ br i1 %tmp1884, label %cond_next1900, label %cond_next1888.preheader
+
+cond_next1888.preheader: ; preds = %bb1875
+ %J77b.26000.2 = add i8 %tmp170171, 1 ; <i8> [#uses=1]
+ br label %cond_next1888
+
+cond_next1888: ; preds = %cond_next1888, %cond_next1888.preheader
+ %indvar6245 = phi i8 [ 0, %cond_next1888.preheader ], [ %indvar.next14, %cond_next1888 ] ; <i8> [#uses=2]
+ %tmp1890 = add i8 %J77b.26000.2, %indvar6245 ; <i8> [#uses=2]
+ %tmp187618776004 = zext i8 %tmp1890 to i32 ; <i32> [#uses=1]
+ %tmp18796005 = sub i32 %tmp187618776004, %tmp17811782 ; <i32> [#uses=1]
+ %tmp18806006 = getelementptr i8* %tmp1863, i32 %tmp18796005 ; <i8*> [#uses=1]
+ store i8 %tmp238239, i8* %tmp18806006
+ %tmp18846008 = icmp eq i8 %tmp306307, %tmp1890 ; <i1> [#uses=1]
+ %indvar.next14 = add i8 %indvar6245, 1 ; <i8> [#uses=1]
+ br i1 %tmp18846008, label %cond_next1900, label %cond_next1888
+
+unwind1895: ; preds = %cleanup2300, %cleanup2284, %unwind2274, %cond_next2149, %cond_true1946
+ %eh_ptr1896 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select1898 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr1896, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid23196018 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp23216020 = icmp eq i32 %eh_select1898, %eh_typeid23196018 ; <i1> [#uses=1]
+ br i1 %tmp23216020, label %eh_then2322, label %eh_else2340
+
+cond_next1900: ; preds = %cond_next1888, %bb1875, %cleanup1773
+ call void @llvm.memcpy.i32( i8* %tmp1821, i8* %tmp1863, i32 %max1819, i32 1 )
+ ret void
+
+cond_true1909: ; No predecessors!
+ %tmp1912 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %tmp1916 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
+ %tmp1920 = or i1 %tmp1916, %tmp1912 ; <i1> [#uses=0]
+ ret void
+
+cond_true1923: ; No predecessors!
+ ret void
+
+cond_next1926: ; No predecessors!
+ %tmp1929.not = icmp uge i8 %tmp238239, %tmp170171 ; <i1> [#uses=1]
+ %tmp1939 = icmp ugt i8 %tmp238239, %tmp306307 ; <i1> [#uses=2]
+ %bothcond = and i1 %tmp1939, %tmp1929.not ; <i1> [#uses=0]
+ ret void
+
+cond_true1946: ; No predecessors!
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 162 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind1895
+
+cond_next2149: ; No predecessors!
+ invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp46 sret )
+ to label %invcont2150 unwind label %unwind1895
+
+invcont2150: ; preds = %cond_next2149
+ %tmp2153 = getelementptr %struct.system__secondary_stack__mark_id* %tmp46, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2154 = load i8** %tmp2153 ; <i8*> [#uses=3]
+ %tmp2156 = getelementptr %struct.system__secondary_stack__mark_id* %tmp46, i32 0, i32 1 ; <i32*> [#uses=1]
+ %tmp2157 = load i32* %tmp2156 ; <i32> [#uses=3]
+ %tmp2168 = or i1 %tmp1939, %tmp1401 ; <i1> [#uses=1]
+ br i1 %tmp2168, label %cond_true2171, label %cond_next2189
+
+cond_true2171: ; preds = %invcont2150
+ invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 165 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2172
+
+unwind2172: ; preds = %invcont2236, %invcont2219, %bb2205, %bb2203, %cond_true2171
+ %eh_ptr2173 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select2175 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2173, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid2250 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp2252 = icmp eq i32 %eh_select2175, %eh_typeid2250 ; <i1> [#uses=1]
+ br i1 %tmp2252, label %eh_then2253, label %cleanup2284
+
+cond_next2189: ; preds = %invcont2150
+ %tmp21902191 = and i32 %tmp218, 255 ; <i32> [#uses=1]
+ %tmp2193 = sub i32 %tmp21902191, %tmp17811782 ; <i32> [#uses=1]
+ %tmp2194 = getelementptr i8* %tmp1821, i32 %tmp2193 ; <i8*> [#uses=1]
+ %tmp2195 = load i8* %tmp2194 ; <i8> [#uses=2]
+ %tmp2197 = icmp ugt i8 %tmp2195, 6 ; <i1> [#uses=1]
+ br i1 %tmp2197, label %bb2203, label %bb2205
+
+bb2203: ; preds = %cond_next2189
+ invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 165 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2172
+
+bb2205: ; preds = %cond_next2189
+ %tmp22132214 = zext i8 %tmp2195 to i32 ; <i32> [#uses=1]
+ invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp49 sret , i32 %tmp22132214, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
+ to label %invcont2219 unwind label %unwind2172
+
+invcont2219: ; preds = %bb2205
+ %tmp2221 = getelementptr %struct.string___XUP* %tmp49, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2222 = load i8** %tmp2221 ; <i8*> [#uses=1]
+ %tmp22225781 = ptrtoint i8* %tmp2222 to i32 ; <i32> [#uses=1]
+ %tmp222257815782 = zext i32 %tmp22225781 to i64 ; <i64> [#uses=1]
+ %tmp2224 = getelementptr %struct.string___XUP* %tmp49, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp2225 = load %struct.string___XUB** %tmp2224 ; <%struct.string___XUB*> [#uses=1]
+ %tmp22255777 = ptrtoint %struct.string___XUB* %tmp2225 to i32 ; <i32> [#uses=1]
+ %tmp222557775778 = zext i32 %tmp22255777 to i64 ; <i64> [#uses=1]
+ %tmp2225577757785779 = shl i64 %tmp222557775778, 32 ; <i64> [#uses=1]
+ %tmp2225577757785779.ins = or i64 %tmp2225577757785779, %tmp222257815782 ; <i64> [#uses=1]
+ invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp52 sret , i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str14 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)), i64 %tmp2225577757785779.ins )
+ to label %invcont2236 unwind label %unwind2172
+
+invcont2236: ; preds = %invcont2219
+ %tmp2238 = getelementptr %struct.string___XUP* %tmp52, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2239 = load i8** %tmp2238 ; <i8*> [#uses=1]
+ %tmp22395769 = ptrtoint i8* %tmp2239 to i32 ; <i32> [#uses=1]
+ %tmp223957695770 = zext i32 %tmp22395769 to i64 ; <i64> [#uses=1]
+ %tmp2241 = getelementptr %struct.string___XUP* %tmp52, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp2242 = load %struct.string___XUB** %tmp2241 ; <%struct.string___XUB*> [#uses=1]
+ %tmp22425765 = ptrtoint %struct.string___XUB* %tmp2242 to i32 ; <i32> [#uses=1]
+ %tmp224257655766 = zext i32 %tmp22425765 to i64 ; <i64> [#uses=1]
+ %tmp2242576557665767 = shl i64 %tmp224257655766, 32 ; <i64> [#uses=1]
+ %tmp2242576557665767.ins = or i64 %tmp2242576557665767, %tmp223957695770 ; <i64> [#uses=1]
+ invoke void @report__failed( i64 %tmp2242576557665767.ins )
+ to label %cleanup2300 unwind label %unwind2172
+
+eh_then2253: ; preds = %unwind2172
+ invoke void @__gnat_begin_handler( i8* %eh_ptr2173 )
+ to label %invcont2261 unwind label %unwind2257
+
+unwind2257: ; preds = %invcont2263, %invcont2261, %eh_then2253
+ %eh_ptr2258 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select2260 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2258, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_ptr2173 )
+ to label %cleanup2284 unwind label %unwind2274
+
+invcont2261: ; preds = %eh_then2253
+ %tmp2262 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp2262( )
+ to label %invcont2263 unwind label %unwind2257
+
+invcont2263: ; preds = %invcont2261
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @.str15 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)) )
+ to label %cleanup2272 unwind label %unwind2257
+
+cleanup2272: ; preds = %invcont2263
+ invoke void @__gnat_end_handler( i8* %eh_ptr2173 )
+ to label %cleanup2300 unwind label %unwind2274
+
+unwind2274: ; preds = %cleanup2272, %unwind2257
+ %eh_ptr2275 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select2277 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2275, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %tmp229055456023 = ptrtoint i8* %tmp2154 to i32 ; <i32> [#uses=1]
+ %tmp2290554555466024 = zext i32 %tmp229055456023 to i64 ; <i64> [#uses=1]
+ %tmp229355426025 = zext i32 %tmp2157 to i64 ; <i64> [#uses=1]
+ %tmp2293554255436026 = shl i64 %tmp229355426025, 32 ; <i64> [#uses=1]
+ %tmp229355425543.ins6027 = or i64 %tmp2293554255436026, %tmp2290554555466024 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp229355425543.ins6027 )
+ to label %cleanup2318 unwind label %unwind1895
+
+cleanup2284: ; preds = %unwind2257, %unwind2172
+ %eh_selector.24 = phi i32 [ %eh_select2175, %unwind2172 ], [ %eh_select2260, %unwind2257 ] ; <i32> [#uses=1]
+ %eh_exception.26 = phi i8* [ %eh_ptr2173, %unwind2172 ], [ %eh_ptr2258, %unwind2257 ] ; <i8*> [#uses=1]
+ %tmp22905545 = ptrtoint i8* %tmp2154 to i32 ; <i32> [#uses=1]
+ %tmp229055455546 = zext i32 %tmp22905545 to i64 ; <i64> [#uses=1]
+ %tmp22935542 = zext i32 %tmp2157 to i64 ; <i64> [#uses=1]
+ %tmp229355425543 = shl i64 %tmp22935542, 32 ; <i64> [#uses=1]
+ %tmp229355425543.ins = or i64 %tmp229355425543, %tmp229055455546 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp229355425543.ins )
+ to label %cleanup2318 unwind label %unwind1895
+
+cleanup2300: ; preds = %cleanup2272, %invcont2236
+ %tmp23075539 = ptrtoint i8* %tmp2154 to i32 ; <i32> [#uses=1]
+ %tmp230755395540 = zext i32 %tmp23075539 to i64 ; <i64> [#uses=1]
+ %tmp23105536 = zext i32 %tmp2157 to i64 ; <i64> [#uses=1]
+ %tmp231055365537 = shl i64 %tmp23105536, 32 ; <i64> [#uses=1]
+ %tmp231055365537.ins = or i64 %tmp231055365537, %tmp230755395540 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp231055365537.ins )
+ to label %cleanup2371 unwind label %unwind1895
+
+cleanup2318: ; preds = %cleanup2284, %unwind2274
+ %eh_selector.246021.1 = phi i32 [ %eh_select2277, %unwind2274 ], [ %eh_selector.24, %cleanup2284 ] ; <i32> [#uses=2]
+ %eh_exception.266022.1 = phi i8* [ %eh_ptr2275, %unwind2274 ], [ %eh_exception.26, %cleanup2284 ] ; <i8*> [#uses=2]
+ %eh_typeid2319 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp2321 = icmp eq i32 %eh_selector.246021.1, %eh_typeid2319 ; <i1> [#uses=1]
+ br i1 %tmp2321, label %eh_then2322, label %eh_else2340
+
+eh_then2322: ; preds = %cleanup2318, %unwind1895
+ %eh_exception.216011.0 = phi i8* [ %eh_ptr1896, %unwind1895 ], [ %eh_exception.266022.1, %cleanup2318 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.216011.0 )
+ to label %invcont2328 unwind label %unwind2326
+
+unwind2326: ; preds = %invcont2328, %eh_then2322
+ %eh_ptr2327 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_exception.216011.0 )
+ to label %cleanup2369 unwind label %unwind2334
+
+invcont2328: ; preds = %eh_then2322
+ %tmp2329 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp2329( )
+ to label %cleanup2332 unwind label %unwind2326
+
+cleanup2332: ; preds = %invcont2328
+ invoke void @__gnat_end_handler( i8* %eh_exception.216011.0 )
+ to label %cleanup2371 unwind label %unwind2334
+
+unwind2334: ; preds = %cleanup2361, %unwind2348, %cleanup2332, %unwind2326
+ %eh_ptr2335 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp1780 )
+ call void @llvm.stackrestore( i8* %tmp1780 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr2335 ) ; <i32>:8 [#uses=0]
+ unreachable
+
+eh_else2340: ; preds = %cleanup2318, %unwind1895
+ %eh_selector.196009.1 = phi i32 [ %eh_select1898, %unwind1895 ], [ %eh_selector.246021.1, %cleanup2318 ] ; <i32> [#uses=1]
+ %eh_exception.216011.1 = phi i8* [ %eh_ptr1896, %unwind1895 ], [ %eh_exception.266022.1, %cleanup2318 ] ; <i8*> [#uses=4]
+ %eh_typeid2341 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp2343 = icmp eq i32 %eh_selector.196009.1, %eh_typeid2341 ; <i1> [#uses=1]
+ br i1 %tmp2343, label %eh_then2344, label %cleanup2369
+
+eh_then2344: ; preds = %eh_else2340
+ invoke void @__gnat_begin_handler( i8* %eh_exception.216011.1 )
+ to label %invcont2350 unwind label %unwind2348
+
+unwind2348: ; preds = %invcont2352, %invcont2350, %eh_then2344
+ %eh_ptr2349 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_exception.216011.1 )
+ to label %cleanup2369 unwind label %unwind2334
+
+invcont2350: ; preds = %eh_then2344
+ %tmp2351 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp2351( )
+ to label %invcont2352 unwind label %unwind2348
+
+invcont2352: ; preds = %invcont2350
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str16 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
+ to label %cleanup2361 unwind label %unwind2348
+
+cleanup2361: ; preds = %invcont2352
+ invoke void @__gnat_end_handler( i8* %eh_exception.216011.1 )
+ to label %cleanup2371 unwind label %unwind2334
+
+cleanup2369: ; preds = %unwind2348, %eh_else2340, %unwind2326
+ %eh_exception.28 = phi i8* [ %eh_ptr2327, %unwind2326 ], [ %eh_exception.216011.1, %eh_else2340 ], [ %eh_ptr2349, %unwind2348 ] ; <i8*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp1780 )
+ call void @llvm.stackrestore( i8* %tmp1780 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_exception.28 ) ; <i32>:9 [#uses=0]
+ unreachable
+
+cleanup2371: ; preds = %cleanup2361, %cleanup2332, %cleanup2300
+ call void @llvm.stackrestore( i8* %tmp1780 )
+ call void @llvm.stackrestore( i8* %tmp1780 )
+ invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp55 sret )
+ to label %invcont2382 unwind label %unwind2378
+
+unwind2378: ; preds = %cleanup2371
+ %eh_ptr2379 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select2381 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2379, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid26496037 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp26516039 = icmp eq i32 %eh_select2381, %eh_typeid26496037 ; <i1> [#uses=1]
+ br i1 %tmp26516039, label %eh_then2652, label %eh_else2666
+
+invcont2382: ; preds = %cleanup2371
+ %tmp2385 = getelementptr %struct.system__secondary_stack__mark_id* %tmp55, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2386 = load i8** %tmp2385 ; <i8*> [#uses=2]
+ %tmp2388 = getelementptr %struct.system__secondary_stack__mark_id* %tmp55, i32 0, i32 1 ; <i32*> [#uses=1]
+ %tmp2389 = load i32* %tmp2388 ; <i32> [#uses=2]
+ %tmp2390 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=3]
+ %tmp2393 = icmp ult i8 %tmp306307, %tmp170171 ; <i1> [#uses=1]
+ br i1 %tmp2393, label %cond_next2417, label %cond_true2396
+
+cond_true2396: ; preds = %invcont2382
+ %tmp2399 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %tmp2403 = icmp ugt i8 %tmp306307, %tmp272273 ; <i1> [#uses=1]
+ %tmp2407 = or i1 %tmp2403, %tmp2399 ; <i1> [#uses=1]
+ br i1 %tmp2407, label %cond_true2410, label %cond_next2417
+
+cond_true2410: ; preds = %cond_true2396
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 177 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2411
+
+unwind2411: ; preds = %invcont2591, %invcont2574, %bb2560, %bb2558, %bb2524, %bb2506, %cond_true2410
+ %eh_ptr2412 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select2414 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2412, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %tmp26315527 = ptrtoint i8* %tmp2386 to i32 ; <i32> [#uses=1]
+ %tmp263155275528 = zext i32 %tmp26315527 to i64 ; <i64> [#uses=1]
+ %tmp26345524 = zext i32 %tmp2389 to i64 ; <i64> [#uses=1]
+ %tmp263455245525 = shl i64 %tmp26345524, 32 ; <i64> [#uses=1]
+ %tmp263455245525.ins = or i64 %tmp263455245525, %tmp263155275528 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp263455245525.ins )
+ to label %cleanup2644 unwind label %unwind2618
+
+cond_next2417: ; preds = %cond_true2396, %invcont2382
+ %tmp2493 = icmp ugt i8 %tmp170171, %tmp238239 ; <i1> [#uses=1]
+ %tmp2500 = icmp ugt i8 %tmp238239, %tmp306307 ; <i1> [#uses=1]
+ %bothcond5903 = or i1 %tmp2500, %tmp2493 ; <i1> [#uses=1]
+ br i1 %bothcond5903, label %bb2506, label %cond_next2515
+
+bb2506: ; preds = %cond_next2417
+ invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 180 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2411
+
+cond_next2515: ; preds = %cond_next2417
+ br i1 %tmp240, label %bb2524, label %bb2526
+
+bb2524: ; preds = %cond_next2515
+ invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 180 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2411
+
+bb2526: ; preds = %cond_next2515
+ br i1 %tmp274, label %bb2558, label %bb2560
+
+bb2558: ; preds = %bb2526
+ invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 182 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2411
+
+bb2560: ; preds = %bb2526
+ invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp58 sret , i32 %tmp13831384, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
+ to label %invcont2574 unwind label %unwind2411
+
+invcont2574: ; preds = %bb2560
+ %tmp2576 = getelementptr %struct.string___XUP* %tmp58, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2577 = load i8** %tmp2576 ; <i8*> [#uses=1]
+ %tmp25775747 = ptrtoint i8* %tmp2577 to i32 ; <i32> [#uses=1]
+ %tmp257757475748 = zext i32 %tmp25775747 to i64 ; <i64> [#uses=1]
+ %tmp2579 = getelementptr %struct.string___XUP* %tmp58, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp2580 = load %struct.string___XUB** %tmp2579 ; <%struct.string___XUB*> [#uses=1]
+ %tmp25805743 = ptrtoint %struct.string___XUB* %tmp2580 to i32 ; <i32> [#uses=1]
+ %tmp258057435744 = zext i32 %tmp25805743 to i64 ; <i64> [#uses=1]
+ %tmp2580574357445745 = shl i64 %tmp258057435744, 32 ; <i64> [#uses=1]
+ %tmp2580574357445745.ins = or i64 %tmp2580574357445745, %tmp257757475748 ; <i64> [#uses=1]
+ invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp61 sret , i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str17 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)), i64 %tmp2580574357445745.ins )
+ to label %invcont2591 unwind label %unwind2411
+
+invcont2591: ; preds = %invcont2574
+ %tmp2593 = getelementptr %struct.string___XUP* %tmp61, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2594 = load i8** %tmp2593 ; <i8*> [#uses=1]
+ %tmp25945735 = ptrtoint i8* %tmp2594 to i32 ; <i32> [#uses=1]
+ %tmp259457355736 = zext i32 %tmp25945735 to i64 ; <i64> [#uses=1]
+ %tmp2596 = getelementptr %struct.string___XUP* %tmp61, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp2597 = load %struct.string___XUB** %tmp2596 ; <%struct.string___XUB*> [#uses=1]
+ %tmp25975731 = ptrtoint %struct.string___XUB* %tmp2597 to i32 ; <i32> [#uses=1]
+ %tmp259757315732 = zext i32 %tmp25975731 to i64 ; <i64> [#uses=1]
+ %tmp2597573157325733 = shl i64 %tmp259757315732, 32 ; <i64> [#uses=1]
+ %tmp2597573157325733.ins = or i64 %tmp2597573157325733, %tmp259457355736 ; <i64> [#uses=1]
+ invoke void @report__failed( i64 %tmp2597573157325733.ins )
+ to label %cleanup2604 unwind label %unwind2411
+
+cleanup2604: ; preds = %invcont2591
+ %tmp26105533 = ptrtoint i8* %tmp2386 to i32 ; <i32> [#uses=1]
+ %tmp261055335534 = zext i32 %tmp26105533 to i64 ; <i64> [#uses=1]
+ %tmp26135530 = zext i32 %tmp2389 to i64 ; <i64> [#uses=1]
+ %tmp261355305531 = shl i64 %tmp26135530, 32 ; <i64> [#uses=1]
+ %tmp261355305531.ins = or i64 %tmp261355305531, %tmp261055335534 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp261355305531.ins )
+ to label %cleanup2642 unwind label %unwind2618
+
+unwind2618: ; preds = %cleanup2604, %unwind2411
+ %eh_ptr2619 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select2621 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2619, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ call void @llvm.stackrestore( i8* %tmp2390 )
+ %eh_typeid26493 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp26514 = icmp eq i32 %eh_select2621, %eh_typeid26493 ; <i1> [#uses=1]
+ br i1 %tmp26514, label %eh_then2652, label %eh_else2666
+
+cleanup2642: ; preds = %cleanup2604
+ call void @llvm.stackrestore( i8* %tmp2390 )
+ %tmp26946042 = icmp ult i8 %tmp238239, %tmp137138 ; <i1> [#uses=1]
+ br i1 %tmp26946042, label %cond_next2718, label %cond_true2697
+
+cleanup2644: ; preds = %unwind2411
+ call void @llvm.stackrestore( i8* %tmp2390 )
+ %eh_typeid2649 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp2651 = icmp eq i32 %eh_select2414, %eh_typeid2649 ; <i1> [#uses=1]
+ br i1 %tmp2651, label %eh_then2652, label %eh_else2666
+
+eh_then2652: ; preds = %cleanup2644, %unwind2618, %unwind2378
+ %eh_exception.296030.0 = phi i8* [ %eh_ptr2379, %unwind2378 ], [ %eh_ptr2619, %unwind2618 ], [ %eh_ptr2412, %cleanup2644 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.296030.0 )
+ to label %invcont2658 unwind label %unwind2656
+
+unwind2656: ; preds = %invcont2658, %eh_then2652
+ %eh_ptr2657 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_exception.296030.0 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr2657 ) ; <i32>:10 [#uses=0]
+ unreachable
+
+invcont2658: ; preds = %eh_then2652
+ %tmp2659 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp2659( )
+ to label %cleanup2662 unwind label %unwind2656
+
+cleanup2662: ; preds = %invcont2658
+ call void @__gnat_end_handler( i8* %eh_exception.296030.0 )
+ %tmp26946043 = icmp ult i8 %tmp238239, %tmp137138 ; <i1> [#uses=1]
+ br i1 %tmp26946043, label %cond_next2718, label %cond_true2697
+
+eh_else2666: ; preds = %cleanup2644, %unwind2618, %unwind2378
+ %eh_selector.256028.1 = phi i32 [ %eh_select2381, %unwind2378 ], [ %eh_select2621, %unwind2618 ], [ %eh_select2414, %cleanup2644 ] ; <i32> [#uses=1]
+ %eh_exception.296030.1 = phi i8* [ %eh_ptr2379, %unwind2378 ], [ %eh_ptr2619, %unwind2618 ], [ %eh_ptr2412, %cleanup2644 ] ; <i8*> [#uses=4]
+ %eh_typeid2667 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp2669 = icmp eq i32 %eh_selector.256028.1, %eh_typeid2667 ; <i1> [#uses=1]
+ br i1 %tmp2669, label %eh_then2670, label %Unwind
+
+eh_then2670: ; preds = %eh_else2666
+ invoke void @__gnat_begin_handler( i8* %eh_exception.296030.1 )
+ to label %invcont2676 unwind label %unwind2674
+
+unwind2674: ; preds = %invcont2678, %invcont2676, %eh_then2670
+ %eh_ptr2675 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_exception.296030.1 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr2675 ) ; <i32>:11 [#uses=0]
+ unreachable
+
+invcont2676: ; preds = %eh_then2670
+ %tmp2677 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp2677( )
+ to label %invcont2678 unwind label %unwind2674
+
+invcont2678: ; preds = %invcont2676
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([24 x i8]* @.str18 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.35.915 to i32) to i64), i64 32)) )
+ to label %cleanup2687 unwind label %unwind2674
+
+cleanup2687: ; preds = %invcont2678
+ call void @__gnat_end_handler( i8* %eh_exception.296030.1 )
+ %tmp2694 = icmp ult i8 %tmp238239, %tmp137138 ; <i1> [#uses=1]
+ br i1 %tmp2694, label %cond_next2718, label %cond_true2697
+
+cond_true2697: ; preds = %cleanup2687, %cleanup2662, %cleanup2642
+ %tmp2700 = icmp ult i8 %tmp137138, %tmp204205 ; <i1> [#uses=1]
+ %tmp2704 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
+ %tmp2708 = or i1 %tmp2704, %tmp2700 ; <i1> [#uses=1]
+ br i1 %tmp2708, label %cond_true2711, label %cond_next2718
+
+cond_true2711: ; preds = %cond_true2697
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 192 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2712
+
+unwind2712: ; preds = %cleanup2990, %unwind2975, %cond_true2711
+ %eh_ptr2713 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select2715 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2713, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid29996053 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp30016055 = icmp eq i32 %eh_select2715, %eh_typeid29996053 ; <i1> [#uses=1]
+ br i1 %tmp30016055, label %eh_then3002, label %eh_else3016
+
+cond_next2718: ; preds = %cond_true2697, %cleanup2687, %cleanup2662, %cleanup2642
+ invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp63 sret )
+ to label %invcont2766 unwind label %unwind2762
+
+unwind2762: ; preds = %cond_next2718
+ %eh_ptr2763 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select2765 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2763, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid29686060 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp29706061 = icmp eq i32 %eh_select2765, %eh_typeid29686060 ; <i1> [#uses=1]
+ br i1 %tmp29706061, label %eh_then2971, label %cleanup2998
+
+invcont2766: ; preds = %cond_next2718
+ %tmp2769 = getelementptr %struct.system__secondary_stack__mark_id* %tmp63, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2770 = load i8** %tmp2769 ; <i8*> [#uses=2]
+ %tmp2772 = getelementptr %struct.system__secondary_stack__mark_id* %tmp63, i32 0, i32 1 ; <i32*> [#uses=1]
+ %tmp2773 = load i32* %tmp2772 ; <i32> [#uses=2]
+ %tmp2774 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=3]
+ %tmp2808 = icmp ugt i8 %tmp137138, %tmp204205 ; <i1> [#uses=1]
+ %tmp2815 = icmp ult i8 %tmp238239, %tmp204205 ; <i1> [#uses=1]
+ %bothcond5904 = or i1 %tmp2815, %tmp2808 ; <i1> [#uses=1]
+ br i1 %bothcond5904, label %bb2821, label %cond_next2834
+
+bb2821: ; preds = %invcont2766
+ invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 198 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2822
+
+unwind2822: ; preds = %invcont2910, %invcont2893, %bb2879, %bb2877, %bb2843, %bb2821
+ %eh_ptr2823 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select2825 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2823, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %tmp29295521 = ptrtoint i8* %tmp2770 to i32 ; <i32> [#uses=1]
+ %tmp292955215522 = zext i32 %tmp29295521 to i64 ; <i64> [#uses=1]
+ %tmp29325518 = zext i32 %tmp2773 to i64 ; <i64> [#uses=1]
+ %tmp293255185519 = shl i64 %tmp29325518, 32 ; <i64> [#uses=1]
+ %tmp293255185519.ins = or i64 %tmp293255185519, %tmp292955215522 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp293255185519.ins )
+ to label %cleanup2963 unwind label %unwind2937
+
+cond_next2834: ; preds = %invcont2766
+ br i1 %tmp206, label %bb2843, label %bb2845
+
+bb2843: ; preds = %cond_next2834
+ invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 198 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2822
+
+bb2845: ; preds = %cond_next2834
+ br i1 %tmp274, label %bb2877, label %bb2879
+
+bb2877: ; preds = %bb2845
+ invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 200 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind2822
+
+bb2879: ; preds = %bb2845
+ invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp66 sret , i32 %tmp13831384, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
+ to label %invcont2893 unwind label %unwind2822
+
+invcont2893: ; preds = %bb2879
+ %tmp2895 = getelementptr %struct.string___XUP* %tmp66, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2896 = load i8** %tmp2895 ; <i8*> [#uses=1]
+ %tmp28965718 = ptrtoint i8* %tmp2896 to i32 ; <i32> [#uses=1]
+ %tmp289657185719 = zext i32 %tmp28965718 to i64 ; <i64> [#uses=1]
+ %tmp2898 = getelementptr %struct.string___XUP* %tmp66, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp2899 = load %struct.string___XUB** %tmp2898 ; <%struct.string___XUB*> [#uses=1]
+ %tmp28995714 = ptrtoint %struct.string___XUB* %tmp2899 to i32 ; <i32> [#uses=1]
+ %tmp289957145715 = zext i32 %tmp28995714 to i64 ; <i64> [#uses=1]
+ %tmp2899571457155716 = shl i64 %tmp289957145715, 32 ; <i64> [#uses=1]
+ %tmp2899571457155716.ins = or i64 %tmp2899571457155716, %tmp289657185719 ; <i64> [#uses=1]
+ invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp69 sret , i64 or (i64 zext (i32 ptrtoint ([31 x i8]* @.str19 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.98.1466 to i32) to i64), i64 32)), i64 %tmp2899571457155716.ins )
+ to label %invcont2910 unwind label %unwind2822
+
+invcont2910: ; preds = %invcont2893
+ %tmp2912 = getelementptr %struct.string___XUP* %tmp69, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp2913 = load i8** %tmp2912 ; <i8*> [#uses=1]
+ %tmp29135706 = ptrtoint i8* %tmp2913 to i32 ; <i32> [#uses=1]
+ %tmp291357065707 = zext i32 %tmp29135706 to i64 ; <i64> [#uses=1]
+ %tmp2915 = getelementptr %struct.string___XUP* %tmp69, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp2916 = load %struct.string___XUB** %tmp2915 ; <%struct.string___XUB*> [#uses=1]
+ %tmp29165702 = ptrtoint %struct.string___XUB* %tmp2916 to i32 ; <i32> [#uses=1]
+ %tmp291657025703 = zext i32 %tmp29165702 to i64 ; <i64> [#uses=1]
+ %tmp2916570257035704 = shl i64 %tmp291657025703, 32 ; <i64> [#uses=1]
+ %tmp2916570257035704.ins = or i64 %tmp2916570257035704, %tmp291357065707 ; <i64> [#uses=1]
+ invoke void @report__failed( i64 %tmp2916570257035704.ins )
+ to label %cleanup2943 unwind label %unwind2822
+
+unwind2937: ; preds = %cleanup2943, %unwind2822
+ %eh_ptr2938 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select2940 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2938, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ call void @llvm.stackrestore( i8* %tmp2774 )
+ %eh_typeid29685 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp29706 = icmp eq i32 %eh_select2940, %eh_typeid29685 ; <i1> [#uses=1]
+ br i1 %tmp29706, label %eh_then2971, label %cleanup2998
+
+cleanup2943: ; preds = %invcont2910
+ %tmp29505515 = ptrtoint i8* %tmp2770 to i32 ; <i32> [#uses=1]
+ %tmp295055155516 = zext i32 %tmp29505515 to i64 ; <i64> [#uses=1]
+ %tmp29535512 = zext i32 %tmp2773 to i64 ; <i64> [#uses=1]
+ %tmp295355125513 = shl i64 %tmp29535512, 32 ; <i64> [#uses=1]
+ %tmp295355125513.ins = or i64 %tmp295355125513, %tmp295055155516 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp295355125513.ins )
+ to label %cleanup2961 unwind label %unwind2937
+
+cleanup2961: ; preds = %cleanup2943
+ call void @llvm.stackrestore( i8* %tmp2774 )
+ %tmp3044.not6066 = icmp uge i8 %tmp272273, %tmp170171 ; <i1> [#uses=1]
+ %tmp30506067 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %bothcond59056068 = and i1 %tmp3044.not6066, %tmp30506067 ; <i1> [#uses=1]
+ br i1 %bothcond59056068, label %cond_true3061, label %cond_next3068
+
+cleanup2963: ; preds = %unwind2822
+ call void @llvm.stackrestore( i8* %tmp2774 )
+ %eh_typeid2968 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp2970 = icmp eq i32 %eh_select2825, %eh_typeid2968 ; <i1> [#uses=1]
+ br i1 %tmp2970, label %eh_then2971, label %cleanup2998
+
+eh_then2971: ; preds = %cleanup2963, %unwind2937, %unwind2762
+ %eh_exception.356056.0 = phi i8* [ %eh_ptr2763, %unwind2762 ], [ %eh_ptr2938, %unwind2937 ], [ %eh_ptr2823, %cleanup2963 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.356056.0 )
+ to label %invcont2979 unwind label %unwind2975
+
+unwind2975: ; preds = %invcont2981, %invcont2979, %eh_then2971
+ %eh_ptr2976 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select2978 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr2976, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_exception.356056.0 )
+ to label %cleanup2998 unwind label %unwind2712
+
+invcont2979: ; preds = %eh_then2971
+ %tmp2980 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp2980( )
+ to label %invcont2981 unwind label %unwind2975
+
+invcont2981: ; preds = %invcont2979
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([46 x i8]* @.str20 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.101.1473 to i32) to i64), i64 32)) )
+ to label %cleanup2990 unwind label %unwind2975
+
+cleanup2990: ; preds = %invcont2981
+ invoke void @__gnat_end_handler( i8* %eh_exception.356056.0 )
+ to label %finally2997 unwind label %unwind2712
+
+cleanup2998: ; preds = %unwind2975, %cleanup2963, %unwind2937, %unwind2762
+ %eh_selector.29 = phi i32 [ %eh_select2765, %unwind2762 ], [ %eh_select2940, %unwind2937 ], [ %eh_select2825, %cleanup2963 ], [ %eh_select2978, %unwind2975 ] ; <i32> [#uses=2]
+ %eh_exception.33 = phi i8* [ %eh_ptr2763, %unwind2762 ], [ %eh_ptr2938, %unwind2937 ], [ %eh_ptr2823, %cleanup2963 ], [ %eh_ptr2976, %unwind2975 ] ; <i8*> [#uses=2]
+ %eh_typeid2999 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp3001 = icmp eq i32 %eh_selector.29, %eh_typeid2999 ; <i1> [#uses=1]
+ br i1 %tmp3001, label %eh_then3002, label %eh_else3016
+
+eh_then3002: ; preds = %cleanup2998, %unwind2712
+ %eh_exception.336046.0 = phi i8* [ %eh_ptr2713, %unwind2712 ], [ %eh_exception.33, %cleanup2998 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.336046.0 )
+ to label %invcont3008 unwind label %unwind3006
+
+unwind3006: ; preds = %invcont3008, %eh_then3002
+ %eh_ptr3007 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_exception.336046.0 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3007 ) ; <i32>:12 [#uses=0]
+ unreachable
+
+invcont3008: ; preds = %eh_then3002
+ %tmp3009 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp3009( )
+ to label %cleanup3012 unwind label %unwind3006
+
+cleanup3012: ; preds = %invcont3008
+ call void @__gnat_end_handler( i8* %eh_exception.336046.0 )
+ %tmp3044.not6069 = icmp uge i8 %tmp272273, %tmp170171 ; <i1> [#uses=1]
+ %tmp30506070 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %bothcond59056071 = and i1 %tmp3044.not6069, %tmp30506070 ; <i1> [#uses=1]
+ br i1 %bothcond59056071, label %cond_true3061, label %cond_next3068
+
+eh_else3016: ; preds = %cleanup2998, %unwind2712
+ %eh_selector.296044.1 = phi i32 [ %eh_select2715, %unwind2712 ], [ %eh_selector.29, %cleanup2998 ] ; <i32> [#uses=1]
+ %eh_exception.336046.1 = phi i8* [ %eh_ptr2713, %unwind2712 ], [ %eh_exception.33, %cleanup2998 ] ; <i8*> [#uses=4]
+ %eh_typeid3017 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp3019 = icmp eq i32 %eh_selector.296044.1, %eh_typeid3017 ; <i1> [#uses=1]
+ br i1 %tmp3019, label %eh_then3020, label %Unwind
+
+eh_then3020: ; preds = %eh_else3016
+ invoke void @__gnat_begin_handler( i8* %eh_exception.336046.1 )
+ to label %invcont3026 unwind label %unwind3024
+
+unwind3024: ; preds = %invcont3028, %invcont3026, %eh_then3020
+ %eh_ptr3025 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_exception.336046.1 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3025 ) ; <i32>:13 [#uses=0]
+ unreachable
+
+invcont3026: ; preds = %eh_then3020
+ %tmp3027 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp3027( )
+ to label %invcont3028 unwind label %unwind3024
+
+invcont3028: ; preds = %invcont3026
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([25 x i8]* @.str21 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.104.1478 to i32) to i64), i64 32)) )
+ to label %cleanup3037 unwind label %unwind3024
+
+cleanup3037: ; preds = %invcont3028
+ call void @__gnat_end_handler( i8* %eh_exception.336046.1 )
+ br label %finally2997
+
+finally2997: ; preds = %cleanup3037, %cleanup2990
+ %tmp3044.not = icmp uge i8 %tmp272273, %tmp170171 ; <i1> [#uses=1]
+ %tmp3050 = icmp ult i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %bothcond5905 = and i1 %tmp3044.not, %tmp3050 ; <i1> [#uses=1]
+ br i1 %bothcond5905, label %cond_true3061, label %cond_next3068
+
+cond_true3061: ; preds = %finally2997, %cleanup3012, %cleanup2961
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 214 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3062
+
+unwind3062: ; preds = %cleanup3340, %unwind3325, %cond_true3061
+ %eh_ptr3063 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select3065 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3063, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid33496081 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp33516083 = icmp eq i32 %eh_select3065, %eh_typeid33496081 ; <i1> [#uses=1]
+ br i1 %tmp33516083, label %eh_then3352, label %eh_else3366
+
+cond_next3068: ; preds = %finally2997, %cleanup3012, %cleanup2961
+ invoke void @system__secondary_stack__ss_mark( %struct.system__secondary_stack__mark_id* %tmp72 sret )
+ to label %invcont3116 unwind label %unwind3112
+
+unwind3112: ; preds = %cond_next3068
+ %eh_ptr3113 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select3115 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3113, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %eh_typeid33186088 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp33206089 = icmp eq i32 %eh_select3115, %eh_typeid33186088 ; <i1> [#uses=1]
+ br i1 %tmp33206089, label %eh_then3321, label %cleanup3348
+
+invcont3116: ; preds = %cond_next3068
+ %tmp3119 = getelementptr %struct.system__secondary_stack__mark_id* %tmp72, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp3120 = load i8** %tmp3119 ; <i8*> [#uses=2]
+ %tmp3122 = getelementptr %struct.system__secondary_stack__mark_id* %tmp72, i32 0, i32 1 ; <i32*> [#uses=1]
+ %tmp3123 = load i32* %tmp3122 ; <i32> [#uses=2]
+ %tmp3124 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=3]
+ %tmp3158 = icmp ugt i8 %tmp170171, %tmp204205 ; <i1> [#uses=1]
+ %bothcond5906 = or i1 %tmp364, %tmp3158 ; <i1> [#uses=1]
+ br i1 %bothcond5906, label %bb3171, label %cond_next3184
+
+bb3171: ; preds = %invcont3116
+ invoke void @__gnat_rcheck_05( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 220 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3172
+
+unwind3172: ; preds = %invcont3260, %invcont3243, %bb3229, %bb3227, %bb3193, %bb3171
+ %eh_ptr3173 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select3175 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3173, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ %tmp32795509 = ptrtoint i8* %tmp3120 to i32 ; <i32> [#uses=1]
+ %tmp327955095510 = zext i32 %tmp32795509 to i64 ; <i64> [#uses=1]
+ %tmp32825506 = zext i32 %tmp3123 to i64 ; <i64> [#uses=1]
+ %tmp328255065507 = shl i64 %tmp32825506, 32 ; <i64> [#uses=1]
+ %tmp328255065507.ins = or i64 %tmp328255065507, %tmp327955095510 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp328255065507.ins )
+ to label %cleanup3313 unwind label %unwind3287
+
+cond_next3184: ; preds = %invcont3116
+ br i1 %tmp206, label %bb3193, label %bb3195
+
+bb3193: ; preds = %cond_next3184
+ invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 220 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3172
+
+bb3195: ; preds = %cond_next3184
+ br i1 %tmp274, label %bb3227, label %bb3229
+
+bb3227: ; preds = %bb3195
+ invoke void @__gnat_rcheck_06( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 222 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3172
+
+bb3229: ; preds = %bb3195
+ invoke void @system__img_enum__image_enumeration_8( %struct.string___XUP* %tmp75 sret , i32 %tmp13831384, i64 or (i64 zext (i32 ptrtoint ([28 x i8]* @weekS.154 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.32.910 to i32) to i64), i64 32)), i8* getelementptr ([8 x i8]* @weekN.179, i32 0, i32 0) )
+ to label %invcont3243 unwind label %unwind3172
+
+invcont3243: ; preds = %bb3229
+ %tmp3245 = getelementptr %struct.string___XUP* %tmp75, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp3246 = load i8** %tmp3245 ; <i8*> [#uses=1]
+ %tmp32465684 = ptrtoint i8* %tmp3246 to i32 ; <i32> [#uses=1]
+ %tmp324656845685 = zext i32 %tmp32465684 to i64 ; <i64> [#uses=1]
+ %tmp3248 = getelementptr %struct.string___XUP* %tmp75, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp3249 = load %struct.string___XUB** %tmp3248 ; <%struct.string___XUB*> [#uses=1]
+ %tmp32495680 = ptrtoint %struct.string___XUB* %tmp3249 to i32 ; <i32> [#uses=1]
+ %tmp324956805681 = zext i32 %tmp32495680 to i64 ; <i64> [#uses=1]
+ %tmp3249568056815682 = shl i64 %tmp324956805681, 32 ; <i64> [#uses=1]
+ %tmp3249568056815682.ins = or i64 %tmp3249568056815682, %tmp324656845685 ; <i64> [#uses=1]
+ invoke void @system__string_ops__str_concat( %struct.string___XUP* %tmp78 sret , i64 or (i64 zext (i32 ptrtoint ([31 x i8]* @.str22 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.98.1466 to i32) to i64), i64 32)), i64 %tmp3249568056815682.ins )
+ to label %invcont3260 unwind label %unwind3172
+
+invcont3260: ; preds = %invcont3243
+ %tmp3262 = getelementptr %struct.string___XUP* %tmp78, i32 0, i32 0 ; <i8**> [#uses=1]
+ %tmp3263 = load i8** %tmp3262 ; <i8*> [#uses=1]
+ %tmp32635672 = ptrtoint i8* %tmp3263 to i32 ; <i32> [#uses=1]
+ %tmp326356725673 = zext i32 %tmp32635672 to i64 ; <i64> [#uses=1]
+ %tmp3265 = getelementptr %struct.string___XUP* %tmp78, i32 0, i32 1 ; <%struct.string___XUB**> [#uses=1]
+ %tmp3266 = load %struct.string___XUB** %tmp3265 ; <%struct.string___XUB*> [#uses=1]
+ %tmp32665668 = ptrtoint %struct.string___XUB* %tmp3266 to i32 ; <i32> [#uses=1]
+ %tmp326656685669 = zext i32 %tmp32665668 to i64 ; <i64> [#uses=1]
+ %tmp3266566856695670 = shl i64 %tmp326656685669, 32 ; <i64> [#uses=1]
+ %tmp3266566856695670.ins = or i64 %tmp3266566856695670, %tmp326356725673 ; <i64> [#uses=1]
+ invoke void @report__failed( i64 %tmp3266566856695670.ins )
+ to label %cleanup3293 unwind label %unwind3172
+
+unwind3287: ; preds = %cleanup3293, %unwind3172
+ %eh_ptr3288 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=3]
+ %eh_select3290 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3288, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=2]
+ call void @llvm.stackrestore( i8* %tmp3124 )
+ %eh_typeid33187 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp33208 = icmp eq i32 %eh_select3290, %eh_typeid33187 ; <i1> [#uses=1]
+ br i1 %tmp33208, label %eh_then3321, label %cleanup3348
+
+cleanup3293: ; preds = %invcont3260
+ %tmp33005503 = ptrtoint i8* %tmp3120 to i32 ; <i32> [#uses=1]
+ %tmp330055035504 = zext i32 %tmp33005503 to i64 ; <i64> [#uses=1]
+ %tmp33035500 = zext i32 %tmp3123 to i64 ; <i64> [#uses=1]
+ %tmp330355005501 = shl i64 %tmp33035500, 32 ; <i64> [#uses=1]
+ %tmp330355005501.ins = or i64 %tmp330355005501, %tmp330055035504 ; <i64> [#uses=1]
+ invoke void @system__secondary_stack__ss_release( i64 %tmp330355005501.ins )
+ to label %cleanup3311 unwind label %unwind3287
+
+cleanup3311: ; preds = %cleanup3293
+ call void @llvm.stackrestore( i8* %tmp3124 )
+ br label %finally3347
+
+cleanup3313: ; preds = %unwind3172
+ call void @llvm.stackrestore( i8* %tmp3124 )
+ %eh_typeid3318 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp3320 = icmp eq i32 %eh_select3175, %eh_typeid3318 ; <i1> [#uses=1]
+ br i1 %tmp3320, label %eh_then3321, label %cleanup3348
+
+eh_then3321: ; preds = %cleanup3313, %unwind3287, %unwind3112
+ %eh_exception.416084.0 = phi i8* [ %eh_ptr3113, %unwind3112 ], [ %eh_ptr3288, %unwind3287 ], [ %eh_ptr3173, %cleanup3313 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.416084.0 )
+ to label %invcont3329 unwind label %unwind3325
+
+unwind3325: ; preds = %invcont3331, %invcont3329, %eh_then3321
+ %eh_ptr3326 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=2]
+ %eh_select3328 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3326, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), %struct.exception* @constraint_error, i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_exception.416084.0 )
+ to label %cleanup3348 unwind label %unwind3062
+
+invcont3329: ; preds = %eh_then3321
+ %tmp3330 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp3330( )
+ to label %invcont3331 unwind label %unwind3325
+
+invcont3331: ; preds = %invcont3329
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([46 x i8]* @.str20 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.101.1473 to i32) to i64), i64 32)) )
+ to label %cleanup3340 unwind label %unwind3325
+
+cleanup3340: ; preds = %invcont3331
+ invoke void @__gnat_end_handler( i8* %eh_exception.416084.0 )
+ to label %finally3347 unwind label %unwind3062
+
+cleanup3348: ; preds = %unwind3325, %cleanup3313, %unwind3287, %unwind3112
+ %eh_selector.35 = phi i32 [ %eh_select3115, %unwind3112 ], [ %eh_select3290, %unwind3287 ], [ %eh_select3175, %cleanup3313 ], [ %eh_select3328, %unwind3325 ] ; <i32> [#uses=2]
+ %eh_exception.39 = phi i8* [ %eh_ptr3113, %unwind3112 ], [ %eh_ptr3288, %unwind3287 ], [ %eh_ptr3173, %cleanup3313 ], [ %eh_ptr3326, %unwind3325 ] ; <i8*> [#uses=2]
+ %eh_typeid3349 = call i32 @llvm.eh.typeid.for.i32( i8* getelementptr (%struct.exception* @constraint_error, i32 0, i32 0) ) ; <i32> [#uses=1]
+ %tmp3351 = icmp eq i32 %eh_selector.35, %eh_typeid3349 ; <i1> [#uses=1]
+ br i1 %tmp3351, label %eh_then3352, label %eh_else3366
+
+eh_then3352: ; preds = %cleanup3348, %unwind3062
+ %eh_exception.396074.0 = phi i8* [ %eh_ptr3063, %unwind3062 ], [ %eh_exception.39, %cleanup3348 ] ; <i8*> [#uses=3]
+ invoke void @__gnat_begin_handler( i8* %eh_exception.396074.0 )
+ to label %invcont3358 unwind label %unwind3356
+
+unwind3356: ; preds = %invcont3358, %eh_then3352
+ %eh_ptr3357 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_exception.396074.0 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3357 ) ; <i32>:14 [#uses=0]
+ unreachable
+
+invcont3358: ; preds = %eh_then3352
+ %tmp3359 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp3359( )
+ to label %cleanup3362 unwind label %unwind3356
+
+cleanup3362: ; preds = %invcont3358
+ call void @__gnat_end_handler( i8* %eh_exception.396074.0 )
+ br label %finally3347
+
+eh_else3366: ; preds = %cleanup3348, %unwind3062
+ %eh_selector.356072.1 = phi i32 [ %eh_select3065, %unwind3062 ], [ %eh_selector.35, %cleanup3348 ] ; <i32> [#uses=1]
+ %eh_exception.396074.1 = phi i8* [ %eh_ptr3063, %unwind3062 ], [ %eh_exception.39, %cleanup3348 ] ; <i8*> [#uses=4]
+ %eh_typeid3367 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp3369 = icmp eq i32 %eh_selector.356072.1, %eh_typeid3367 ; <i1> [#uses=1]
+ br i1 %tmp3369, label %eh_then3370, label %Unwind
+
+eh_then3370: ; preds = %eh_else3366
+ invoke void @__gnat_begin_handler( i8* %eh_exception.396074.1 )
+ to label %invcont3376 unwind label %unwind3374
+
+unwind3374: ; preds = %invcont3378, %invcont3376, %eh_then3370
+ %eh_ptr3375 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_exception.396074.1 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3375 ) ; <i32>:15 [#uses=0]
+ unreachable
+
+invcont3376: ; preds = %eh_then3370
+ %tmp3377 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp3377( )
+ to label %invcont3378 unwind label %unwind3374
+
+invcont3378: ; preds = %invcont3376
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([25 x i8]* @.str23 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.104.1478 to i32) to i64), i64 32)) )
+ to label %cleanup3387 unwind label %unwind3374
+
+cleanup3387: ; preds = %invcont3378
+ call void @__gnat_end_handler( i8* %eh_exception.396074.1 )
+ br label %finally3347
+
+finally3347: ; preds = %cleanup3387, %cleanup3362, %cleanup3340, %cleanup3311
+ %tmp3392 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=2]
+ %tmp3398 = invoke i32 @report__ident_int( i32 -5 )
+ to label %invcont3397 unwind label %unwind3393 ; <i32> [#uses=4]
+
+unwind3393: ; preds = %cond_true3555, %cond_true3543, %cond_next3451, %cond_true3448, %cond_true3420, %finally3347
+ %eh_ptr3394 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select3396 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3394, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp3392 )
+ %eh_typeid3571 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp3573 = icmp eq i32 %eh_select3396, %eh_typeid3571 ; <i1> [#uses=1]
+ br i1 %tmp3573, label %eh_then3574, label %Unwind
+
+invcont3397: ; preds = %finally3347
+ %tmp3405 = icmp slt i32 %tmp3398, %tmp384 ; <i1> [#uses=2]
+ %tmp3413 = icmp sgt i32 %tmp3398, %tmp394 ; <i1> [#uses=1]
+ %tmp3417 = or i1 %tmp3405, %tmp3413 ; <i1> [#uses=1]
+ br i1 %tmp3417, label %cond_true3420, label %cond_next3422
+
+cond_true3420: ; preds = %invcont3397
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 238 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3393
+
+cond_next3422: ; preds = %invcont3397
+ %tmp3426 = icmp slt i32 %tmp3398, -5 ; <i1> [#uses=1]
+ br i1 %tmp3426, label %cond_true3429, label %cond_next3451
+
+cond_true3429: ; preds = %cond_next3422
+ %tmp3441 = icmp slt i32 %tmp394, -6 ; <i1> [#uses=1]
+ %tmp3445 = or i1 %tmp3405, %tmp3441 ; <i1> [#uses=1]
+ br i1 %tmp3445, label %cond_true3448, label %cond_next3451
+
+cond_true3448: ; preds = %cond_true3429
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 238 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3393
+
+cond_next3451: ; preds = %cond_true3429, %cond_next3422
+ %tmp3521 = invoke i32 @report__ident_int( i32 -5 )
+ to label %invcont3520 unwind label %unwind3393 ; <i32> [#uses=3]
+
+invcont3520: ; preds = %cond_next3451
+ %tmp3528 = icmp slt i32 %tmp3521, %tmp384 ; <i1> [#uses=1]
+ %tmp3536 = icmp sgt i32 %tmp3521, %tmp394 ; <i1> [#uses=1]
+ %tmp3540 = or i1 %tmp3528, %tmp3536 ; <i1> [#uses=1]
+ br i1 %tmp3540, label %cond_true3543, label %cond_next3545
+
+cond_true3543: ; preds = %invcont3520
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 241 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3393
+
+cond_next3545: ; preds = %invcont3520
+ %tmp3552 = icmp eq i32 %tmp3398, %tmp3521 ; <i1> [#uses=1]
+ br i1 %tmp3552, label %cleanup3565, label %cond_true3555
+
+cond_true3555: ; preds = %cond_next3545
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([30 x i8]* @.str24 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.30.904 to i32) to i64), i64 32)) )
+ to label %cleanup3565 unwind label %unwind3393
+
+cleanup3565: ; preds = %cond_true3555, %cond_next3545
+ call void @llvm.stackrestore( i8* %tmp3392 )
+ %tmp36006095 = icmp ult i8 %tmp137138, %sat.45934.0 ; <i1> [#uses=1]
+ br i1 %tmp36006095, label %cond_next3624, label %cond_true3603
+
+eh_then3574: ; preds = %unwind3393
+ invoke void @__gnat_begin_handler( i8* %eh_ptr3394 )
+ to label %invcont3580 unwind label %unwind3578
+
+unwind3578: ; preds = %invcont3582, %invcont3580, %eh_then3574
+ %eh_ptr3579 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr3394 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3579 ) ; <i32>:16 [#uses=0]
+ unreachable
+
+invcont3580: ; preds = %eh_then3574
+ %tmp3581 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp3581( )
+ to label %invcont3582 unwind label %unwind3578
+
+invcont3582: ; preds = %invcont3580
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str25 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
+ to label %cleanup3591 unwind label %unwind3578
+
+cleanup3591: ; preds = %invcont3582
+ call void @__gnat_end_handler( i8* %eh_ptr3394 )
+ %tmp3600 = icmp ult i8 %tmp137138, %sat.45934.0 ; <i1> [#uses=1]
+ br i1 %tmp3600, label %cond_next3624, label %cond_true3603
+
+cond_true3603: ; preds = %cleanup3591, %cleanup3565
+ %tmp3606 = icmp ult i8 %sat.45934.0, %tmp204205 ; <i1> [#uses=1]
+ %tmp3610 = icmp ugt i8 %tmp137138, %tmp272273 ; <i1> [#uses=1]
+ %tmp3614 = or i1 %tmp3606, %tmp3610 ; <i1> [#uses=1]
+ br i1 %tmp3614, label %cond_true3617, label %cond_next3624
+
+cond_true3617: ; preds = %cond_true3603
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 250 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3618
+
+unwind3618: ; preds = %bb3743, %cond_true3729, %bb3689, %cond_true3675, %bb3635, %cond_true3617
+ %wed.3 = phi i8 [ %tmp238239, %cond_true3617 ], [ %wed.1, %bb3743 ], [ %tmp238239, %bb3689 ], [ %tmp238239, %bb3635 ], [ %tmp238239, %cond_true3675 ], [ %tmp238239, %cond_true3729 ] ; <i8> [#uses=1]
+ %tue.3 = phi i8 [ %tmp204205, %cond_true3617 ], [ %tue.2, %bb3743 ], [ %tue.2, %bb3689 ], [ %tue.1, %bb3635 ], [ %tue.2, %cond_true3675 ], [ %tue.2, %cond_true3729 ] ; <i8> [#uses=1]
+ %mon.3 = phi i8 [ %tmp170171, %cond_true3617 ], [ %mon.2, %bb3743 ], [ %mon.1, %bb3689 ], [ %tmp170171, %bb3635 ], [ %tmp170171, %cond_true3675 ], [ %mon.2, %cond_true3729 ] ; <i8> [#uses=1]
+ %eh_ptr3619 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select3621 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3619, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %eh_typeid3854 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp3856 = icmp eq i32 %eh_select3621, %eh_typeid3854 ; <i1> [#uses=1]
+ br i1 %tmp3856, label %eh_then3857, label %Unwind
+
+cond_next3624: ; preds = %cond_true3603, %cleanup3591, %cleanup3565
+ %tmp3629 = icmp ugt i8 %sat.45934.0, %tmp137138 ; <i1> [#uses=1]
+ br i1 %tmp3629, label %cond_next3653, label %bb3635
+
+bb3635: ; preds = %cond_next3649, %cond_next3624
+ %indvar6258 = phi i8 [ %indvar.next16, %cond_next3649 ], [ 0, %cond_next3624 ] ; <i8> [#uses=2]
+ %tue.1 = phi i8 [ %tue.0, %cond_next3649 ], [ %tmp204205, %cond_next3624 ] ; <i8> [#uses=2]
+ %tmp3637 = invoke i8 @report__equal( i32 2, i32 2 )
+ to label %invcont3636 unwind label %unwind3618 ; <i8> [#uses=1]
+
+invcont3636: ; preds = %bb3635
+ %i3633.4 = add i8 %indvar6258, %sat.45934.0 ; <i8> [#uses=1]
+ %tmp3638 = icmp eq i8 %tmp3637, 0 ; <i1> [#uses=1]
+ %tue.0 = select i1 %tmp3638, i8 %tue.1, i8 2 ; <i8> [#uses=2]
+ %tmp3645 = icmp eq i8 %i3633.4, %tmp137138 ; <i1> [#uses=1]
+ br i1 %tmp3645, label %cond_next3653, label %cond_next3649
+
+cond_next3649: ; preds = %invcont3636
+ %indvar.next16 = add i8 %indvar6258, 1 ; <i8> [#uses=1]
+ br label %bb3635
+
+cond_next3653: ; preds = %invcont3636, %cond_next3624
+ %tue.2 = phi i8 [ %tmp204205, %cond_next3624 ], [ %tue.0, %invcont3636 ] ; <i8> [#uses=6]
+ %tmp3658 = icmp ult i8 %tmp238239, %tmp306307 ; <i1> [#uses=1]
+ br i1 %tmp3658, label %cond_next3678, label %cond_true3661
+
+cond_true3661: ; preds = %cond_next3653
+ %tmp3664 = icmp ult i8 %tmp306307, %tmp204205 ; <i1> [#uses=1]
+ %tmp3668 = icmp ugt i8 %tmp238239, %tmp272273 ; <i1> [#uses=1]
+ %tmp3672 = or i1 %tmp3664, %tmp3668 ; <i1> [#uses=1]
+ br i1 %tmp3672, label %cond_true3675, label %cond_next3678
+
+cond_true3675: ; preds = %cond_true3661
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 257 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3618
+
+cond_next3678: ; preds = %cond_true3661, %cond_next3653
+ %tmp3683 = icmp ugt i8 %tmp306307, %tmp238239 ; <i1> [#uses=1]
+ br i1 %tmp3683, label %cond_next3707, label %bb3689
+
+bb3689: ; preds = %cond_next3703, %cond_next3678
+ %indvar6261 = phi i8 [ %indvar.next18, %cond_next3703 ], [ 0, %cond_next3678 ] ; <i8> [#uses=2]
+ %mon.1 = phi i8 [ %mon.0, %cond_next3703 ], [ %tmp170171, %cond_next3678 ] ; <i8> [#uses=2]
+ %tmp3691 = invoke i8 @report__equal( i32 2, i32 2 )
+ to label %invcont3690 unwind label %unwind3618 ; <i8> [#uses=1]
+
+invcont3690: ; preds = %bb3689
+ %i3687.4 = add i8 %indvar6261, %tmp306307 ; <i8> [#uses=1]
+ %tmp3692 = icmp eq i8 %tmp3691, 0 ; <i1> [#uses=1]
+ %mon.0 = select i1 %tmp3692, i8 %mon.1, i8 1 ; <i8> [#uses=2]
+ %tmp3699 = icmp eq i8 %i3687.4, %tmp238239 ; <i1> [#uses=1]
+ br i1 %tmp3699, label %cond_next3707, label %cond_next3703
+
+cond_next3703: ; preds = %invcont3690
+ %indvar.next18 = add i8 %indvar6261, 1 ; <i8> [#uses=1]
+ br label %bb3689
+
+cond_next3707: ; preds = %invcont3690, %cond_next3678
+ %mon.2 = phi i8 [ %tmp170171, %cond_next3678 ], [ %mon.0, %invcont3690 ] ; <i8> [#uses=8]
+ %tmp3712 = icmp ult i8 %tmp137138, %mon.2 ; <i1> [#uses=1]
+ br i1 %tmp3712, label %cond_next3732, label %cond_true3715
+
+cond_true3715: ; preds = %cond_next3707
+ %tmp3718 = icmp ult i8 %mon.2, %tmp204205 ; <i1> [#uses=1]
+ %tmp3722 = icmp ugt i8 %tmp137138, %tmp272273 ; <i1> [#uses=1]
+ %tmp3726 = or i1 %tmp3718, %tmp3722 ; <i1> [#uses=1]
+ br i1 %tmp3726, label %cond_true3729, label %cond_next3732
+
+cond_true3729: ; preds = %cond_true3715
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 264 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3618
+
+cond_next3732: ; preds = %cond_true3715, %cond_next3707
+ %tmp3737 = icmp ugt i8 %mon.2, %tmp137138 ; <i1> [#uses=1]
+ br i1 %tmp3737, label %finally3852, label %bb3743
+
+bb3743: ; preds = %cond_next3757, %cond_next3732
+ %indvar6265 = phi i8 [ %indvar.next20, %cond_next3757 ], [ 0, %cond_next3732 ] ; <i8> [#uses=2]
+ %wed.1 = phi i8 [ %wed.0, %cond_next3757 ], [ %tmp238239, %cond_next3732 ] ; <i8> [#uses=2]
+ %tmp3745 = invoke i8 @report__equal( i32 3, i32 3 )
+ to label %invcont3744 unwind label %unwind3618 ; <i8> [#uses=1]
+
+invcont3744: ; preds = %bb3743
+ %i3741.4 = add i8 %indvar6265, %mon.2 ; <i8> [#uses=1]
+ %tmp3746 = icmp eq i8 %tmp3745, 0 ; <i1> [#uses=1]
+ %wed.0 = select i1 %tmp3746, i8 %wed.1, i8 3 ; <i8> [#uses=2]
+ %tmp3753 = icmp eq i8 %i3741.4, %tmp137138 ; <i1> [#uses=1]
+ br i1 %tmp3753, label %finally3852, label %cond_next3757
+
+cond_next3757: ; preds = %invcont3744
+ %indvar.next20 = add i8 %indvar6265, 1 ; <i8> [#uses=1]
+ br label %bb3743
+
+eh_then3857: ; preds = %unwind3618
+ invoke void @__gnat_begin_handler( i8* %eh_ptr3619 )
+ to label %invcont3863 unwind label %unwind3861
+
+unwind3861: ; preds = %invcont3865, %invcont3863, %eh_then3857
+ %eh_ptr3862 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr3619 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr3862 ) ; <i32>:17 [#uses=0]
+ unreachable
+
+invcont3863: ; preds = %eh_then3857
+ %tmp3864 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp3864( )
+ to label %invcont3865 unwind label %unwind3861
+
+invcont3865: ; preds = %invcont3863
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str26 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
+ to label %cleanup3874 unwind label %unwind3861
+
+cleanup3874: ; preds = %invcont3865
+ call void @__gnat_end_handler( i8* %eh_ptr3619 )
+ br label %finally3852
+
+finally3852: ; preds = %cleanup3874, %invcont3744, %cond_next3732
+ %wed.4 = phi i8 [ %wed.3, %cleanup3874 ], [ %tmp238239, %cond_next3732 ], [ %wed.0, %invcont3744 ] ; <i8> [#uses=4]
+ %tue.4 = phi i8 [ %tue.3, %cleanup3874 ], [ %tue.2, %cond_next3732 ], [ %tue.2, %invcont3744 ] ; <i8> [#uses=13]
+ %mon.4 = phi i8 [ %mon.3, %cleanup3874 ], [ %mon.2, %cond_next3732 ], [ %mon.2, %invcont3744 ] ; <i8> [#uses=18]
+ %tmp3885 = invoke i32 @report__ident_int( i32 -5 )
+ to label %invcont3884 unwind label %unwind3880 ; <i32> [#uses=4]
+
+unwind3880: ; preds = %cond_true4138, %invcont4122, %cond_next4120, %cond_true4117, %cond_true4027, %cond_next3938, %cond_true3935, %cond_true3907, %finally3852
+ %eh_ptr3881 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select3883 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr3881, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %eh_typeid4149 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp4151 = icmp eq i32 %eh_select3883, %eh_typeid4149 ; <i1> [#uses=1]
+ br i1 %tmp4151, label %eh_then4152, label %Unwind
+
+invcont3884: ; preds = %finally3852
+ %tmp3892 = icmp slt i32 %tmp3885, %tmp384 ; <i1> [#uses=2]
+ %tmp3900 = icmp sgt i32 %tmp3885, %tmp394 ; <i1> [#uses=1]
+ %tmp3904 = or i1 %tmp3892, %tmp3900 ; <i1> [#uses=1]
+ br i1 %tmp3904, label %cond_true3907, label %cond_next3909
+
+cond_true3907: ; preds = %invcont3884
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 312 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3880
+
+cond_next3909: ; preds = %invcont3884
+ %tmp3913 = icmp slt i32 %tmp3885, -5 ; <i1> [#uses=1]
+ br i1 %tmp3913, label %cond_true3916, label %cond_next3938
+
+cond_true3916: ; preds = %cond_next3909
+ %tmp3928 = icmp slt i32 %tmp394, -6 ; <i1> [#uses=1]
+ %tmp3932 = or i1 %tmp3892, %tmp3928 ; <i1> [#uses=1]
+ br i1 %tmp3932, label %cond_true3935, label %cond_next3938
+
+cond_true3935: ; preds = %cond_true3916
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 312 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3880
+
+cond_next3938: ; preds = %cond_true3916, %cond_next3909
+ %tmp4005 = invoke i32 @report__ident_int( i32 -5 )
+ to label %invcont4004 unwind label %unwind3880 ; <i32> [#uses=6]
+
+invcont4004: ; preds = %cond_next3938
+ %tmp4012 = icmp slt i32 %tmp4005, %tmp384 ; <i1> [#uses=2]
+ %tmp4020 = icmp sgt i32 %tmp4005, %tmp394 ; <i1> [#uses=1]
+ %tmp4024 = or i1 %tmp4012, %tmp4020 ; <i1> [#uses=1]
+ br i1 %tmp4024, label %cond_true4027, label %cond_next4029
+
+cond_true4027: ; preds = %invcont4004
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 313 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3880
+
+cond_next4029: ; preds = %invcont4004
+ %tmp4071 = icmp sgt i32 %tmp4005, -6 ; <i1> [#uses=1]
+ %tmp4078 = add i32 %tmp4005, 1073741823 ; <i32> [#uses=1]
+ %iftmp.132.0 = select i1 %tmp4071, i32 %tmp4078, i32 1073741818 ; <i32> [#uses=1]
+ %tmp4085 = sub i32 %iftmp.132.0, %tmp4005 ; <i32> [#uses=1]
+ %tmp4086 = shl i32 %tmp4085, 2 ; <i32> [#uses=2]
+ %tmp4087 = add i32 %tmp4086, 4 ; <i32> [#uses=1]
+ %tmp4088 = icmp sgt i32 %tmp4087, -1 ; <i1> [#uses=1]
+ %tmp4087.op = add i32 %tmp4086, 7 ; <i32> [#uses=1]
+ %tmp4087.op.op = and i32 %tmp4087.op, -4 ; <i32> [#uses=1]
+ %tmp4091 = select i1 %tmp4088, i32 %tmp4087.op.op, i32 0 ; <i32> [#uses=1]
+ %tmp4095 = icmp slt i32 %tmp4005, -5 ; <i1> [#uses=1]
+ br i1 %tmp4095, label %cond_true4098, label %cond_next4120
+
+cond_true4098: ; preds = %cond_next4029
+ %tmp4110 = icmp slt i32 %tmp394, -6 ; <i1> [#uses=1]
+ %tmp4114 = or i1 %tmp4012, %tmp4110 ; <i1> [#uses=1]
+ br i1 %tmp4114, label %cond_true4117, label %cond_next4120
+
+cond_true4117: ; preds = %cond_true4098
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 313 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind3880
+
+cond_next4120: ; preds = %cond_true4098, %cond_next4029
+ %tmp4123 = invoke i8* @__gnat_malloc( i32 %tmp4091 )
+ to label %invcont4122 unwind label %unwind3880 ; <i8*> [#uses=0]
+
+invcont4122: ; preds = %cond_next4120
+ %tmp41254128 = sext i32 %tmp3885 to i64 ; <i64> [#uses=1]
+ %tmp4129 = sub i64 -5, %tmp41254128 ; <i64> [#uses=2]
+ %tmp4134 = invoke i32 @report__ident_int( i32 0 )
+ to label %invcont4133 unwind label %unwind3880 ; <i32> [#uses=1]
+
+invcont4133: ; preds = %invcont4122
+ %tmp4130 = icmp sgt i64 %tmp4129, -1 ; <i1> [#uses=1]
+ %tmp4129.cast = trunc i64 %tmp4129 to i32 ; <i32> [#uses=1]
+ %max41314132 = select i1 %tmp4130, i32 %tmp4129.cast, i32 0 ; <i32> [#uses=1]
+ %tmp4135 = icmp eq i32 %max41314132, %tmp4134 ; <i1> [#uses=1]
+ br i1 %tmp4135, label %finally4147, label %cond_true4138
+
+cond_true4138: ; preds = %invcont4133
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([31 x i8]* @.str27 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.98.1466 to i32) to i64), i64 32)) )
+ to label %finally4147 unwind label %unwind3880
+
+eh_then4152: ; preds = %unwind3880
+ invoke void @__gnat_begin_handler( i8* %eh_ptr3881 )
+ to label %invcont4158 unwind label %unwind4156
+
+unwind4156: ; preds = %invcont4160, %invcont4158, %eh_then4152
+ %eh_ptr4157 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr3881 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4157 ) ; <i32>:18 [#uses=0]
+ unreachable
+
+invcont4158: ; preds = %eh_then4152
+ %tmp4159 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp4159( )
+ to label %invcont4160 unwind label %unwind4156
+
+invcont4160: ; preds = %invcont4158
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str28 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
+ to label %cleanup4169 unwind label %unwind4156
+
+cleanup4169: ; preds = %invcont4160
+ call void @__gnat_end_handler( i8* %eh_ptr3881 )
+ br label %finally4147
+
+finally4147: ; preds = %cleanup4169, %cond_true4138, %invcont4133
+ %tmp4174 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=3]
+ %tmp4180 = invoke i32 @report__ident_int( i32 4 )
+ to label %invcont4179 unwind label %unwind4175 ; <i32> [#uses=6]
+
+unwind4175: ; preds = %cond_true4292, %cond_true4187, %finally4147
+ %eh_ptr4176 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select4178 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr4176, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %eh_typeid4304 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp4306 = icmp eq i32 %eh_select4178, %eh_typeid4304 ; <i1> [#uses=1]
+ br i1 %tmp4306, label %eh_then4307, label %cleanup4334
+
+invcont4179: ; preds = %finally4147
+ %tmp4184 = icmp slt i32 %tmp4180, 1 ; <i1> [#uses=1]
+ br i1 %tmp4184, label %cond_true4187, label %cond_next4189
+
+cond_true4187: ; preds = %invcont4179
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 329 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind4175
+
+cond_next4189: ; preds = %invcont4179
+ %tmp4231 = icmp sgt i32 %tmp4180, 2 ; <i1> [#uses=2]
+ %tmp4238 = add i32 %tmp4180, 1073741823 ; <i32> [#uses=1]
+ %iftmp.138.0 = select i1 %tmp4231, i32 %tmp4238, i32 2 ; <i32> [#uses=1]
+ %tmp4245 = sub i32 %iftmp.138.0, %tmp4180 ; <i32> [#uses=1]
+ %tmp4246 = shl i32 %tmp4245, 2 ; <i32> [#uses=2]
+ %tmp4247 = add i32 %tmp4246, 4 ; <i32> [#uses=1]
+ %tmp4248 = icmp sgt i32 %tmp4247, -1 ; <i1> [#uses=1]
+ %tmp4247.op = add i32 %tmp4246, 7 ; <i32> [#uses=1]
+ %tmp4247.op.op = and i32 %tmp4247.op, -4 ; <i32> [#uses=1]
+ %tmp4251 = select i1 %tmp4248, i32 %tmp4247.op.op, i32 0 ; <i32> [#uses=1]
+ %tmp4253 = alloca i8, i32 %tmp4251 ; <i8*> [#uses=2]
+ %tmp42534254 = bitcast i8* %tmp4253 to i32* ; <i32*> [#uses=1]
+ br i1 %tmp4231, label %bb4276, label %cond_next4266.preheader
+
+cond_next4266.preheader: ; preds = %cond_next4189
+ %J152b.36147.3 = add i32 %tmp4180, 1 ; <i32> [#uses=1]
+ br label %cond_next4266
+
+cond_next4266: ; preds = %cond_next4266, %cond_next4266.preheader
+ %indvar6268 = phi i32 [ 0, %cond_next4266.preheader ], [ %indvar.next22, %cond_next4266 ] ; <i32> [#uses=3]
+ %tmp4273 = getelementptr i32* %tmp42534254, i32 %indvar6268 ; <i32*> [#uses=1]
+ store i32 5, i32* %tmp4273
+ %tmp4275 = add i32 %J152b.36147.3, %indvar6268 ; <i32> [#uses=1]
+ %tmp42626151 = icmp sgt i32 %tmp4275, 2 ; <i1> [#uses=1]
+ %indvar.next22 = add i32 %indvar6268, 1 ; <i32> [#uses=1]
+ br i1 %tmp42626151, label %bb4276, label %cond_next4266
+
+bb4276: ; preds = %cond_next4266, %cond_next4189
+ %tmp4280 = sub i32 2, %tmp4180 ; <i32> [#uses=1]
+ %tmp4281 = icmp eq i32 %tmp4280, 1 ; <i1> [#uses=1]
+ br i1 %tmp4281, label %cond_true4284, label %cleanup4336
+
+cond_true4284: ; preds = %bb4276
+ %tmp4288 = call i32 (i8*, i8*, i32, ...)* @memcmp( i8* %tmp4253, i8* bitcast ([2 x i32]* @C.143.1720 to i8*), i32 8 ) ; <i32> [#uses=1]
+ %tmp4289 = icmp eq i32 %tmp4288, 0 ; <i1> [#uses=1]
+ br i1 %tmp4289, label %cond_true4292, label %cleanup4336
+
+cond_true4292: ; preds = %cond_true4284
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([37 x i8]* @.str29 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.146.1725 to i32) to i64), i64 32)) )
+ to label %cleanup4336 unwind label %unwind4175
+
+eh_then4307: ; preds = %unwind4175
+ invoke void @__gnat_begin_handler( i8* %eh_ptr4176 )
+ to label %invcont4313 unwind label %unwind4311
+
+unwind4311: ; preds = %invcont4315, %invcont4313, %eh_then4307
+ %eh_ptr4312 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_ptr4176 )
+ to label %cleanup4334 unwind label %unwind4326
+
+invcont4313: ; preds = %eh_then4307
+ %tmp4314 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp4314( )
+ to label %invcont4315 unwind label %unwind4311
+
+invcont4315: ; preds = %invcont4313
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str30 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
+ to label %cleanup4324 unwind label %unwind4311
+
+cleanup4324: ; preds = %invcont4315
+ invoke void @__gnat_end_handler( i8* %eh_ptr4176 )
+ to label %cleanup4336 unwind label %unwind4326
+
+unwind4326: ; preds = %cleanup4324, %unwind4311
+ %eh_ptr4327 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp4174 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4327 ) ; <i32>:19 [#uses=0]
+ unreachable
+
+cleanup4334: ; preds = %unwind4311, %unwind4175
+ %eh_exception.50 = phi i8* [ %eh_ptr4176, %unwind4175 ], [ %eh_ptr4312, %unwind4311 ] ; <i8*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp4174 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_exception.50 ) ; <i32>:20 [#uses=0]
+ unreachable
+
+cleanup4336: ; preds = %cleanup4324, %cond_true4292, %cond_true4284, %bb4276
+ call void @llvm.stackrestore( i8* %tmp4174 )
+ %tmp4338 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=6]
+ %tmp4379 = alloca i8, i32 %max1395 ; <i8*> [#uses=9]
+ %tmp4421 = alloca i8, i32 %max1395 ; <i8*> [#uses=3]
+ %tmp4428 = icmp ugt i8 %tmp204205, %tmp272273 ; <i1> [#uses=1]
+ br i1 %tmp4428, label %cond_next4458, label %bb4433
+
+bb4433: ; preds = %cleanup4336
+ store i8 %wed.4, i8* %tmp4421
+ %tmp4442 = icmp eq i8 %tmp272273, %tmp204205 ; <i1> [#uses=1]
+ br i1 %tmp4442, label %cond_next4458, label %cond_next4446.preheader
+
+cond_next4446.preheader: ; preds = %bb4433
+ %J161b.26152.2 = add i8 %tmp204205, 1 ; <i8> [#uses=1]
+ br label %cond_next4446
+
+cond_next4446: ; preds = %cond_next4446, %cond_next4446.preheader
+ %indvar6271 = phi i8 [ 0, %cond_next4446.preheader ], [ %indvar.next24, %cond_next4446 ] ; <i8> [#uses=2]
+ %tmp4448 = add i8 %J161b.26152.2, %indvar6271 ; <i8> [#uses=2]
+ %tmp443444356156 = zext i8 %tmp4448 to i32 ; <i32> [#uses=1]
+ %tmp44376157 = sub i32 %tmp443444356156, %tmp13571358 ; <i32> [#uses=1]
+ %tmp44386158 = getelementptr i8* %tmp4421, i32 %tmp44376157 ; <i8*> [#uses=1]
+ store i8 %wed.4, i8* %tmp44386158
+ %tmp44426160 = icmp eq i8 %tmp272273, %tmp4448 ; <i1> [#uses=1]
+ %indvar.next24 = add i8 %indvar6271, 1 ; <i8> [#uses=1]
+ br i1 %tmp44426160, label %cond_next4458, label %cond_next4446
+
+unwind4453: ; preds = %cond_true4609, %cond_true4504, %cond_true4481
+ %eh_ptr4454 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=4]
+ %eh_select4456 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr4454, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %eh_typeid4710 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp4712 = icmp eq i32 %eh_select4456, %eh_typeid4710 ; <i1> [#uses=1]
+ br i1 %tmp4712, label %eh_then4713, label %cleanup4740
+
+cond_next4458: ; preds = %cond_next4446, %bb4433, %cleanup4336
+ call void @llvm.memcpy.i32( i8* %tmp4379, i8* %tmp4421, i32 %max1395, i32 1 )
+ %tmp4464 = icmp ult i8 %tmp137138, %mon.4 ; <i1> [#uses=2]
+ br i1 %tmp4464, label %cond_next4484, label %cond_true4467
+
+cond_true4467: ; preds = %cond_next4458
+ %tmp4470 = icmp ult i8 %mon.4, %tmp204205 ; <i1> [#uses=1]
+ %tmp4474 = icmp ugt i8 %tmp137138, %tmp272273 ; <i1> [#uses=1]
+ %tmp4478 = or i1 %tmp4470, %tmp4474 ; <i1> [#uses=1]
+ br i1 %tmp4478, label %cond_true4481, label %cond_next4484
+
+cond_true4481: ; preds = %cond_true4467
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 340 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind4453
+
+cond_next4484: ; preds = %cond_true4467, %cond_next4458
+ %tmp4487 = icmp ult i8 %mon.4, %tue.4 ; <i1> [#uses=2]
+ br i1 %tmp4487, label %cond_next4507, label %cond_true4490
+
+cond_true4490: ; preds = %cond_next4484
+ %tmp4493 = icmp ult i8 %tue.4, %tmp204205 ; <i1> [#uses=1]
+ %tmp4497 = icmp ugt i8 %mon.4, %tmp272273 ; <i1> [#uses=1]
+ %tmp4501 = or i1 %tmp4497, %tmp4493 ; <i1> [#uses=1]
+ br i1 %tmp4501, label %cond_true4504, label %cond_next4507
+
+cond_true4504: ; preds = %cond_true4490
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 340 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind4453
+
+cond_next4507: ; preds = %cond_true4490, %cond_next4484
+ %tmp45904591 = zext i8 %mon.4 to i64 ; <i64> [#uses=3]
+ %tmp45924593 = zext i8 %tue.4 to i64 ; <i64> [#uses=1]
+ %tmp4594 = sub i64 %tmp45904591, %tmp45924593 ; <i64> [#uses=1]
+ %tmp4595 = add i64 %tmp4594, 1 ; <i64> [#uses=2]
+ %tmp4596 = icmp sgt i64 %tmp4595, -1 ; <i1> [#uses=1]
+ %max4597 = select i1 %tmp4596, i64 %tmp4595, i64 0 ; <i64> [#uses=1]
+ %tmp45984599 = zext i8 %tmp137138 to i64 ; <i64> [#uses=1]
+ %tmp4602 = sub i64 %tmp45984599, %tmp45904591 ; <i64> [#uses=1]
+ %tmp4603 = add i64 %tmp4602, 1 ; <i64> [#uses=3]
+ %tmp4604 = icmp sgt i64 %tmp4603, -1 ; <i1> [#uses=2]
+ %max4605 = select i1 %tmp4604, i64 %tmp4603, i64 0 ; <i64> [#uses=1]
+ %tmp4606 = icmp eq i64 %max4597, %max4605 ; <i1> [#uses=1]
+ br i1 %tmp4606, label %cond_next4611, label %cond_true4609
+
+cond_true4609: ; preds = %cond_next4507
+ invoke void @__gnat_rcheck_07( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 340 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind4453
+
+cond_next4611: ; preds = %cond_next4507
+ %tmp46124613 = zext i8 %tue.4 to i32 ; <i32> [#uses=1]
+ %tmp4616 = sub i32 %tmp46124613, %tmp13571358 ; <i32> [#uses=2]
+ %tmp46244625 = zext i8 %mon.4 to i32 ; <i32> [#uses=1]
+ %tmp4628 = sub i32 %tmp46244625, %tmp13571358 ; <i32> [#uses=3]
+ %tmp4636 = icmp slt i32 %tmp4628, %tmp4616 ; <i1> [#uses=1]
+ %tmp4677 = icmp ugt i8 %tue.4, %mon.4 ; <i1> [#uses=2]
+ br i1 %tmp4636, label %cond_false4673, label %cond_true4639
+
+cond_true4639: ; preds = %cond_next4611
+ br i1 %tmp4677, label %cleanup4742, label %bb4648.preheader
+
+bb4648.preheader: ; preds = %cond_true4639
+ %tmp46556217 = getelementptr i8* %tmp4379, i32 %tmp4628 ; <i8*> [#uses=1]
+ %tmp46566218 = load i8* %tmp46556217 ; <i8> [#uses=1]
+ %tmp46596220 = getelementptr i8* %tmp4379, i32 %tmp4616 ; <i8*> [#uses=1]
+ store i8 %tmp46566218, i8* %tmp46596220
+ %tmp46646223 = icmp eq i8 %tue.4, %mon.4 ; <i1> [#uses=1]
+ br i1 %tmp46646223, label %cleanup4742, label %cond_next4668.preheader
+
+cond_next4668.preheader: ; preds = %bb4648.preheader
+ %tmp46616222.in = add i8 %mon.4, 1 ; <i8> [#uses=1]
+ %L174b.26213 = add i8 %tue.4, 1 ; <i8> [#uses=1]
+ %tmp.27 = sub i8 %mon.4, %tue.4 ; <i8> [#uses=1]
+ br label %cond_next4668
+
+cond_next4668: ; preds = %cond_next4668, %cond_next4668.preheader
+ %indvar6275 = phi i8 [ 0, %cond_next4668.preheader ], [ %indvar.next26, %cond_next4668 ] ; <i8> [#uses=3]
+ %tmp46616222 = add i8 %tmp46616222.in, %indvar6275 ; <i8> [#uses=1]
+ %tmp4670 = add i8 %L174b.26213, %indvar6275 ; <i8> [#uses=1]
+ %tmp46494650 = zext i8 %tmp4670 to i32 ; <i32> [#uses=1]
+ %tmp46514652 = zext i8 %tmp46616222 to i32 ; <i32> [#uses=1]
+ %tmp4654 = sub i32 %tmp46514652, %tmp13571358 ; <i32> [#uses=1]
+ %tmp4655 = getelementptr i8* %tmp4379, i32 %tmp4654 ; <i8*> [#uses=1]
+ %tmp4656 = load i8* %tmp4655 ; <i8> [#uses=1]
+ %tmp4658 = sub i32 %tmp46494650, %tmp13571358 ; <i32> [#uses=1]
+ %tmp4659 = getelementptr i8* %tmp4379, i32 %tmp4658 ; <i8*> [#uses=1]
+ store i8 %tmp4656, i8* %tmp4659
+ %indvar.next26 = add i8 %indvar6275, 1 ; <i8> [#uses=2]
+ %exitcond28 = icmp eq i8 %indvar.next26, %tmp.27 ; <i1> [#uses=1]
+ br i1 %exitcond28, label %cleanup4742, label %cond_next4668
+
+cond_false4673: ; preds = %cond_next4611
+ br i1 %tmp4677, label %cleanup4742, label %bb4682.preheader
+
+bb4682.preheader: ; preds = %cond_false4673
+ %tmp468546866228 = and i32 %tmp123, 255 ; <i32> [#uses=1]
+ %tmp46886229 = sub i32 %tmp468546866228, %tmp13571358 ; <i32> [#uses=1]
+ %tmp46896230 = getelementptr i8* %tmp4379, i32 %tmp46886229 ; <i8*> [#uses=1]
+ %tmp46906231 = load i8* %tmp46896230 ; <i8> [#uses=1]
+ %tmp46936233 = getelementptr i8* %tmp4379, i32 %tmp4628 ; <i8*> [#uses=1]
+ store i8 %tmp46906231, i8* %tmp46936233
+ %tmp46986236 = icmp eq i8 %mon.4, %tue.4 ; <i1> [#uses=1]
+ br i1 %tmp46986236, label %cleanup4742, label %cond_next4702.preheader
+
+cond_next4702.preheader: ; preds = %bb4682.preheader
+ %tmp46956235.in = add i8 %tmp137138, -1 ; <i8> [#uses=1]
+ %L172b.26226 = add i8 %mon.4, -1 ; <i8> [#uses=1]
+ %tmp.32 = sub i8 %mon.4, %tue.4 ; <i8> [#uses=1]
+ br label %cond_next4702
+
+cond_next4702: ; preds = %cond_next4702, %cond_next4702.preheader
+ %indvar6278 = phi i8 [ 0, %cond_next4702.preheader ], [ %indvar.next30, %cond_next4702 ] ; <i8> [#uses=3]
+ %tmp46956235 = sub i8 %tmp46956235.in, %indvar6278 ; <i8> [#uses=1]
+ %tmp4704 = sub i8 %L172b.26226, %indvar6278 ; <i8> [#uses=1]
+ %tmp46834684 = zext i8 %tmp4704 to i32 ; <i32> [#uses=1]
+ %tmp46854686 = zext i8 %tmp46956235 to i32 ; <i32> [#uses=1]
+ %tmp4688 = sub i32 %tmp46854686, %tmp13571358 ; <i32> [#uses=1]
+ %tmp4689 = getelementptr i8* %tmp4379, i32 %tmp4688 ; <i8*> [#uses=1]
+ %tmp4690 = load i8* %tmp4689 ; <i8> [#uses=1]
+ %tmp4692 = sub i32 %tmp46834684, %tmp13571358 ; <i32> [#uses=1]
+ %tmp4693 = getelementptr i8* %tmp4379, i32 %tmp4692 ; <i8*> [#uses=1]
+ store i8 %tmp4690, i8* %tmp4693
+ %indvar.next30 = add i8 %indvar6278, 1 ; <i8> [#uses=2]
+ %exitcond33 = icmp eq i8 %indvar.next30, %tmp.32 ; <i1> [#uses=1]
+ br i1 %exitcond33, label %cleanup4742, label %cond_next4702
+
+eh_then4713: ; preds = %unwind4453
+ invoke void @__gnat_begin_handler( i8* %eh_ptr4454 )
+ to label %invcont4719 unwind label %unwind4717
+
+unwind4717: ; preds = %invcont4719, %eh_then4713
+ %eh_ptr4718 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ invoke void @__gnat_end_handler( i8* %eh_ptr4454 )
+ to label %cleanup4740 unwind label %unwind4732
+
+invcont4719: ; preds = %eh_then4713
+ %tmp4720 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp4720( )
+ to label %UnifiedReturnBlock35 unwind label %unwind4717
+
+unwind4732: ; preds = %unwind4717
+ %eh_ptr4733 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp4338 )
+ call void @llvm.stackrestore( i8* %tmp4338 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4733 ) ; <i32>:21 [#uses=0]
+ unreachable
+
+cleanup4740: ; preds = %unwind4717, %unwind4453
+ %eh_exception.53 = phi i8* [ %eh_ptr4454, %unwind4453 ], [ %eh_ptr4718, %unwind4717 ] ; <i8*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp4338 )
+ call void @llvm.stackrestore( i8* %tmp4338 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_exception.53 ) ; <i32>:22 [#uses=0]
+ unreachable
+
+cleanup4742: ; preds = %cond_next4702, %bb4682.preheader, %cond_false4673, %cond_next4668, %bb4648.preheader, %cond_true4639
+ call void @llvm.stackrestore( i8* %tmp4338 )
+ call void @llvm.stackrestore( i8* %tmp4338 )
+ %tmp4749 = call i8* @llvm.stacksave( ) ; <i8*> [#uses=2]
+ br i1 %tmp4464, label %cond_next4776, label %UnifiedReturnBlock35
+
+unwind4770: ; preds = %cond_next4776
+ %eh_ptr4771 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select4773 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr4771, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp4749 )
+ %eh_typeid4874 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp4876 = icmp eq i32 %eh_select4773, %eh_typeid4874 ; <i1> [#uses=1]
+ br i1 %tmp4876, label %eh_then4877, label %Unwind
+
+cond_next4776: ; preds = %cleanup4742
+ %tmp4856.cast = trunc i64 %tmp4603 to i32 ; <i32> [#uses=1]
+ %max48584859 = select i1 %tmp4604, i32 %tmp4856.cast, i32 0 ; <i32> [#uses=1]
+ %tmp4861 = invoke i8 @report__equal( i32 %max48584859, i32 0 )
+ to label %invcont4860 unwind label %unwind4770 ; <i8> [#uses=1]
+
+invcont4860: ; preds = %cond_next4776
+ %tmp4862 = icmp eq i8 %tmp4861, 0 ; <i1> [#uses=1]
+ %tue.8 = select i1 %tmp4862, i8 %tue.4, i8 2 ; <i8> [#uses=3]
+ call void @llvm.stackrestore( i8* %tmp4749 )
+ %tmp49016170 = icmp ult i8 %mon.4, %tue.8 ; <i1> [#uses=1]
+ br i1 %tmp49016170, label %cond_next4925, label %cond_true4904
+
+eh_then4877: ; preds = %unwind4770
+ invoke void @__gnat_begin_handler( i8* %eh_ptr4771 )
+ to label %invcont4883 unwind label %unwind4881
+
+unwind4881: ; preds = %invcont4885, %invcont4883, %eh_then4877
+ %eh_ptr4882 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr4771 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4882 ) ; <i32>:23 [#uses=0]
+ unreachable
+
+invcont4883: ; preds = %eh_then4877
+ %tmp4884 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp4884( )
+ to label %invcont4885 unwind label %unwind4881
+
+invcont4885: ; preds = %invcont4883
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([18 x i8]* @.str32 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.124.1606 to i32) to i64), i64 32)) )
+ to label %cleanup4894 unwind label %unwind4881
+
+cleanup4894: ; preds = %invcont4885
+ call void @__gnat_end_handler( i8* %eh_ptr4771 )
+ br i1 %tmp4487, label %cond_next4925, label %cond_true4904
+
+cond_true4904: ; preds = %cleanup4894, %invcont4860
+ %tue.96161.0 = phi i8 [ %tue.8, %invcont4860 ], [ %tue.4, %cleanup4894 ] ; <i8> [#uses=3]
+ %tmp4907 = icmp ult i8 %tue.96161.0, %tmp204205 ; <i1> [#uses=1]
+ %tmp4911 = icmp ugt i8 %mon.4, %tmp272273 ; <i1> [#uses=1]
+ %tmp4915 = or i1 %tmp4907, %tmp4911 ; <i1> [#uses=1]
+ br i1 %tmp4915, label %cond_true4918, label %cond_next4925
+
+cond_true4918: ; preds = %cond_true4904
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 361 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind4919
+
+unwind4919: ; preds = %cond_next4925, %cond_true4918
+ %tue.96161.2 = phi i8 [ %tue.96161.0, %cond_true4918 ], [ %tue.96161.1, %cond_next4925 ] ; <i8> [#uses=1]
+ %eh_ptr4920 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select4922 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr4920, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %eh_typeid4987 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp4989 = icmp eq i32 %eh_select4922, %eh_typeid4987 ; <i1> [#uses=1]
+ br i1 %tmp4989, label %eh_then4990, label %Unwind
+
+cond_next4925: ; preds = %cond_true4904, %cleanup4894, %invcont4860
+ %tue.96161.1 = phi i8 [ %tue.8, %invcont4860 ], [ %tue.4, %cleanup4894 ], [ %tue.96161.0, %cond_true4904 ] ; <i8> [#uses=6]
+ %tmp49714972 = zext i8 %tue.96161.1 to i64 ; <i64> [#uses=1]
+ %tmp4973 = sub i64 %tmp45904591, %tmp49714972 ; <i64> [#uses=1]
+ %tmp4974 = add i64 %tmp4973, 1 ; <i64> [#uses=2]
+ %tmp4975 = icmp sgt i64 %tmp4974, -1 ; <i1> [#uses=1]
+ %tmp4974.cast = trunc i64 %tmp4974 to i32 ; <i32> [#uses=1]
+ %max49764977 = select i1 %tmp4975, i32 %tmp4974.cast, i32 0 ; <i32> [#uses=1]
+ %tmp4979 = invoke i8 @report__equal( i32 %max49764977, i32 0 )
+ to label %invcont4978 unwind label %unwind4919 ; <i8> [#uses=1]
+
+invcont4978: ; preds = %cond_next4925
+ %tmp4980 = icmp eq i8 %tmp4979, 0 ; <i1> [#uses=1]
+ br i1 %tmp4980, label %finally4985, label %cond_true4983
+
+cond_true4983: ; preds = %invcont4978
+ %tmp50146178 = icmp ugt i8 %tue.96161.1, 1 ; <i1> [#uses=1]
+ br i1 %tmp50146178, label %cond_next5038, label %cond_true5017
+
+eh_then4990: ; preds = %unwind4919
+ invoke void @__gnat_begin_handler( i8* %eh_ptr4920 )
+ to label %invcont4996 unwind label %unwind4994
+
+unwind4994: ; preds = %invcont4998, %invcont4996, %eh_then4990
+ %eh_ptr4995 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr4920 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr4995 ) ; <i32>:24 [#uses=0]
+ unreachable
+
+invcont4996: ; preds = %eh_then4990
+ %tmp4997 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp4997( )
+ to label %invcont4998 unwind label %unwind4994
+
+invcont4998: ; preds = %invcont4996
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([19 x i8]* @.str33 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.170.1990 to i32) to i64), i64 32)) )
+ to label %cleanup5007 unwind label %unwind4994
+
+cleanup5007: ; preds = %invcont4998
+ call void @__gnat_end_handler( i8* %eh_ptr4920 )
+ br label %finally4985
+
+finally4985: ; preds = %cleanup5007, %invcont4978
+ %tue.96161.3 = phi i8 [ %tue.96161.2, %cleanup5007 ], [ %tue.96161.1, %invcont4978 ] ; <i8> [#uses=3]
+ %tmp5014 = icmp ult i8 %mon.4, %tue.96161.3 ; <i1> [#uses=1]
+ br i1 %tmp5014, label %cond_next5038, label %cond_true5017
+
+cond_true5017: ; preds = %finally4985, %cond_true4983
+ %tue.96161.4 = phi i8 [ %tue.96161.1, %cond_true4983 ], [ %tue.96161.3, %finally4985 ] ; <i8> [#uses=3]
+ %mon.86171.0 = phi i8 [ 1, %cond_true4983 ], [ %mon.4, %finally4985 ] ; <i8> [#uses=3]
+ %tmp5020 = icmp ult i8 %tue.96161.4, %tmp204205 ; <i1> [#uses=1]
+ %tmp5024 = icmp ugt i8 %mon.86171.0, %tmp272273 ; <i1> [#uses=1]
+ %tmp5028 = or i1 %tmp5024, %tmp5020 ; <i1> [#uses=1]
+ br i1 %tmp5028, label %cond_true5031, label %cond_next5038
+
+cond_true5031: ; preds = %cond_true5017
+ invoke void @__gnat_rcheck_12( i8* getelementptr ([13 x i8]* @.str, i32 0, i32 0), i32 375 )
+ to label %UnifiedUnreachableBlock34 unwind label %unwind5032
+
+unwind5032: ; preds = %cond_next5038, %cond_true5031
+ %tue.96161.6 = phi i8 [ %tue.96161.4, %cond_true5031 ], [ %tue.96161.5, %cond_next5038 ] ; <i8> [#uses=1]
+ %mon.86171.2 = phi i8 [ %mon.86171.0, %cond_true5031 ], [ %mon.86171.1, %cond_next5038 ] ; <i8> [#uses=1]
+ %eh_ptr5033 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select5035 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr5033, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %eh_typeid5100 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp5102 = icmp eq i32 %eh_select5035, %eh_typeid5100 ; <i1> [#uses=1]
+ br i1 %tmp5102, label %eh_then5103, label %Unwind
+
+cond_next5038: ; preds = %cond_true5017, %finally4985, %cond_true4983
+ %tue.96161.5 = phi i8 [ %tue.96161.1, %cond_true4983 ], [ %tue.96161.3, %finally4985 ], [ %tue.96161.4, %cond_true5017 ] ; <i8> [#uses=4]
+ %mon.86171.1 = phi i8 [ 1, %cond_true4983 ], [ %mon.4, %finally4985 ], [ %mon.86171.0, %cond_true5017 ] ; <i8> [#uses=4]
+ %tmp50825083 = zext i8 %mon.86171.1 to i64 ; <i64> [#uses=1]
+ %tmp50845085 = zext i8 %tue.96161.5 to i64 ; <i64> [#uses=1]
+ %tmp5086 = sub i64 %tmp50825083, %tmp50845085 ; <i64> [#uses=1]
+ %tmp5087 = add i64 %tmp5086, 1 ; <i64> [#uses=2]
+ %tmp5088 = icmp sgt i64 %tmp5087, -1 ; <i1> [#uses=1]
+ %tmp5087.cast = trunc i64 %tmp5087 to i32 ; <i32> [#uses=1]
+ %max50895090 = select i1 %tmp5088, i32 %tmp5087.cast, i32 0 ; <i32> [#uses=1]
+ %tmp5092 = invoke i8 @report__equal( i32 %max50895090, i32 0 )
+ to label %invcont5091 unwind label %unwind5032 ; <i8> [#uses=1]
+
+invcont5091: ; preds = %cond_next5038
+ %tmp5093 = icmp eq i8 %tmp5092, 0 ; <i1> [#uses=1]
+ br i1 %tmp5093, label %finally5098, label %cond_true5096
+
+cond_true5096: ; preds = %invcont5091
+ br label %finally5098
+
+eh_then5103: ; preds = %unwind5032
+ invoke void @__gnat_begin_handler( i8* %eh_ptr5033 )
+ to label %invcont5109 unwind label %unwind5107
+
+unwind5107: ; preds = %invcont5111, %invcont5109, %eh_then5103
+ %eh_ptr5108 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr5033 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr5108 ) ; <i32>:25 [#uses=0]
+ unreachable
+
+invcont5109: ; preds = %eh_then5103
+ %tmp5110 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp5110( )
+ to label %invcont5111 unwind label %unwind5107
+
+invcont5111: ; preds = %invcont5109
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([19 x i8]* @.str34 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.170.1990 to i32) to i64), i64 32)) )
+ to label %cleanup5120 unwind label %unwind5107
+
+cleanup5120: ; preds = %invcont5111
+ call void @__gnat_end_handler( i8* %eh_ptr5033 )
+ br label %finally5098
+
+finally5098: ; preds = %cleanup5120, %cond_true5096, %invcont5091
+ %tue.96161.7 = phi i8 [ %tue.96161.6, %cleanup5120 ], [ %tue.96161.5, %cond_true5096 ], [ %tue.96161.5, %invcont5091 ] ; <i8> [#uses=1]
+ %mon.86171.3 = phi i8 [ %mon.86171.2, %cleanup5120 ], [ %mon.86171.1, %cond_true5096 ], [ %mon.86171.1, %invcont5091 ] ; <i8> [#uses=2]
+ %wed.6 = phi i8 [ %wed.4, %cleanup5120 ], [ 3, %cond_true5096 ], [ %wed.4, %invcont5091 ] ; <i8> [#uses=5]
+ %not.tmp5135 = icmp uge i8 %tmp137138, %sat.45934.0 ; <i1> [#uses=1]
+ %tmp5151 = icmp uge i8 %sat.45934.0, %tmp306307 ; <i1> [#uses=1]
+ %tmp5155 = icmp ule i8 %sat.45934.0, %wed.6 ; <i1> [#uses=1]
+ %tmp5159 = and i1 %tmp5155, %tmp5151 ; <i1> [#uses=1]
+ %tmp5177 = icmp ult i8 %wed.6, %tmp272273 ; <i1> [#uses=1]
+ %tmp5184 = icmp ugt i8 %wed.6, %tue.96161.7 ; <i1> [#uses=1]
+ %bothcond5907 = or i1 %tmp5177, %tmp5184 ; <i1> [#uses=2]
+ %not.bothcond5907 = xor i1 %bothcond5907, true ; <i1> [#uses=1]
+ %tmp5198 = icmp uge i8 %tmp272273, %mon.86171.3 ; <i1> [#uses=1]
+ %tmp5202 = icmp ule i8 %tmp272273, %tmp137138 ; <i1> [#uses=1]
+ %tmp5206 = and i1 %tmp5198, %tmp5202 ; <i1> [#uses=1]
+ %not.bothcond5908 = icmp uge i8 %tmp306307, %sat.45934.0 ; <i1> [#uses=1]
+ %tmp5244 = icmp uge i8 %wed.6, %tmp306307 ; <i1> [#uses=1]
+ %tmp5248 = icmp ule i8 %wed.6, %mon.86171.3 ; <i1> [#uses=1]
+ %tmp5252 = and i1 %tmp5244, %tmp5248 ; <i1> [#uses=1]
+ %tmp5164 = or i1 %not.tmp5135, %not.bothcond5908 ; <i1> [#uses=1]
+ %tmp5194 = or i1 %tmp5164, %tmp5206 ; <i1> [#uses=1]
+ %tmp5210 = or i1 %tmp5194, %tmp5159 ; <i1> [#uses=1]
+ %tmp5240 = or i1 %tmp5210, %not.bothcond5907 ; <i1> [#uses=1]
+ %tmp5256 = or i1 %tmp5240, %tmp5252 ; <i1> [#uses=1]
+ br i1 %tmp5256, label %cond_true5259, label %cond_next5271
+
+cond_true5259: ; preds = %finally5098
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([27 x i8]* @.str35 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.178.2066 to i32) to i64), i64 32)) )
+ to label %cond_next5271 unwind label %unwind5266
+
+unwind5266: ; preds = %cond_true5462, %invcont5429, %cond_next5401, %cond_true5393, %cond_next5374, %bb5359, %cond_next5347, %invcont5330, %invcont5305, %invcont5303, %invcont5294, %bb5293, %cond_next5281, %cond_next5271, %cond_true5259
+ %eh_ptr5267 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=5]
+ %eh_select5269 = call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* %eh_ptr5267, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value ) ; <i32> [#uses=1]
+ %eh_typeid5473 = call i32 @llvm.eh.typeid.for.i32( i8* bitcast (i32* @__gnat_others_value to i8*) ) ; <i32> [#uses=1]
+ %tmp5475 = icmp eq i32 %eh_select5269, %eh_typeid5473 ; <i1> [#uses=1]
+ br i1 %tmp5475, label %eh_then5476, label %Unwind
+
+cond_next5271: ; preds = %cond_true5259, %finally5098
+ %tmp5273 = invoke i32 @report__ident_int( i32 0 )
+ to label %invcont5272 unwind label %unwind5266 ; <i32> [#uses=2]
+
+invcont5272: ; preds = %cond_next5271
+ %tmp5277 = icmp slt i32 %tmp5273, 10 ; <i1> [#uses=1]
+ br i1 %tmp5277, label %bb5292, label %cond_next5281
+
+cond_next5281: ; preds = %invcont5272
+ %tmp5283 = invoke i32 @report__ident_int( i32 -10 )
+ to label %invcont5282 unwind label %unwind5266 ; <i32> [#uses=1]
+
+invcont5282: ; preds = %cond_next5281
+ %tmp5287 = icmp sgt i32 %tmp5273, %tmp5283 ; <i1> [#uses=1]
+ br i1 %tmp5287, label %bb5292, label %bb5293
+
+bb5292: ; preds = %invcont5282, %invcont5272
+ br label %bb5293
+
+bb5293: ; preds = %bb5292, %invcont5282
+ %iftmp.179.0 = phi i1 [ false, %bb5292 ], [ true, %invcont5282 ] ; <i1> [#uses=1]
+ %tmp5295 = invoke i32 @report__ident_int( i32 10 )
+ to label %invcont5294 unwind label %unwind5266 ; <i32> [#uses=1]
+
+invcont5294: ; preds = %bb5293
+ %tmp5296 = icmp slt i32 %tmp5295, 1 ; <i1> [#uses=1]
+ %tmp5304 = invoke i32 @report__ident_int( i32 0 )
+ to label %invcont5303 unwind label %unwind5266 ; <i32> [#uses=2]
+
+invcont5303: ; preds = %invcont5294
+ %tmp5306 = invoke i32 @report__ident_int( i32 -10 )
+ to label %invcont5305 unwind label %unwind5266 ; <i32> [#uses=1]
+
+invcont5305: ; preds = %invcont5303
+ %tmp5331 = invoke i32 @report__ident_int( i32 -20 )
+ to label %invcont5330 unwind label %unwind5266 ; <i32> [#uses=1]
+
+invcont5330: ; preds = %invcont5305
+ %tmp5310 = icmp slt i32 %tmp5304, %tmp5306 ; <i1> [#uses=1]
+ %tmp5318 = icmp sgt i32 %tmp5304, -11 ; <i1> [#uses=1]
+ %bothcond5909 = or i1 %tmp5310, %tmp5318 ; <i1> [#uses=1]
+ %not.bothcond5909 = xor i1 %bothcond5909, true ; <i1> [#uses=1]
+ %tmp5332 = icmp sgt i32 %tmp5331, -1 ; <i1> [#uses=1]
+ %tmp5339 = invoke i32 @report__ident_int( i32 0 )
+ to label %invcont5338 unwind label %unwind5266 ; <i32> [#uses=2]
+
+invcont5338: ; preds = %invcont5330
+ %tmp5343 = icmp slt i32 %tmp5339, 6 ; <i1> [#uses=1]
+ br i1 %tmp5343, label %bb5358, label %cond_next5347
+
+cond_next5347: ; preds = %invcont5338
+ %tmp5349 = invoke i32 @report__ident_int( i32 5 )
+ to label %invcont5348 unwind label %unwind5266 ; <i32> [#uses=1]
+
+invcont5348: ; preds = %cond_next5347
+ %tmp5353 = icmp sgt i32 %tmp5339, %tmp5349 ; <i1> [#uses=1]
+ br i1 %tmp5353, label %bb5358, label %bb5359
+
+bb5358: ; preds = %invcont5348, %invcont5338
+ br label %bb5359
+
+bb5359: ; preds = %bb5358, %invcont5348
+ %iftmp.181.0 = phi i1 [ false, %bb5358 ], [ true, %invcont5348 ] ; <i1> [#uses=1]
+ %tmp5366 = invoke i32 @report__ident_int( i32 0 )
+ to label %invcont5365 unwind label %unwind5266 ; <i32> [#uses=2]
+
+invcont5365: ; preds = %bb5359
+ %tmp5370 = icmp slt i32 %tmp5366, 7 ; <i1> [#uses=1]
+ br i1 %tmp5370, label %bb5385, label %cond_next5374
+
+cond_next5374: ; preds = %invcont5365
+ %tmp5376 = invoke i32 @report__ident_int( i32 3 )
+ to label %invcont5375 unwind label %unwind5266 ; <i32> [#uses=1]
+
+invcont5375: ; preds = %cond_next5374
+ %tmp5380 = icmp sgt i32 %tmp5366, %tmp5376 ; <i1> [#uses=1]
+ br i1 %tmp5380, label %bb5385, label %bb5386
+
+bb5385: ; preds = %invcont5375, %invcont5365
+ br label %bb5386
+
+bb5386: ; preds = %bb5385, %invcont5375
+ %iftmp.182.0 = phi i1 [ false, %bb5385 ], [ true, %invcont5375 ] ; <i1> [#uses=1]
+ %tmp5301 = or i1 %tmp5296, %iftmp.179.0 ; <i1> [#uses=1]
+ %tmp5328 = or i1 %tmp5301, %not.bothcond5909 ; <i1> [#uses=1]
+ %tmp5336 = or i1 %tmp5328, %tmp5332 ; <i1> [#uses=1]
+ %tmp5363 = or i1 %tmp5336, %iftmp.181.0 ; <i1> [#uses=1]
+ %tmp5390 = or i1 %tmp5363, %iftmp.182.0 ; <i1> [#uses=1]
+ br i1 %tmp5390, label %cond_true5393, label %cond_next5401
+
+cond_true5393: ; preds = %bb5386
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([27 x i8]* @.str36 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.178.2066 to i32) to i64), i64 32)) )
+ to label %cond_next5401 unwind label %unwind5266
+
+cond_next5401: ; preds = %cond_true5393, %bb5386
+ %tmp5430 = invoke i32 @report__ident_int( i32 0 )
+ to label %invcont5429 unwind label %unwind5266 ; <i32> [#uses=2]
+
+invcont5429: ; preds = %cond_next5401
+ %tmp5432 = invoke i32 @report__ident_int( i32 4 )
+ to label %invcont5431 unwind label %unwind5266 ; <i32> [#uses=1]
+
+invcont5431: ; preds = %invcont5429
+ %tmp5436 = icmp slt i32 %tmp5430, %tmp5432 ; <i1> [#uses=1]
+ %tmp5444 = icmp sgt i32 %tmp5430, -4 ; <i1> [#uses=1]
+ %bothcond5911 = or i1 %tmp5436, %tmp5444 ; <i1> [#uses=1]
+ %tmp5457 = and i1 %bothcond5911, %bothcond5907 ; <i1> [#uses=1]
+ br i1 %tmp5457, label %finally5471, label %cond_true5462
+
+cond_true5462: ; preds = %invcont5431
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([29 x i8]* @.str37 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.36.923 to i32) to i64), i64 32)) )
+ to label %finally5471 unwind label %unwind5266
+
+eh_then5476: ; preds = %unwind5266
+ invoke void @__gnat_begin_handler( i8* %eh_ptr5267 )
+ to label %invcont5482 unwind label %unwind5480
+
+unwind5480: ; preds = %invcont5484, %invcont5482, %eh_then5476
+ %eh_ptr5481 = call i8* @llvm.eh.exception( ) ; <i8*> [#uses=1]
+ call void @__gnat_end_handler( i8* %eh_ptr5267 )
+ call i32 (...)* @_Unwind_Resume( i8* %eh_ptr5481 ) ; <i32>:26 [#uses=0]
+ unreachable
+
+invcont5482: ; preds = %eh_then5476
+ %tmp5483 = load void ()** @system__soft_links__abort_undefer ; <void ()*> [#uses=1]
+ invoke void %tmp5483( )
+ to label %invcont5484 unwind label %unwind5480
+
+invcont5484: ; preds = %invcont5482
+ invoke void @report__failed( i64 or (i64 zext (i32 ptrtoint ([19 x i8]* @.str38 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.string___XUB* @C.170.1990 to i32) to i64), i64 32)) )
+ to label %cleanup5493 unwind label %unwind5480
+
+cleanup5493: ; preds = %invcont5484
+ call void @__gnat_end_handler( i8* %eh_ptr5267 )
+ call void @report__result( )
+ ret void
+
+finally5471: ; preds = %cond_true5462, %invcont5431
+ call void @report__result( )
+ ret void
+
+Unwind: ; preds = %unwind5266, %unwind5032, %unwind4919, %unwind4770, %unwind3880, %unwind3618, %unwind3393, %eh_else3366, %eh_else3016, %eh_else2666, %eh_else1330, %eh_else932, %eh_else823
+ %eh_exception.2 = phi i8* [ %eh_exception.05914.1, %eh_else823 ], [ %eh_ptr872, %eh_else932 ], [ %eh_ptr975, %eh_else1330 ], [ %eh_exception.296030.1, %eh_else2666 ], [ %eh_exception.336046.1, %eh_else3016 ], [ %eh_exception.396074.1, %eh_else3366 ], [ %eh_ptr3394, %unwind3393 ], [ %eh_ptr3619, %unwind3618 ], [ %eh_ptr3881, %unwind3880 ], [ %eh_ptr4771, %unwind4770 ], [ %eh_ptr4920, %unwind4919 ], [ %eh_ptr5033, %unwind5032 ], [ %eh_ptr5267, %unwind5266 ] ; <i8*> [#uses=1]
+ call i32 (...)* @_Unwind_Resume( i8* %eh_exception.2 ) ; <i32>:27 [#uses=0]
+ unreachable
+
+UnifiedUnreachableBlock34: ; preds = %cond_true5031, %cond_true4918, %cond_true4609, %cond_true4504, %cond_true4481, %cond_true4187, %cond_true4117, %cond_true4027, %cond_true3935, %cond_true3907, %cond_true3729, %cond_true3675, %cond_true3617, %cond_true3543, %cond_true3448, %cond_true3420, %bb3227, %bb3193, %bb3171, %cond_true3061, %bb2877, %bb2843, %bb2821, %cond_true2711, %bb2558, %bb2524, %bb2506, %cond_true2410, %bb2203, %cond_true2171, %cond_true1946, %bb1605, %cond_true1573, %cond_true1546, %cond_true1418, %cond_true973, %cond_true870, %cond_true663, %cond_true637, %cond_true611, %cond_true585, %cond_true559, %cond_true533, %cond_true507, %cond_true465
+ unreachable
+
+UnifiedReturnBlock35: ; preds = %cleanup4742, %invcont4719, %finally913, %cleanup928
+ ret void
+}
+
+declare i32 @report__ident_int(i32)
+
+declare void @__gnat_rcheck_10(i8*, i32)
+
+declare void @__gnat_rcheck_12(i8*, i32)
+
+declare void @report__test(i64, i64)
+
+declare i8* @llvm.eh.exception()
+
+declare i32 @llvm.eh.selector.i32(i8*, i8*, ...)
+
+declare i32 @llvm.eh.typeid.for.i32(i8*)
+
+declare i32 @__gnat_eh_personality(...)
+
+declare i32 @_Unwind_Resume(...)
+
+declare void @system__secondary_stack__ss_mark(%struct.system__secondary_stack__mark_id* sret )
+
+declare void @system__img_int__image_integer(%struct.string___XUP* sret , i32)
+
+declare void @system__string_ops__str_concat(%struct.string___XUP* sret , i64, i64)
+
+declare void @report__failed(i64)
+
+declare void @system__secondary_stack__ss_release(i64)
+
+declare void @__gnat_begin_handler(i8*)
+
+declare void @__gnat_end_handler(i8*)
+
+declare i8 @report__equal(i32, i32)
+
+declare i8* @llvm.stacksave()
+
+declare void @__gnat_rcheck_07(i8*, i32)
+
+declare i8* @__gnat_malloc(i32)
+
+declare void @llvm.stackrestore(i8*)
+
+declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
+
+declare void @__gnat_rcheck_05(i8*, i32)
+
+declare void @__gnat_rcheck_06(i8*, i32)
+
+declare void @system__img_enum__image_enumeration_8(%struct.string___XUP* sret , i32, i64, i8*)
+
+declare i32 @memcmp(i8*, i8*, i32, ...)
+
+declare void @report__result()
diff --git a/test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll b/test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll
new file mode 100644
index 0000000000000..cedee6ffbe0de
--- /dev/null
+++ b/test/CodeGen/Generic/2007-11-21-UndeadIllegalNode.ll
@@ -0,0 +1,159 @@
+; RUN: llvm-as < %s | llc -o -
+
+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:32:32"
+target triple = "i686-pc-linux-gnu"
+ %struct.RETURN = type { i32, i32 }
+ %struct.ada__finalization__controlled = type { %struct.system__finalization_root__root_controlled }
+ %struct.ada__streams__root_stream_type = type { %struct.ada__tags__dispatch_table* }
+ %struct.ada__strings__unbounded__string_access = type { i8*, %struct.RETURN* }
+ %struct.ada__strings__unbounded__unbounded_string = type { %struct.ada__finalization__controlled, %struct.ada__strings__unbounded__string_access, i32 }
+ %struct.ada__tags__dispatch_table = type { [1 x i32] }
+ %struct.exception = type { i8, i8, i32, i8*, i8*, i32, i8* }
+ %struct.system__finalization_root__root_controlled = type { %struct.ada__streams__root_stream_type, %struct.system__finalization_root__root_controlled*, %struct.system__finalization_root__root_controlled* }
+ %struct.system__standard_library__exception_data = type { i8, i8, i32, i32, %struct.system__standard_library__exception_data*, i32, void ()* }
+@C.495.7639 = internal constant %struct.RETURN { i32 1, i32 16 } ; <%struct.RETURN*> [#uses=1]
+@ada__strings__index_error = external global %struct.exception ; <%struct.exception*> [#uses=1]
+@.str5 = internal constant [16 x i8] c"a-strunb.adb:690" ; <[16 x i8]*> [#uses=1]
+
+declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
+
+declare void @ada__strings__unbounded__realloc_for_chunk(%struct.ada__strings__unbounded__unbounded_string*, i32)
+
+declare void @__gnat_raise_exception(%struct.system__standard_library__exception_data*, i64)
+
+define void @ada__strings__unbounded__insert__2(%struct.ada__strings__unbounded__unbounded_string* %source, i32 %before, i64 %new_item.0.0) {
+entry:
+ %tmp24636 = lshr i64 %new_item.0.0, 32 ; <i64> [#uses=1]
+ %tmp24637 = trunc i64 %tmp24636 to i32 ; <i32> [#uses=1]
+ %tmp24638 = inttoptr i32 %tmp24637 to %struct.RETURN* ; <%struct.RETURN*> [#uses=2]
+ %tmp25 = getelementptr %struct.RETURN* %tmp24638, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp26 = load i32* %tmp25, align 4 ; <i32> [#uses=1]
+ %tmp29 = getelementptr %struct.RETURN* %tmp24638, i32 0, i32 1 ; <i32*> [#uses=1]
+ %tmp30 = load i32* %tmp29, align 4 ; <i32> [#uses=1]
+ %tmp63 = getelementptr %struct.ada__strings__unbounded__unbounded_string* %source, i32 0, i32 1, i32 1 ; <%struct.RETURN**> [#uses=5]
+ %tmp64 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp65 = getelementptr %struct.RETURN* %tmp64, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp66 = load i32* %tmp65, align 4 ; <i32> [#uses=1]
+ %tmp67 = icmp sgt i32 %tmp66, %before ; <i1> [#uses=1]
+ br i1 %tmp67, label %bb77, label %bb
+
+bb: ; preds = %entry
+ %tmp71 = getelementptr %struct.ada__strings__unbounded__unbounded_string* %source, i32 0, i32 2 ; <i32*> [#uses=4]
+ %tmp72 = load i32* %tmp71, align 4 ; <i32> [#uses=1]
+ %tmp73 = add i32 %tmp72, 1 ; <i32> [#uses=1]
+ %tmp74 = icmp slt i32 %tmp73, %before ; <i1> [#uses=1]
+ br i1 %tmp74, label %bb77, label %bb84
+
+bb77: ; preds = %bb, %entry
+ tail call void @__gnat_raise_exception( %struct.system__standard_library__exception_data* bitcast (%struct.exception* @ada__strings__index_error to %struct.system__standard_library__exception_data*), i64 or (i64 zext (i32 ptrtoint ([16 x i8]* @.str5 to i32) to i64), i64 shl (i64 zext (i32 ptrtoint (%struct.RETURN* @C.495.7639 to i32) to i64), i64 32)) )
+ unreachable
+
+bb84: ; preds = %bb
+ %tmp93 = sub i32 %tmp30, %tmp26 ; <i32> [#uses=2]
+ %tmp9394 = sext i32 %tmp93 to i36 ; <i36> [#uses=1]
+ %tmp95 = shl i36 %tmp9394, 3 ; <i36> [#uses=1]
+ %tmp96 = add i36 %tmp95, 8 ; <i36> [#uses=2]
+ %tmp97 = icmp sgt i36 %tmp96, -1 ; <i1> [#uses=1]
+ %tmp100 = select i1 %tmp97, i36 %tmp96, i36 0 ; <i36> [#uses=2]
+ %tmp101 = icmp slt i36 %tmp100, 17179869177 ; <i1> [#uses=1]
+ %tmp100.cast = trunc i36 %tmp100 to i32 ; <i32> [#uses=1]
+ %min102 = select i1 %tmp101, i32 %tmp100.cast, i32 -8 ; <i32> [#uses=1]
+ tail call void @ada__strings__unbounded__realloc_for_chunk( %struct.ada__strings__unbounded__unbounded_string* %source, i32 %min102 )
+ %tmp148 = load i32* %tmp71, align 4 ; <i32> [#uses=4]
+ %tmp152 = add i32 %tmp93, 1 ; <i32> [#uses=2]
+ %tmp153 = icmp sgt i32 %tmp152, -1 ; <i1> [#uses=1]
+ %max154 = select i1 %tmp153, i32 %tmp152, i32 0 ; <i32> [#uses=5]
+ %tmp155 = add i32 %tmp148, %max154 ; <i32> [#uses=5]
+ %tmp315 = getelementptr %struct.ada__strings__unbounded__unbounded_string* %source, i32 0, i32 1, i32 0 ; <i8**> [#uses=4]
+ %tmp328 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp329 = getelementptr %struct.RETURN* %tmp328, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp330 = load i32* %tmp329, align 4 ; <i32> [#uses=4]
+ %tmp324 = add i32 %max154, %before ; <i32> [#uses=3]
+ %tmp331 = sub i32 %tmp324, %tmp330 ; <i32> [#uses=1]
+ %tmp349 = sub i32 %before, %tmp330 ; <i32> [#uses=1]
+ %tmp356 = icmp sgt i32 %tmp331, %tmp349 ; <i1> [#uses=1]
+ %tmp431 = icmp sgt i32 %tmp324, %tmp155 ; <i1> [#uses=2]
+ br i1 %tmp356, label %bb420, label %bb359
+
+bb359: ; preds = %bb84
+ br i1 %tmp431, label %bb481, label %bb382
+
+bb382: ; preds = %bb382, %bb359
+ %indvar = phi i32 [ 0, %bb359 ], [ %indvar.next, %bb382 ] ; <i32> [#uses=2]
+ %max379.pn = phi i32 [ %max154, %bb359 ], [ %L492b.0, %bb382 ] ; <i32> [#uses=1]
+ %before.pn = phi i32 [ %before, %bb359 ], [ 1, %bb382 ] ; <i32> [#uses=1]
+ %L492b.0 = add i32 %before.pn, %max379.pn ; <i32> [#uses=3]
+ %tmp386 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp387 = getelementptr %struct.RETURN* %tmp386, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp388 = load i32* %tmp387, align 4 ; <i32> [#uses=2]
+ %tmp392 = load i8** %tmp315, align 4 ; <i8*> [#uses=2]
+ %R493b.0 = add i32 %indvar, %before ; <i32> [#uses=1]
+ %tmp405 = sub i32 %R493b.0, %tmp388 ; <i32> [#uses=1]
+ %tmp406 = getelementptr i8* %tmp392, i32 %tmp405 ; <i8*> [#uses=1]
+ %tmp407 = load i8* %tmp406, align 1 ; <i8> [#uses=1]
+ %tmp408 = sub i32 %L492b.0, %tmp388 ; <i32> [#uses=1]
+ %tmp409 = getelementptr i8* %tmp392, i32 %tmp408 ; <i8*> [#uses=1]
+ store i8 %tmp407, i8* %tmp409, align 1
+ %tmp414 = icmp eq i32 %L492b.0, %tmp155 ; <i1> [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=1]
+ br i1 %tmp414, label %bb481, label %bb382
+
+bb420: ; preds = %bb84
+ br i1 %tmp431, label %bb481, label %bb436.preheader
+
+bb436.preheader: ; preds = %bb420
+ %tmp4468 = load i8** %tmp315, align 4 ; <i8*> [#uses=2]
+ %tmp4599 = sub i32 %tmp148, %tmp330 ; <i32> [#uses=1]
+ %tmp46010 = getelementptr i8* %tmp4468, i32 %tmp4599 ; <i8*> [#uses=1]
+ %tmp46111 = load i8* %tmp46010, align 1 ; <i8> [#uses=1]
+ %tmp46212 = sub i32 %tmp155, %tmp330 ; <i32> [#uses=1]
+ %tmp46313 = getelementptr i8* %tmp4468, i32 %tmp46212 ; <i8*> [#uses=1]
+ store i8 %tmp46111, i8* %tmp46313, align 1
+ %exitcond14 = icmp eq i32 %tmp155, %tmp324 ; <i1> [#uses=1]
+ br i1 %exitcond14, label %bb481, label %bb.nph
+
+bb.nph: ; preds = %bb436.preheader
+ %tmp5 = sub i32 %tmp148, %before ; <i32> [#uses=1]
+ br label %bb478
+
+bb478: ; preds = %bb478, %bb.nph
+ %indvar6422 = phi i32 [ 0, %bb.nph ], [ %indvar.next643, %bb478 ] ; <i32> [#uses=1]
+ %indvar.next643 = add i32 %indvar6422, 1 ; <i32> [#uses=4]
+ %L490b.0 = sub i32 %tmp155, %indvar.next643 ; <i32> [#uses=1]
+ %R491b.0 = sub i32 %tmp148, %indvar.next643 ; <i32> [#uses=1]
+ %tmp440 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp441 = getelementptr %struct.RETURN* %tmp440, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp442 = load i32* %tmp441, align 4 ; <i32> [#uses=2]
+ %tmp446 = load i8** %tmp315, align 4 ; <i8*> [#uses=2]
+ %tmp459 = sub i32 %R491b.0, %tmp442 ; <i32> [#uses=1]
+ %tmp460 = getelementptr i8* %tmp446, i32 %tmp459 ; <i8*> [#uses=1]
+ %tmp461 = load i8* %tmp460, align 1 ; <i8> [#uses=1]
+ %tmp462 = sub i32 %L490b.0, %tmp442 ; <i32> [#uses=1]
+ %tmp463 = getelementptr i8* %tmp446, i32 %tmp462 ; <i8*> [#uses=1]
+ store i8 %tmp461, i8* %tmp463, align 1
+ %exitcond = icmp eq i32 %indvar.next643, %tmp5 ; <i1> [#uses=1]
+ br i1 %exitcond, label %bb481, label %bb478
+
+bb481: ; preds = %bb478, %bb436.preheader, %bb420, %bb382, %bb359
+ %tmp577 = add i32 %before, -1 ; <i32> [#uses=3]
+ %tmp578 = add i32 %max154, %tmp577 ; <i32> [#uses=2]
+ %tmp581 = icmp sge i32 %tmp578, %tmp577 ; <i1> [#uses=1]
+ %max582 = select i1 %tmp581, i32 %tmp578, i32 %tmp577 ; <i32> [#uses=1]
+ %tmp584 = sub i32 %max582, %before ; <i32> [#uses=1]
+ %tmp585 = add i32 %tmp584, 1 ; <i32> [#uses=2]
+ %tmp586 = icmp sgt i32 %tmp585, -1 ; <i1> [#uses=1]
+ %max587 = select i1 %tmp586, i32 %tmp585, i32 0 ; <i32> [#uses=1]
+ %tmp591 = load %struct.RETURN** %tmp63, align 4 ; <%struct.RETURN*> [#uses=1]
+ %tmp592 = getelementptr %struct.RETURN* %tmp591, i32 0, i32 0 ; <i32*> [#uses=1]
+ %tmp593 = load i32* %tmp592, align 4 ; <i32> [#uses=1]
+ %tmp597 = load i8** %tmp315, align 4 ; <i8*> [#uses=1]
+ %tmp600621 = trunc i64 %new_item.0.0 to i32 ; <i32> [#uses=1]
+ %tmp600622 = inttoptr i32 %tmp600621 to i8* ; <i8*> [#uses=1]
+ %tmp601 = sub i32 %before, %tmp593 ; <i32> [#uses=1]
+ %tmp602 = getelementptr i8* %tmp597, i32 %tmp601 ; <i8*> [#uses=1]
+ tail call void @llvm.memcpy.i32( i8* %tmp602, i8* %tmp600622, i32 %max587, i32 1 )
+ %tmp606 = load i32* %tmp71, align 4 ; <i32> [#uses=1]
+ %tmp613 = add i32 %tmp606, %max154 ; <i32> [#uses=1]
+ store i32 %tmp613, i32* %tmp71, align 4
+ ret void
+}
diff --git a/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll b/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
new file mode 100644
index 0000000000000..98871d0e3a45d
--- /dev/null
+++ b/test/CodeGen/Generic/2007-12-17-InvokeAsm.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-as < %s | llc -enable-eh
+
+target triple = "i686-pc-linux-gnu"
+
+define fastcc void @bc__support__high_resolution_time__initialize_clock_rate() {
+entry:
+ invoke void asm "rdtsc\0A\09movl %eax, $0\0A\09movl %edx, $1", "=*imr,=*imr,~{dirflag},~{fpsr},~{flags},~{dx},~{ax}"( i32* null, i32* null )
+ to label %.noexc unwind label %cleanup144
+
+.noexc: ; preds = %entry
+ ret void
+
+cleanup144: ; preds = %entry
+ unwind
+}
diff --git a/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll b/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll
new file mode 100644
index 0000000000000..41fdb71ddf491
--- /dev/null
+++ b/test/CodeGen/Generic/2007-12-31-UnusedSelector.ll
@@ -0,0 +1,36 @@
+; RUN: llvm-as < %s | llc -enable-eh
+; PR1833
+
+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:32:32"
+target triple = "i686-pc-linux-gnu"
+ %struct.__class_type_info_pseudo = type { %struct.__type_info_pseudo }
+ %struct.__type_info_pseudo = type { i8*, i8* }
+@_ZTI2e1 = external constant %struct.__class_type_info_pseudo ; <%struct.__class_type_info_pseudo*> [#uses=1]
+
+define void @_Z7ex_testv() {
+entry:
+ invoke void @__cxa_throw( i8* null, i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI2e1 to i8*), void (i8*)* null ) noreturn
+ to label %UnifiedUnreachableBlock unwind label %lpad
+
+bb14: ; preds = %lpad
+ unreachable
+
+lpad: ; preds = %entry
+ invoke void @__cxa_end_catch( )
+ to label %bb14 unwind label %lpad17
+
+lpad17: ; preds = %lpad
+ %eh_select20 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector.i32( i8* null, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* null ) ; <i32> [#uses=0]
+ unreachable
+
+UnifiedUnreachableBlock: ; preds = %entry
+ unreachable
+}
+
+declare void @__cxa_throw(i8*, i8*, void (i8*)*) noreturn
+
+declare i32 @llvm.eh.selector.i32(i8*, i8*, ...)
+
+declare void @__cxa_end_catch()
+
+declare i32 @__gxx_personality_v0(...)
diff --git a/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll b/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll
new file mode 100644
index 0000000000000..4b2544446939b
--- /dev/null
+++ b/test/CodeGen/Generic/2008-01-25-dag-combine-mul.ll
@@ -0,0 +1,31 @@
+; RUN: llvm-as < %s | llc
+; rdar://5707064
+
+define i32 @f(i16* %pc) {
+entry:
+ %acc = alloca i64, align 8 ; <i64*> [#uses=4]
+ %tmp97 = load i64* %acc, align 8 ; <i64> [#uses=1]
+ %tmp98 = and i64 %tmp97, 4294967295 ; <i64> [#uses=1]
+ %tmp99 = load i64* null, align 8 ; <i64> [#uses=1]
+ %tmp100 = and i64 %tmp99, 4294967295 ; <i64> [#uses=1]
+ %tmp101 = mul i64 %tmp98, %tmp100 ; <i64> [#uses=1]
+ %tmp103 = lshr i64 %tmp101, 0 ; <i64> [#uses=1]
+ %tmp104 = load i64* %acc, align 8 ; <i64> [#uses=1]
+ %.cast105 = zext i32 32 to i64 ; <i64> [#uses=1]
+ %tmp106 = lshr i64 %tmp104, %.cast105 ; <i64> [#uses=1]
+ %tmp107 = load i64* null, align 8 ; <i64> [#uses=1]
+ %tmp108 = and i64 %tmp107, 4294967295 ; <i64> [#uses=1]
+ %tmp109 = mul i64 %tmp106, %tmp108 ; <i64> [#uses=1]
+ %tmp112 = add i64 %tmp109, 0 ; <i64> [#uses=1]
+ %tmp116 = add i64 %tmp112, 0 ; <i64> [#uses=1]
+ %tmp117 = add i64 %tmp103, %tmp116 ; <i64> [#uses=1]
+ %tmp118 = load i64* %acc, align 8 ; <i64> [#uses=1]
+ %tmp120 = lshr i64 %tmp118, 0 ; <i64> [#uses=1]
+ %tmp121 = load i64* null, align 8 ; <i64> [#uses=1]
+ %tmp123 = lshr i64 %tmp121, 0 ; <i64> [#uses=1]
+ %tmp124 = mul i64 %tmp120, %tmp123 ; <i64> [#uses=1]
+ %tmp126 = shl i64 %tmp124, 0 ; <i64> [#uses=1]
+ %tmp127 = add i64 %tmp117, %tmp126 ; <i64> [#uses=1]
+ store i64 %tmp127, i64* %acc, align 8
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/2008-01-30-LoadCrash.ll b/test/CodeGen/Generic/2008-01-30-LoadCrash.ll
new file mode 100644
index 0000000000000..8ed4139bd64fc
--- /dev/null
+++ b/test/CodeGen/Generic/2008-01-30-LoadCrash.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | llc
+
+@letters.3100 = external constant [63 x i8] ; <[63 x i8]*> [#uses=2]
+
+define i32 @mkstemps(i8* %pattern, i32 %suffix_len, i64 %tmp42.rle) nounwind {
+bb20:
+ br label %bb41
+
+bb41: ; preds = %bb20
+ %tmp8182 = trunc i64 %tmp42.rle to i32 ; <i32> [#uses=1]
+ %tmp83 = getelementptr [63 x i8]* @letters.3100, i32 0, i32 %tmp8182 ; <i8*> [#uses=1]
+ %tmp84 = load i8* %tmp83, align 1 ; <i8> [#uses=1]
+ store i8 %tmp84, i8* null, align 1
+ %tmp90 = urem i64 %tmp42.rle, 62 ; <i64> [#uses=1]
+ %tmp9091 = trunc i64 %tmp90 to i32 ; <i32> [#uses=1]
+ %tmp92 = getelementptr [63 x i8]* @letters.3100, i32 0, i32 %tmp9091 ; <i8*> [#uses=1]
+ store i8* %tmp92, i8** null, align 1
+ ret i32 -1
+}
diff --git a/test/CodeGen/Generic/2008-02-04-Ctlz.ll b/test/CodeGen/Generic/2008-02-04-Ctlz.ll
new file mode 100644
index 0000000000000..4639b6f977038
--- /dev/null
+++ b/test/CodeGen/Generic/2008-02-04-Ctlz.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-as < %s | llc
+
+@.str = internal constant [14 x i8] c"%lld %d %d %d\00"
+
+define i32 @main(i64 %arg) nounwind {
+entry:
+ %tmp37 = tail call i64 @llvm.ctlz.i64( i64 %arg ) ; <i64> [#uses=1]
+ %tmp47 = tail call i64 @llvm.cttz.i64( i64 %arg ) ; <i64> [#uses=1]
+ %tmp57 = tail call i64 @llvm.ctpop.i64( i64 %arg ) ; <i64> [#uses=1]
+ %tmp38 = trunc i64 %tmp37 to i32 ; <i32>:0 [#uses=1]
+ %tmp48 = trunc i64 %tmp47 to i32 ; <i32>:0 [#uses=1]
+ %tmp58 = trunc i64 %tmp57 to i32 ; <i32>:0 [#uses=1]
+ %tmp40 = tail call i32 (i8*, ...)* @printf( i8* noalias getelementptr ([14 x i8]* @.str, i32 0, i32 0), i64 %arg, i32 %tmp38, i32 %tmp48, i32 %tmp58 ) nounwind ; <i32> [#uses=0]
+ ret i32 0
+}
+
+declare i32 @printf(i8* noalias , ...) nounwind
+
+declare i64 @llvm.ctlz.i64(i64) nounwind readnone
+declare i64 @llvm.cttz.i64(i64) nounwind readnone
+declare i64 @llvm.ctpop.i64(i64) nounwind readnone
diff --git a/test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll b/test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll
new file mode 100644
index 0000000000000..1cf822b71190c
--- /dev/null
+++ b/test/CodeGen/Generic/2008-02-04-ExtractSubvector.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | llc
+
+define i32 @main() nounwind {
+entry:
+ br label %bb15
+
+bb15: ; preds = %bb15, %entry
+ %tmp21 = add <8 x double> zeroinitializer, zeroinitializer ; <<8 x double>> [#uses=1]
+ br i1 false, label %bb30, label %bb15
+
+bb30: ; preds = %bb15
+ store <8 x double> %tmp21, <8 x double>* null, align 64
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/2008-02-20-MatchingMem.ll b/test/CodeGen/Generic/2008-02-20-MatchingMem.ll
new file mode 100644
index 0000000000000..ef60f92fa05aa
--- /dev/null
+++ b/test/CodeGen/Generic/2008-02-20-MatchingMem.ll
@@ -0,0 +1,9 @@
+; RUN: llvm-as < %s | llc
+; PR1133
+define void @test(i32* %X) nounwind {
+entry:
+ %tmp1 = getelementptr i32* %X, i32 10 ; <i32*> [#uses=2]
+ tail call void asm sideeffect " $0 $1 ", "=*im,*im,~{memory}"( i32* %tmp1, i32* %tmp1 ) nounwind
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/2008-02-25-NegateZero.ll b/test/CodeGen/Generic/2008-02-25-NegateZero.ll
new file mode 100644
index 0000000000000..e5a52748464b9
--- /dev/null
+++ b/test/CodeGen/Generic/2008-02-25-NegateZero.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | llc
+; rdar://5763967
+
+define void @test() {
+entry:
+ %tmp98 = load float* null, align 4 ; <float> [#uses=1]
+ %tmp106 = load float* null, align 4 ; <float> [#uses=1]
+ %tmp113 = add float %tmp98, %tmp106 ; <float> [#uses=1]
+ %tmp119 = sub float %tmp113, 0.000000e+00 ; <float> [#uses=1]
+ call void (i32, ...)* @foo( i32 0, float 0.000000e+00, float %tmp119 ) nounwind
+ ret void
+}
+
+declare void @foo(i32, ...)
diff --git a/test/CodeGen/Generic/2008-02-26-NegatableCrash.ll b/test/CodeGen/Generic/2008-02-26-NegatableCrash.ll
new file mode 100644
index 0000000000000..7fe19d925bed3
--- /dev/null
+++ b/test/CodeGen/Generic/2008-02-26-NegatableCrash.ll
@@ -0,0 +1,50 @@
+; RUN: llvm-as < %s | llc
+; PR2096
+ %struct.AVClass = type { i8*, i8* (i8*)*, %struct.AVOption* }
+ %struct.AVCodec = type { i8*, i32, i32, i32, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32, i8*)*, i32 (%struct.AVCodecContext*)*, i32 (%struct.AVCodecContext*, i8*, i32*, i8*, i32)*, i32, %struct.AVCodec*, void (%struct.AVCodecContext*)*, %struct.AVRational*, i32* }
+ %struct.AVCodecContext = type { %struct.AVClass*, i32, i32, i32, i32, i32, i8*, i32, %struct.AVRational, i32, i32, i32, i32, i32, void (%struct.AVCodecContext*, %struct.AVFrame*, i32*, i32, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, float, float, i32, i32, i32, i32, float, i32, i32, i32, %struct.AVCodec*, i8*, i32, i32, void (%struct.AVCodecContext*, i8*, i32, i32)*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i8*, [32 x i8], i32, i32, i32, i32, i32, i32, i32, float, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, void (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i8*, i8*, float, float, i32, %struct.RcOverride*, i32, i8*, i32, i32, i32, float, float, float, float, i32, float, float, float, float, float, i32, i32, i32, i32*, i32, i32, i32, i32, %struct.AVRational, %struct.AVFrame*, i32, i32, [4 x i64], i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32*)*, i32, i32, i32, i32, i32, i32, i8*, i32, i32, i32, i32, i32, i32, i16*, i16*, i32, i32, i32, i32, %struct.AVPaletteControl*, i32, i32 (%struct.AVCodecContext*, %struct.AVFrame*)*, i32, i32, i32, i32, i32, i32, i32, i32 (%struct.AVCodecContext*, i32 (%struct.AVCodecContext*, i8*)*, i8**, i32*, i32)*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, float, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i64, i32, float }
+ %struct.AVFrame = type { [4 x i8*], [4 x i32], [4 x i8*], i32, i32, i64, i32, i32, i32, i32, i32, i8*, i32, i8*, [2 x [2 x i16]*], i32*, i8, i8*, [4 x i64], i32, i32, i32, i32, i32, %struct.AVPanScan*, i32, i32, i16*, [2 x i8*] }
+ %struct.AVOption = type opaque
+ %struct.AVPaletteControl = type { i32, [256 x i32] }
+ %struct.AVPanScan = type { i32, i32, i32, [3 x [2 x i16]] }
+ %struct.AVRational = type { i32, i32 }
+ %struct.RcOverride = type { i32, i32, i32, float }
+
+define i32 @sonic_encode_frame(%struct.AVCodecContext* %avctx, i8* %buf, i32 %buf_size, i8* %data) {
+entry:
+ switch i32 0, label %bb429 [
+ i32 0, label %bb244.preheader
+ i32 1, label %bb279.preheader
+ ]
+
+bb279.preheader: ; preds = %entry
+ ret i32 0
+
+bb244.preheader: ; preds = %entry
+ ret i32 0
+
+bb429: ; preds = %entry
+ br i1 false, label %bb.nph1770, label %bb627
+
+bb.nph1770: ; preds = %bb429
+ br i1 false, label %bb471, label %bb505
+
+bb471: ; preds = %bb471, %bb.nph1770
+ %tmp487 = add double 0.000000e+00, 0.000000e+00 ; <double> [#uses=1]
+ br i1 false, label %bb505, label %bb471
+
+bb505: ; preds = %bb471, %bb.nph1770
+ %xy.0.lcssa = phi double [ 0.000000e+00, %bb.nph1770 ], [ %tmp487, %bb471 ] ; <double> [#uses=1]
+ %tmp507 = sub double -0.000000e+00, %xy.0.lcssa ; <double> [#uses=1]
+ %tmp509 = fdiv double %tmp507, 0.000000e+00 ; <double> [#uses=1]
+ %tmp510 = mul double %tmp509, 1.024000e+03 ; <double> [#uses=1]
+ %tmp516 = fdiv double %tmp510, 0.000000e+00 ; <double> [#uses=1]
+ %tmp517 = add double %tmp516, 5.000000e-01 ; <double> [#uses=1]
+ %tmp518 = tail call double @floor( double %tmp517 ) nounwind readnone ; <double> [#uses=0]
+ ret i32 0
+
+bb627: ; preds = %bb429
+ ret i32 0
+}
+
+declare double @floor(double) nounwind readnone
diff --git a/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll b/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll
new file mode 100644
index 0000000000000..a60d101fee252
--- /dev/null
+++ b/test/CodeGen/Generic/2008-08-07-PtrToInt-SmallerInt.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-as < %s | llc
+; PR2603
+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:32:32"
+target triple = "i386-pc-linux-gnu"
+ %struct.A = type { i8 }
+ %struct.B = type { i8, [1 x i8] }
+@Foo = constant %struct.A { i8 ptrtoint (i8* getelementptr ([1 x i8]* inttoptr (i32 17 to [1 x i8]*), i32 0, i32 -16) to i8) } ; <%struct.A*> [#uses=0]
diff --git a/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll b/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll
new file mode 100644
index 0000000000000..c5844027b44d9
--- /dev/null
+++ b/test/CodeGen/Generic/2009-03-17-LSR-APInt.ll
@@ -0,0 +1,92 @@
+; RUN: llvm-as < %s | llc
+; PR3806
+
+ %struct..0__pthread_mutex_s = type { i32, i32, i32, i32, i32, i32, %struct.__pthread_list_t }
+ %struct.Alignment = type { i32 }
+ %struct.QDesignerFormWindowInterface = type { %struct.QWidget }
+ %struct.QFont = type { %struct.QFontPrivate*, i32 }
+ %struct.QFontPrivate = type opaque
+ %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >" = type { %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >::._120" }
+ %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >::._120" = type { %struct.QHashData* }
+ %struct.QHashData = type { %"struct.QHashData::Node"*, %"struct.QHashData::Node"**, %struct.Alignment, i32, i32, i16, i16, i32, i8 }
+ %"struct.QHashData::Node" = type { %"struct.QHashData::Node"*, i32 }
+ %"struct.QList<QAbstractExtensionFactory*>" = type { %"struct.QList<QAbstractExtensionFactory*>::._101" }
+ %"struct.QList<QAbstractExtensionFactory*>::._101" = type { %struct.QListData }
+ %struct.QListData = type { %"struct.QListData::Data"* }
+ %"struct.QListData::Data" = type { %struct.Alignment, i32, i32, i32, i8, [1 x i8*] }
+ %struct.QObject = type { i32 (...)**, %struct.QObjectData* }
+ %struct.QObjectData = type { i32 (...)**, %struct.QObject*, %struct.QObject*, %"struct.QList<QAbstractExtensionFactory*>", i32, i32 }
+ %struct.QPaintDevice.base = type { i32 (...)**, i16 }
+ %"struct.QPair<int,int>" = type { i32, i32 }
+ %struct.QPalette = type { %struct.QPalettePrivate*, i32 }
+ %struct.QPalettePrivate = type opaque
+ %struct.QRect = type { i32, i32, i32, i32 }
+ %struct.QWidget = type { %struct.QObject, %struct.QPaintDevice.base, %struct.QWidgetData* }
+ %struct.QWidgetData = type { i64, i32, %struct.Alignment, i8, i8, i16, %struct.QRect, %struct.QPalette, %struct.QFont, %struct.QRect }
+ %struct.__pthread_list_t = type { %struct.__pthread_list_t*, %struct.__pthread_list_t* }
+ %struct.pthread_attr_t = type { i64, [48 x i8] }
+ %struct.pthread_mutex_t = type { %struct..0__pthread_mutex_s }
+ %"struct.qdesigner_internal::Grid" = type { i32, i32, %struct.QWidget**, i8*, i8* }
+ %"struct.qdesigner_internal::GridLayout" = type { %"struct.qdesigner_internal::Layout", %"struct.QPair<int,int>", %"struct.qdesigner_internal::Grid"* }
+ %"struct.qdesigner_internal::Layout" = type { %struct.QObject, %"struct.QList<QAbstractExtensionFactory*>", %struct.QWidget*, %"struct.QHash<QString,QList<QAbstractExtensionFactory*> >", %struct.QWidget*, %struct.QDesignerFormWindowInterface*, i8, %"struct.QPair<int,int>", %struct.QRect, i8 }
+
+@_ZL20__gthrw_pthread_oncePiPFvvE = alias weak i32 (i32*, void ()*)* @pthread_once ; <i32 (i32*, void ()*)*> [#uses=0]
+@_ZL27__gthrw_pthread_getspecificj = alias weak i8* (i32)* @pthread_getspecific ; <i8* (i32)*> [#uses=0]
+@_ZL27__gthrw_pthread_setspecificjPKv = alias weak i32 (i32, i8*)* @pthread_setspecific ; <i32 (i32, i8*)*> [#uses=0]
+@_ZL22__gthrw_pthread_createPmPK14pthread_attr_tPFPvS3_ES3_ = alias weak i32 (i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)* @pthread_create ; <i32 (i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)*> [#uses=0]
+@_ZL22__gthrw_pthread_cancelm = alias weak i32 (i64)* @pthread_cancel ; <i32 (i64)*> [#uses=0]
+@_ZL26__gthrw_pthread_mutex_lockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_lock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
+@_ZL29__gthrw_pthread_mutex_trylockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_trylock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
+@_ZL28__gthrw_pthread_mutex_unlockP15pthread_mutex_t = alias weak i32 (%struct.pthread_mutex_t*)* @pthread_mutex_unlock ; <i32 (%struct.pthread_mutex_t*)*> [#uses=0]
+@_ZL26__gthrw_pthread_mutex_initP15pthread_mutex_tPK19pthread_mutexattr_t = alias weak i32 (%struct.pthread_mutex_t*, %struct.Alignment*)* @pthread_mutex_init ; <i32 (%struct.pthread_mutex_t*, %struct.Alignment*)*> [#uses=0]
+@_ZL26__gthrw_pthread_key_createPjPFvPvE = alias weak i32 (i32*, void (i8*)*)* @pthread_key_create ; <i32 (i32*, void (i8*)*)*> [#uses=0]
+@_ZL26__gthrw_pthread_key_deletej = alias weak i32 (i32)* @pthread_key_delete ; <i32 (i32)*> [#uses=0]
+@_ZL30__gthrw_pthread_mutexattr_initP19pthread_mutexattr_t = alias weak i32 (%struct.Alignment*)* @pthread_mutexattr_init ; <i32 (%struct.Alignment*)*> [#uses=0]
+@_ZL33__gthrw_pthread_mutexattr_settypeP19pthread_mutexattr_ti = alias weak i32 (%struct.Alignment*, i32)* @pthread_mutexattr_settype ; <i32 (%struct.Alignment*, i32)*> [#uses=0]
+@_ZL33__gthrw_pthread_mutexattr_destroyP19pthread_mutexattr_t = alias weak i32 (%struct.Alignment*)* @pthread_mutexattr_destroy ; <i32 (%struct.Alignment*)*> [#uses=0]
+
+define void @_ZN18qdesigner_internal10GridLayout9buildGridEv(%"struct.qdesigner_internal::GridLayout"* %this) nounwind {
+entry:
+ br label %bb44
+
+bb44: ; preds = %bb47, %entry
+ %indvar = phi i128 [ %indvar.next144, %bb47 ], [ 0, %entry ] ; <i128> [#uses=2]
+ br i1 false, label %bb46, label %bb47
+
+bb46: ; preds = %bb44
+ %tmp = shl i128 %indvar, 64 ; <i128> [#uses=1]
+ %tmp96 = and i128 %tmp, 79228162495817593519834398720 ; <i128> [#uses=0]
+ br label %bb47
+
+bb47: ; preds = %bb46, %bb44
+ %indvar.next144 = add i128 %indvar, 1 ; <i128> [#uses=1]
+ br label %bb44
+}
+
+declare i32 @pthread_once(i32*, void ()*)
+
+declare i8* @pthread_getspecific(i32)
+
+declare i32 @pthread_setspecific(i32, i8*)
+
+declare i32 @pthread_create(i64*, %struct.pthread_attr_t*, i8* (i8*)*, i8*)
+
+declare i32 @pthread_cancel(i64)
+
+declare i32 @pthread_mutex_lock(%struct.pthread_mutex_t*)
+
+declare i32 @pthread_mutex_trylock(%struct.pthread_mutex_t*)
+
+declare i32 @pthread_mutex_unlock(%struct.pthread_mutex_t*)
+
+declare i32 @pthread_mutex_init(%struct.pthread_mutex_t*, %struct.Alignment*)
+
+declare i32 @pthread_key_create(i32*, void (i8*)*)
+
+declare i32 @pthread_key_delete(i32)
+
+declare i32 @pthread_mutexattr_init(%struct.Alignment*)
+
+declare i32 @pthread_mutexattr_settype(%struct.Alignment*, i32)
+
+declare i32 @pthread_mutexattr_destroy(%struct.Alignment*)
diff --git a/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll b/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll
new file mode 100644
index 0000000000000..40ad3deaeea70
--- /dev/null
+++ b/test/CodeGen/Generic/2009-03-29-SoftFloatVectorExtract.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc -soft-float
+; PR3899
+
+@m = external global <2 x double>;
+
+define double @vector_ex() nounwind {
+ %v = load <2 x double>* @m
+ %x = extractelement <2 x double> %v, i32 1
+ ret double %x
+}
diff --git a/test/CodeGen/Generic/2009-04-10-SinkCrash.ll b/test/CodeGen/Generic/2009-04-10-SinkCrash.ll
new file mode 100644
index 0000000000000..3637a06c217f0
--- /dev/null
+++ b/test/CodeGen/Generic/2009-04-10-SinkCrash.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as < %s | llc
+
+define void @QRiterate(i32 %p.1, double %tmp.212) nounwind {
+entry:
+ br i1 false, label %shortcirc_next.1, label %exit.1.critedge
+
+shortcirc_next.1: ; preds = %shortcirc_next.1, %entry
+ %tmp.213 = fcmp une double %tmp.212, 0.000000e+00 ; <i1> [#uses=1]
+ br i1 %tmp.213, label %shortcirc_next.1, label %exit.1
+
+exit.1.critedge: ; preds = %entry
+ ret void
+
+exit.1: ; preds = %shortcirc_next.1
+ ret void
+}
diff --git a/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll b/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll
new file mode 100644
index 0000000000000..405a6a8d6e907
--- /dev/null
+++ b/test/CodeGen/Generic/2009-04-28-i128-cmp-crash.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as < %s | llc
+; rdar://6836460
+
+define i32 @test(i128* %P) nounwind {
+entry:
+ %tmp48 = load i128* %P
+ %and49 = and i128 %tmp48, 18446744073709551616 ; <i128> [#uses=1]
+ %tobool = icmp ne i128 %and49, 0 ; <i1> [#uses=1]
+ br i1 %tobool, label %if.then50, label %if.end61
+
+if.then50: ; preds = %if.then20
+ ret i32 1241
+
+if.end61: ; preds = %if.then50, %if.then20, %entry
+ ret i32 123
+}
diff --git a/test/CodeGen/Generic/APIntLoadStore.ll b/test/CodeGen/Generic/APIntLoadStore.ll
new file mode 100644
index 0000000000000..57ddae2c1b026
--- /dev/null
+++ b/test/CodeGen/Generic/APIntLoadStore.ll
@@ -0,0 +1,2049 @@
+; RUN: llvm-as < %s | llc > %t
+@i1_l = external global i1 ; <i1*> [#uses=1]
+@i1_s = external global i1 ; <i1*> [#uses=1]
+@i2_l = external global i2 ; <i2*> [#uses=1]
+@i2_s = external global i2 ; <i2*> [#uses=1]
+@i3_l = external global i3 ; <i3*> [#uses=1]
+@i3_s = external global i3 ; <i3*> [#uses=1]
+@i4_l = external global i4 ; <i4*> [#uses=1]
+@i4_s = external global i4 ; <i4*> [#uses=1]
+@i5_l = external global i5 ; <i5*> [#uses=1]
+@i5_s = external global i5 ; <i5*> [#uses=1]
+@i6_l = external global i6 ; <i6*> [#uses=1]
+@i6_s = external global i6 ; <i6*> [#uses=1]
+@i7_l = external global i7 ; <i7*> [#uses=1]
+@i7_s = external global i7 ; <i7*> [#uses=1]
+@i8_l = external global i8 ; <i8*> [#uses=1]
+@i8_s = external global i8 ; <i8*> [#uses=1]
+@i9_l = external global i9 ; <i9*> [#uses=1]
+@i9_s = external global i9 ; <i9*> [#uses=1]
+@i10_l = external global i10 ; <i10*> [#uses=1]
+@i10_s = external global i10 ; <i10*> [#uses=1]
+@i11_l = external global i11 ; <i11*> [#uses=1]
+@i11_s = external global i11 ; <i11*> [#uses=1]
+@i12_l = external global i12 ; <i12*> [#uses=1]
+@i12_s = external global i12 ; <i12*> [#uses=1]
+@i13_l = external global i13 ; <i13*> [#uses=1]
+@i13_s = external global i13 ; <i13*> [#uses=1]
+@i14_l = external global i14 ; <i14*> [#uses=1]
+@i14_s = external global i14 ; <i14*> [#uses=1]
+@i15_l = external global i15 ; <i15*> [#uses=1]
+@i15_s = external global i15 ; <i15*> [#uses=1]
+@i16_l = external global i16 ; <i16*> [#uses=1]
+@i16_s = external global i16 ; <i16*> [#uses=1]
+@i17_l = external global i17 ; <i17*> [#uses=1]
+@i17_s = external global i17 ; <i17*> [#uses=1]
+@i18_l = external global i18 ; <i18*> [#uses=1]
+@i18_s = external global i18 ; <i18*> [#uses=1]
+@i19_l = external global i19 ; <i19*> [#uses=1]
+@i19_s = external global i19 ; <i19*> [#uses=1]
+@i20_l = external global i20 ; <i20*> [#uses=1]
+@i20_s = external global i20 ; <i20*> [#uses=1]
+@i21_l = external global i21 ; <i21*> [#uses=1]
+@i21_s = external global i21 ; <i21*> [#uses=1]
+@i22_l = external global i22 ; <i22*> [#uses=1]
+@i22_s = external global i22 ; <i22*> [#uses=1]
+@i23_l = external global i23 ; <i23*> [#uses=1]
+@i23_s = external global i23 ; <i23*> [#uses=1]
+@i24_l = external global i24 ; <i24*> [#uses=1]
+@i24_s = external global i24 ; <i24*> [#uses=1]
+@i25_l = external global i25 ; <i25*> [#uses=1]
+@i25_s = external global i25 ; <i25*> [#uses=1]
+@i26_l = external global i26 ; <i26*> [#uses=1]
+@i26_s = external global i26 ; <i26*> [#uses=1]
+@i27_l = external global i27 ; <i27*> [#uses=1]
+@i27_s = external global i27 ; <i27*> [#uses=1]
+@i28_l = external global i28 ; <i28*> [#uses=1]
+@i28_s = external global i28 ; <i28*> [#uses=1]
+@i29_l = external global i29 ; <i29*> [#uses=1]
+@i29_s = external global i29 ; <i29*> [#uses=1]
+@i30_l = external global i30 ; <i30*> [#uses=1]
+@i30_s = external global i30 ; <i30*> [#uses=1]
+@i31_l = external global i31 ; <i31*> [#uses=1]
+@i31_s = external global i31 ; <i31*> [#uses=1]
+@i32_l = external global i32 ; <i32*> [#uses=1]
+@i32_s = external global i32 ; <i32*> [#uses=1]
+@i33_l = external global i33 ; <i33*> [#uses=1]
+@i33_s = external global i33 ; <i33*> [#uses=1]
+@i34_l = external global i34 ; <i34*> [#uses=1]
+@i34_s = external global i34 ; <i34*> [#uses=1]
+@i35_l = external global i35 ; <i35*> [#uses=1]
+@i35_s = external global i35 ; <i35*> [#uses=1]
+@i36_l = external global i36 ; <i36*> [#uses=1]
+@i36_s = external global i36 ; <i36*> [#uses=1]
+@i37_l = external global i37 ; <i37*> [#uses=1]
+@i37_s = external global i37 ; <i37*> [#uses=1]
+@i38_l = external global i38 ; <i38*> [#uses=1]
+@i38_s = external global i38 ; <i38*> [#uses=1]
+@i39_l = external global i39 ; <i39*> [#uses=1]
+@i39_s = external global i39 ; <i39*> [#uses=1]
+@i40_l = external global i40 ; <i40*> [#uses=1]
+@i40_s = external global i40 ; <i40*> [#uses=1]
+@i41_l = external global i41 ; <i41*> [#uses=1]
+@i41_s = external global i41 ; <i41*> [#uses=1]
+@i42_l = external global i42 ; <i42*> [#uses=1]
+@i42_s = external global i42 ; <i42*> [#uses=1]
+@i43_l = external global i43 ; <i43*> [#uses=1]
+@i43_s = external global i43 ; <i43*> [#uses=1]
+@i44_l = external global i44 ; <i44*> [#uses=1]
+@i44_s = external global i44 ; <i44*> [#uses=1]
+@i45_l = external global i45 ; <i45*> [#uses=1]
+@i45_s = external global i45 ; <i45*> [#uses=1]
+@i46_l = external global i46 ; <i46*> [#uses=1]
+@i46_s = external global i46 ; <i46*> [#uses=1]
+@i47_l = external global i47 ; <i47*> [#uses=1]
+@i47_s = external global i47 ; <i47*> [#uses=1]
+@i48_l = external global i48 ; <i48*> [#uses=1]
+@i48_s = external global i48 ; <i48*> [#uses=1]
+@i49_l = external global i49 ; <i49*> [#uses=1]
+@i49_s = external global i49 ; <i49*> [#uses=1]
+@i50_l = external global i50 ; <i50*> [#uses=1]
+@i50_s = external global i50 ; <i50*> [#uses=1]
+@i51_l = external global i51 ; <i51*> [#uses=1]
+@i51_s = external global i51 ; <i51*> [#uses=1]
+@i52_l = external global i52 ; <i52*> [#uses=1]
+@i52_s = external global i52 ; <i52*> [#uses=1]
+@i53_l = external global i53 ; <i53*> [#uses=1]
+@i53_s = external global i53 ; <i53*> [#uses=1]
+@i54_l = external global i54 ; <i54*> [#uses=1]
+@i54_s = external global i54 ; <i54*> [#uses=1]
+@i55_l = external global i55 ; <i55*> [#uses=1]
+@i55_s = external global i55 ; <i55*> [#uses=1]
+@i56_l = external global i56 ; <i56*> [#uses=1]
+@i56_s = external global i56 ; <i56*> [#uses=1]
+@i57_l = external global i57 ; <i57*> [#uses=1]
+@i57_s = external global i57 ; <i57*> [#uses=1]
+@i58_l = external global i58 ; <i58*> [#uses=1]
+@i58_s = external global i58 ; <i58*> [#uses=1]
+@i59_l = external global i59 ; <i59*> [#uses=1]
+@i59_s = external global i59 ; <i59*> [#uses=1]
+@i60_l = external global i60 ; <i60*> [#uses=1]
+@i60_s = external global i60 ; <i60*> [#uses=1]
+@i61_l = external global i61 ; <i61*> [#uses=1]
+@i61_s = external global i61 ; <i61*> [#uses=1]
+@i62_l = external global i62 ; <i62*> [#uses=1]
+@i62_s = external global i62 ; <i62*> [#uses=1]
+@i63_l = external global i63 ; <i63*> [#uses=1]
+@i63_s = external global i63 ; <i63*> [#uses=1]
+@i64_l = external global i64 ; <i64*> [#uses=1]
+@i64_s = external global i64 ; <i64*> [#uses=1]
+@i65_l = external global i65 ; <i65*> [#uses=1]
+@i65_s = external global i65 ; <i65*> [#uses=1]
+@i66_l = external global i66 ; <i66*> [#uses=1]
+@i66_s = external global i66 ; <i66*> [#uses=1]
+@i67_l = external global i67 ; <i67*> [#uses=1]
+@i67_s = external global i67 ; <i67*> [#uses=1]
+@i68_l = external global i68 ; <i68*> [#uses=1]
+@i68_s = external global i68 ; <i68*> [#uses=1]
+@i69_l = external global i69 ; <i69*> [#uses=1]
+@i69_s = external global i69 ; <i69*> [#uses=1]
+@i70_l = external global i70 ; <i70*> [#uses=1]
+@i70_s = external global i70 ; <i70*> [#uses=1]
+@i71_l = external global i71 ; <i71*> [#uses=1]
+@i71_s = external global i71 ; <i71*> [#uses=1]
+@i72_l = external global i72 ; <i72*> [#uses=1]
+@i72_s = external global i72 ; <i72*> [#uses=1]
+@i73_l = external global i73 ; <i73*> [#uses=1]
+@i73_s = external global i73 ; <i73*> [#uses=1]
+@i74_l = external global i74 ; <i74*> [#uses=1]
+@i74_s = external global i74 ; <i74*> [#uses=1]
+@i75_l = external global i75 ; <i75*> [#uses=1]
+@i75_s = external global i75 ; <i75*> [#uses=1]
+@i76_l = external global i76 ; <i76*> [#uses=1]
+@i76_s = external global i76 ; <i76*> [#uses=1]
+@i77_l = external global i77 ; <i77*> [#uses=1]
+@i77_s = external global i77 ; <i77*> [#uses=1]
+@i78_l = external global i78 ; <i78*> [#uses=1]
+@i78_s = external global i78 ; <i78*> [#uses=1]
+@i79_l = external global i79 ; <i79*> [#uses=1]
+@i79_s = external global i79 ; <i79*> [#uses=1]
+@i80_l = external global i80 ; <i80*> [#uses=1]
+@i80_s = external global i80 ; <i80*> [#uses=1]
+@i81_l = external global i81 ; <i81*> [#uses=1]
+@i81_s = external global i81 ; <i81*> [#uses=1]
+@i82_l = external global i82 ; <i82*> [#uses=1]
+@i82_s = external global i82 ; <i82*> [#uses=1]
+@i83_l = external global i83 ; <i83*> [#uses=1]
+@i83_s = external global i83 ; <i83*> [#uses=1]
+@i84_l = external global i84 ; <i84*> [#uses=1]
+@i84_s = external global i84 ; <i84*> [#uses=1]
+@i85_l = external global i85 ; <i85*> [#uses=1]
+@i85_s = external global i85 ; <i85*> [#uses=1]
+@i86_l = external global i86 ; <i86*> [#uses=1]
+@i86_s = external global i86 ; <i86*> [#uses=1]
+@i87_l = external global i87 ; <i87*> [#uses=1]
+@i87_s = external global i87 ; <i87*> [#uses=1]
+@i88_l = external global i88 ; <i88*> [#uses=1]
+@i88_s = external global i88 ; <i88*> [#uses=1]
+@i89_l = external global i89 ; <i89*> [#uses=1]
+@i89_s = external global i89 ; <i89*> [#uses=1]
+@i90_l = external global i90 ; <i90*> [#uses=1]
+@i90_s = external global i90 ; <i90*> [#uses=1]
+@i91_l = external global i91 ; <i91*> [#uses=1]
+@i91_s = external global i91 ; <i91*> [#uses=1]
+@i92_l = external global i92 ; <i92*> [#uses=1]
+@i92_s = external global i92 ; <i92*> [#uses=1]
+@i93_l = external global i93 ; <i93*> [#uses=1]
+@i93_s = external global i93 ; <i93*> [#uses=1]
+@i94_l = external global i94 ; <i94*> [#uses=1]
+@i94_s = external global i94 ; <i94*> [#uses=1]
+@i95_l = external global i95 ; <i95*> [#uses=1]
+@i95_s = external global i95 ; <i95*> [#uses=1]
+@i96_l = external global i96 ; <i96*> [#uses=1]
+@i96_s = external global i96 ; <i96*> [#uses=1]
+@i97_l = external global i97 ; <i97*> [#uses=1]
+@i97_s = external global i97 ; <i97*> [#uses=1]
+@i98_l = external global i98 ; <i98*> [#uses=1]
+@i98_s = external global i98 ; <i98*> [#uses=1]
+@i99_l = external global i99 ; <i99*> [#uses=1]
+@i99_s = external global i99 ; <i99*> [#uses=1]
+@i100_l = external global i100 ; <i100*> [#uses=1]
+@i100_s = external global i100 ; <i100*> [#uses=1]
+@i101_l = external global i101 ; <i101*> [#uses=1]
+@i101_s = external global i101 ; <i101*> [#uses=1]
+@i102_l = external global i102 ; <i102*> [#uses=1]
+@i102_s = external global i102 ; <i102*> [#uses=1]
+@i103_l = external global i103 ; <i103*> [#uses=1]
+@i103_s = external global i103 ; <i103*> [#uses=1]
+@i104_l = external global i104 ; <i104*> [#uses=1]
+@i104_s = external global i104 ; <i104*> [#uses=1]
+@i105_l = external global i105 ; <i105*> [#uses=1]
+@i105_s = external global i105 ; <i105*> [#uses=1]
+@i106_l = external global i106 ; <i106*> [#uses=1]
+@i106_s = external global i106 ; <i106*> [#uses=1]
+@i107_l = external global i107 ; <i107*> [#uses=1]
+@i107_s = external global i107 ; <i107*> [#uses=1]
+@i108_l = external global i108 ; <i108*> [#uses=1]
+@i108_s = external global i108 ; <i108*> [#uses=1]
+@i109_l = external global i109 ; <i109*> [#uses=1]
+@i109_s = external global i109 ; <i109*> [#uses=1]
+@i110_l = external global i110 ; <i110*> [#uses=1]
+@i110_s = external global i110 ; <i110*> [#uses=1]
+@i111_l = external global i111 ; <i111*> [#uses=1]
+@i111_s = external global i111 ; <i111*> [#uses=1]
+@i112_l = external global i112 ; <i112*> [#uses=1]
+@i112_s = external global i112 ; <i112*> [#uses=1]
+@i113_l = external global i113 ; <i113*> [#uses=1]
+@i113_s = external global i113 ; <i113*> [#uses=1]
+@i114_l = external global i114 ; <i114*> [#uses=1]
+@i114_s = external global i114 ; <i114*> [#uses=1]
+@i115_l = external global i115 ; <i115*> [#uses=1]
+@i115_s = external global i115 ; <i115*> [#uses=1]
+@i116_l = external global i116 ; <i116*> [#uses=1]
+@i116_s = external global i116 ; <i116*> [#uses=1]
+@i117_l = external global i117 ; <i117*> [#uses=1]
+@i117_s = external global i117 ; <i117*> [#uses=1]
+@i118_l = external global i118 ; <i118*> [#uses=1]
+@i118_s = external global i118 ; <i118*> [#uses=1]
+@i119_l = external global i119 ; <i119*> [#uses=1]
+@i119_s = external global i119 ; <i119*> [#uses=1]
+@i120_l = external global i120 ; <i120*> [#uses=1]
+@i120_s = external global i120 ; <i120*> [#uses=1]
+@i121_l = external global i121 ; <i121*> [#uses=1]
+@i121_s = external global i121 ; <i121*> [#uses=1]
+@i122_l = external global i122 ; <i122*> [#uses=1]
+@i122_s = external global i122 ; <i122*> [#uses=1]
+@i123_l = external global i123 ; <i123*> [#uses=1]
+@i123_s = external global i123 ; <i123*> [#uses=1]
+@i124_l = external global i124 ; <i124*> [#uses=1]
+@i124_s = external global i124 ; <i124*> [#uses=1]
+@i125_l = external global i125 ; <i125*> [#uses=1]
+@i125_s = external global i125 ; <i125*> [#uses=1]
+@i126_l = external global i126 ; <i126*> [#uses=1]
+@i126_s = external global i126 ; <i126*> [#uses=1]
+@i127_l = external global i127 ; <i127*> [#uses=1]
+@i127_s = external global i127 ; <i127*> [#uses=1]
+@i128_l = external global i128 ; <i128*> [#uses=1]
+@i128_s = external global i128 ; <i128*> [#uses=1]
+@i129_l = external global i129 ; <i129*> [#uses=1]
+@i129_s = external global i129 ; <i129*> [#uses=1]
+@i130_l = external global i130 ; <i130*> [#uses=1]
+@i130_s = external global i130 ; <i130*> [#uses=1]
+@i131_l = external global i131 ; <i131*> [#uses=1]
+@i131_s = external global i131 ; <i131*> [#uses=1]
+@i132_l = external global i132 ; <i132*> [#uses=1]
+@i132_s = external global i132 ; <i132*> [#uses=1]
+@i133_l = external global i133 ; <i133*> [#uses=1]
+@i133_s = external global i133 ; <i133*> [#uses=1]
+@i134_l = external global i134 ; <i134*> [#uses=1]
+@i134_s = external global i134 ; <i134*> [#uses=1]
+@i135_l = external global i135 ; <i135*> [#uses=1]
+@i135_s = external global i135 ; <i135*> [#uses=1]
+@i136_l = external global i136 ; <i136*> [#uses=1]
+@i136_s = external global i136 ; <i136*> [#uses=1]
+@i137_l = external global i137 ; <i137*> [#uses=1]
+@i137_s = external global i137 ; <i137*> [#uses=1]
+@i138_l = external global i138 ; <i138*> [#uses=1]
+@i138_s = external global i138 ; <i138*> [#uses=1]
+@i139_l = external global i139 ; <i139*> [#uses=1]
+@i139_s = external global i139 ; <i139*> [#uses=1]
+@i140_l = external global i140 ; <i140*> [#uses=1]
+@i140_s = external global i140 ; <i140*> [#uses=1]
+@i141_l = external global i141 ; <i141*> [#uses=1]
+@i141_s = external global i141 ; <i141*> [#uses=1]
+@i142_l = external global i142 ; <i142*> [#uses=1]
+@i142_s = external global i142 ; <i142*> [#uses=1]
+@i143_l = external global i143 ; <i143*> [#uses=1]
+@i143_s = external global i143 ; <i143*> [#uses=1]
+@i144_l = external global i144 ; <i144*> [#uses=1]
+@i144_s = external global i144 ; <i144*> [#uses=1]
+@i145_l = external global i145 ; <i145*> [#uses=1]
+@i145_s = external global i145 ; <i145*> [#uses=1]
+@i146_l = external global i146 ; <i146*> [#uses=1]
+@i146_s = external global i146 ; <i146*> [#uses=1]
+@i147_l = external global i147 ; <i147*> [#uses=1]
+@i147_s = external global i147 ; <i147*> [#uses=1]
+@i148_l = external global i148 ; <i148*> [#uses=1]
+@i148_s = external global i148 ; <i148*> [#uses=1]
+@i149_l = external global i149 ; <i149*> [#uses=1]
+@i149_s = external global i149 ; <i149*> [#uses=1]
+@i150_l = external global i150 ; <i150*> [#uses=1]
+@i150_s = external global i150 ; <i150*> [#uses=1]
+@i151_l = external global i151 ; <i151*> [#uses=1]
+@i151_s = external global i151 ; <i151*> [#uses=1]
+@i152_l = external global i152 ; <i152*> [#uses=1]
+@i152_s = external global i152 ; <i152*> [#uses=1]
+@i153_l = external global i153 ; <i153*> [#uses=1]
+@i153_s = external global i153 ; <i153*> [#uses=1]
+@i154_l = external global i154 ; <i154*> [#uses=1]
+@i154_s = external global i154 ; <i154*> [#uses=1]
+@i155_l = external global i155 ; <i155*> [#uses=1]
+@i155_s = external global i155 ; <i155*> [#uses=1]
+@i156_l = external global i156 ; <i156*> [#uses=1]
+@i156_s = external global i156 ; <i156*> [#uses=1]
+@i157_l = external global i157 ; <i157*> [#uses=1]
+@i157_s = external global i157 ; <i157*> [#uses=1]
+@i158_l = external global i158 ; <i158*> [#uses=1]
+@i158_s = external global i158 ; <i158*> [#uses=1]
+@i159_l = external global i159 ; <i159*> [#uses=1]
+@i159_s = external global i159 ; <i159*> [#uses=1]
+@i160_l = external global i160 ; <i160*> [#uses=1]
+@i160_s = external global i160 ; <i160*> [#uses=1]
+@i161_l = external global i161 ; <i161*> [#uses=1]
+@i161_s = external global i161 ; <i161*> [#uses=1]
+@i162_l = external global i162 ; <i162*> [#uses=1]
+@i162_s = external global i162 ; <i162*> [#uses=1]
+@i163_l = external global i163 ; <i163*> [#uses=1]
+@i163_s = external global i163 ; <i163*> [#uses=1]
+@i164_l = external global i164 ; <i164*> [#uses=1]
+@i164_s = external global i164 ; <i164*> [#uses=1]
+@i165_l = external global i165 ; <i165*> [#uses=1]
+@i165_s = external global i165 ; <i165*> [#uses=1]
+@i166_l = external global i166 ; <i166*> [#uses=1]
+@i166_s = external global i166 ; <i166*> [#uses=1]
+@i167_l = external global i167 ; <i167*> [#uses=1]
+@i167_s = external global i167 ; <i167*> [#uses=1]
+@i168_l = external global i168 ; <i168*> [#uses=1]
+@i168_s = external global i168 ; <i168*> [#uses=1]
+@i169_l = external global i169 ; <i169*> [#uses=1]
+@i169_s = external global i169 ; <i169*> [#uses=1]
+@i170_l = external global i170 ; <i170*> [#uses=1]
+@i170_s = external global i170 ; <i170*> [#uses=1]
+@i171_l = external global i171 ; <i171*> [#uses=1]
+@i171_s = external global i171 ; <i171*> [#uses=1]
+@i172_l = external global i172 ; <i172*> [#uses=1]
+@i172_s = external global i172 ; <i172*> [#uses=1]
+@i173_l = external global i173 ; <i173*> [#uses=1]
+@i173_s = external global i173 ; <i173*> [#uses=1]
+@i174_l = external global i174 ; <i174*> [#uses=1]
+@i174_s = external global i174 ; <i174*> [#uses=1]
+@i175_l = external global i175 ; <i175*> [#uses=1]
+@i175_s = external global i175 ; <i175*> [#uses=1]
+@i176_l = external global i176 ; <i176*> [#uses=1]
+@i176_s = external global i176 ; <i176*> [#uses=1]
+@i177_l = external global i177 ; <i177*> [#uses=1]
+@i177_s = external global i177 ; <i177*> [#uses=1]
+@i178_l = external global i178 ; <i178*> [#uses=1]
+@i178_s = external global i178 ; <i178*> [#uses=1]
+@i179_l = external global i179 ; <i179*> [#uses=1]
+@i179_s = external global i179 ; <i179*> [#uses=1]
+@i180_l = external global i180 ; <i180*> [#uses=1]
+@i180_s = external global i180 ; <i180*> [#uses=1]
+@i181_l = external global i181 ; <i181*> [#uses=1]
+@i181_s = external global i181 ; <i181*> [#uses=1]
+@i182_l = external global i182 ; <i182*> [#uses=1]
+@i182_s = external global i182 ; <i182*> [#uses=1]
+@i183_l = external global i183 ; <i183*> [#uses=1]
+@i183_s = external global i183 ; <i183*> [#uses=1]
+@i184_l = external global i184 ; <i184*> [#uses=1]
+@i184_s = external global i184 ; <i184*> [#uses=1]
+@i185_l = external global i185 ; <i185*> [#uses=1]
+@i185_s = external global i185 ; <i185*> [#uses=1]
+@i186_l = external global i186 ; <i186*> [#uses=1]
+@i186_s = external global i186 ; <i186*> [#uses=1]
+@i187_l = external global i187 ; <i187*> [#uses=1]
+@i187_s = external global i187 ; <i187*> [#uses=1]
+@i188_l = external global i188 ; <i188*> [#uses=1]
+@i188_s = external global i188 ; <i188*> [#uses=1]
+@i189_l = external global i189 ; <i189*> [#uses=1]
+@i189_s = external global i189 ; <i189*> [#uses=1]
+@i190_l = external global i190 ; <i190*> [#uses=1]
+@i190_s = external global i190 ; <i190*> [#uses=1]
+@i191_l = external global i191 ; <i191*> [#uses=1]
+@i191_s = external global i191 ; <i191*> [#uses=1]
+@i192_l = external global i192 ; <i192*> [#uses=1]
+@i192_s = external global i192 ; <i192*> [#uses=1]
+@i193_l = external global i193 ; <i193*> [#uses=1]
+@i193_s = external global i193 ; <i193*> [#uses=1]
+@i194_l = external global i194 ; <i194*> [#uses=1]
+@i194_s = external global i194 ; <i194*> [#uses=1]
+@i195_l = external global i195 ; <i195*> [#uses=1]
+@i195_s = external global i195 ; <i195*> [#uses=1]
+@i196_l = external global i196 ; <i196*> [#uses=1]
+@i196_s = external global i196 ; <i196*> [#uses=1]
+@i197_l = external global i197 ; <i197*> [#uses=1]
+@i197_s = external global i197 ; <i197*> [#uses=1]
+@i198_l = external global i198 ; <i198*> [#uses=1]
+@i198_s = external global i198 ; <i198*> [#uses=1]
+@i199_l = external global i199 ; <i199*> [#uses=1]
+@i199_s = external global i199 ; <i199*> [#uses=1]
+@i200_l = external global i200 ; <i200*> [#uses=1]
+@i200_s = external global i200 ; <i200*> [#uses=1]
+@i201_l = external global i201 ; <i201*> [#uses=1]
+@i201_s = external global i201 ; <i201*> [#uses=1]
+@i202_l = external global i202 ; <i202*> [#uses=1]
+@i202_s = external global i202 ; <i202*> [#uses=1]
+@i203_l = external global i203 ; <i203*> [#uses=1]
+@i203_s = external global i203 ; <i203*> [#uses=1]
+@i204_l = external global i204 ; <i204*> [#uses=1]
+@i204_s = external global i204 ; <i204*> [#uses=1]
+@i205_l = external global i205 ; <i205*> [#uses=1]
+@i205_s = external global i205 ; <i205*> [#uses=1]
+@i206_l = external global i206 ; <i206*> [#uses=1]
+@i206_s = external global i206 ; <i206*> [#uses=1]
+@i207_l = external global i207 ; <i207*> [#uses=1]
+@i207_s = external global i207 ; <i207*> [#uses=1]
+@i208_l = external global i208 ; <i208*> [#uses=1]
+@i208_s = external global i208 ; <i208*> [#uses=1]
+@i209_l = external global i209 ; <i209*> [#uses=1]
+@i209_s = external global i209 ; <i209*> [#uses=1]
+@i210_l = external global i210 ; <i210*> [#uses=1]
+@i210_s = external global i210 ; <i210*> [#uses=1]
+@i211_l = external global i211 ; <i211*> [#uses=1]
+@i211_s = external global i211 ; <i211*> [#uses=1]
+@i212_l = external global i212 ; <i212*> [#uses=1]
+@i212_s = external global i212 ; <i212*> [#uses=1]
+@i213_l = external global i213 ; <i213*> [#uses=1]
+@i213_s = external global i213 ; <i213*> [#uses=1]
+@i214_l = external global i214 ; <i214*> [#uses=1]
+@i214_s = external global i214 ; <i214*> [#uses=1]
+@i215_l = external global i215 ; <i215*> [#uses=1]
+@i215_s = external global i215 ; <i215*> [#uses=1]
+@i216_l = external global i216 ; <i216*> [#uses=1]
+@i216_s = external global i216 ; <i216*> [#uses=1]
+@i217_l = external global i217 ; <i217*> [#uses=1]
+@i217_s = external global i217 ; <i217*> [#uses=1]
+@i218_l = external global i218 ; <i218*> [#uses=1]
+@i218_s = external global i218 ; <i218*> [#uses=1]
+@i219_l = external global i219 ; <i219*> [#uses=1]
+@i219_s = external global i219 ; <i219*> [#uses=1]
+@i220_l = external global i220 ; <i220*> [#uses=1]
+@i220_s = external global i220 ; <i220*> [#uses=1]
+@i221_l = external global i221 ; <i221*> [#uses=1]
+@i221_s = external global i221 ; <i221*> [#uses=1]
+@i222_l = external global i222 ; <i222*> [#uses=1]
+@i222_s = external global i222 ; <i222*> [#uses=1]
+@i223_l = external global i223 ; <i223*> [#uses=1]
+@i223_s = external global i223 ; <i223*> [#uses=1]
+@i224_l = external global i224 ; <i224*> [#uses=1]
+@i224_s = external global i224 ; <i224*> [#uses=1]
+@i225_l = external global i225 ; <i225*> [#uses=1]
+@i225_s = external global i225 ; <i225*> [#uses=1]
+@i226_l = external global i226 ; <i226*> [#uses=1]
+@i226_s = external global i226 ; <i226*> [#uses=1]
+@i227_l = external global i227 ; <i227*> [#uses=1]
+@i227_s = external global i227 ; <i227*> [#uses=1]
+@i228_l = external global i228 ; <i228*> [#uses=1]
+@i228_s = external global i228 ; <i228*> [#uses=1]
+@i229_l = external global i229 ; <i229*> [#uses=1]
+@i229_s = external global i229 ; <i229*> [#uses=1]
+@i230_l = external global i230 ; <i230*> [#uses=1]
+@i230_s = external global i230 ; <i230*> [#uses=1]
+@i231_l = external global i231 ; <i231*> [#uses=1]
+@i231_s = external global i231 ; <i231*> [#uses=1]
+@i232_l = external global i232 ; <i232*> [#uses=1]
+@i232_s = external global i232 ; <i232*> [#uses=1]
+@i233_l = external global i233 ; <i233*> [#uses=1]
+@i233_s = external global i233 ; <i233*> [#uses=1]
+@i234_l = external global i234 ; <i234*> [#uses=1]
+@i234_s = external global i234 ; <i234*> [#uses=1]
+@i235_l = external global i235 ; <i235*> [#uses=1]
+@i235_s = external global i235 ; <i235*> [#uses=1]
+@i236_l = external global i236 ; <i236*> [#uses=1]
+@i236_s = external global i236 ; <i236*> [#uses=1]
+@i237_l = external global i237 ; <i237*> [#uses=1]
+@i237_s = external global i237 ; <i237*> [#uses=1]
+@i238_l = external global i238 ; <i238*> [#uses=1]
+@i238_s = external global i238 ; <i238*> [#uses=1]
+@i239_l = external global i239 ; <i239*> [#uses=1]
+@i239_s = external global i239 ; <i239*> [#uses=1]
+@i240_l = external global i240 ; <i240*> [#uses=1]
+@i240_s = external global i240 ; <i240*> [#uses=1]
+@i241_l = external global i241 ; <i241*> [#uses=1]
+@i241_s = external global i241 ; <i241*> [#uses=1]
+@i242_l = external global i242 ; <i242*> [#uses=1]
+@i242_s = external global i242 ; <i242*> [#uses=1]
+@i243_l = external global i243 ; <i243*> [#uses=1]
+@i243_s = external global i243 ; <i243*> [#uses=1]
+@i244_l = external global i244 ; <i244*> [#uses=1]
+@i244_s = external global i244 ; <i244*> [#uses=1]
+@i245_l = external global i245 ; <i245*> [#uses=1]
+@i245_s = external global i245 ; <i245*> [#uses=1]
+@i246_l = external global i246 ; <i246*> [#uses=1]
+@i246_s = external global i246 ; <i246*> [#uses=1]
+@i247_l = external global i247 ; <i247*> [#uses=1]
+@i247_s = external global i247 ; <i247*> [#uses=1]
+@i248_l = external global i248 ; <i248*> [#uses=1]
+@i248_s = external global i248 ; <i248*> [#uses=1]
+@i249_l = external global i249 ; <i249*> [#uses=1]
+@i249_s = external global i249 ; <i249*> [#uses=1]
+@i250_l = external global i250 ; <i250*> [#uses=1]
+@i250_s = external global i250 ; <i250*> [#uses=1]
+@i251_l = external global i251 ; <i251*> [#uses=1]
+@i251_s = external global i251 ; <i251*> [#uses=1]
+@i252_l = external global i252 ; <i252*> [#uses=1]
+@i252_s = external global i252 ; <i252*> [#uses=1]
+@i253_l = external global i253 ; <i253*> [#uses=1]
+@i253_s = external global i253 ; <i253*> [#uses=1]
+@i254_l = external global i254 ; <i254*> [#uses=1]
+@i254_s = external global i254 ; <i254*> [#uses=1]
+@i255_l = external global i255 ; <i255*> [#uses=1]
+@i255_s = external global i255 ; <i255*> [#uses=1]
+@i256_l = external global i256 ; <i256*> [#uses=1]
+@i256_s = external global i256 ; <i256*> [#uses=1]
+
+define void @i1_ls() nounwind {
+ %tmp = load i1* @i1_l ; <i1> [#uses=1]
+ store i1 %tmp, i1* @i1_s
+ ret void
+}
+
+define void @i2_ls() nounwind {
+ %tmp = load i2* @i2_l ; <i2> [#uses=1]
+ store i2 %tmp, i2* @i2_s
+ ret void
+}
+
+define void @i3_ls() nounwind {
+ %tmp = load i3* @i3_l ; <i3> [#uses=1]
+ store i3 %tmp, i3* @i3_s
+ ret void
+}
+
+define void @i4_ls() nounwind {
+ %tmp = load i4* @i4_l ; <i4> [#uses=1]
+ store i4 %tmp, i4* @i4_s
+ ret void
+}
+
+define void @i5_ls() nounwind {
+ %tmp = load i5* @i5_l ; <i5> [#uses=1]
+ store i5 %tmp, i5* @i5_s
+ ret void
+}
+
+define void @i6_ls() nounwind {
+ %tmp = load i6* @i6_l ; <i6> [#uses=1]
+ store i6 %tmp, i6* @i6_s
+ ret void
+}
+
+define void @i7_ls() nounwind {
+ %tmp = load i7* @i7_l ; <i7> [#uses=1]
+ store i7 %tmp, i7* @i7_s
+ ret void
+}
+
+define void @i8_ls() nounwind {
+ %tmp = load i8* @i8_l ; <i8> [#uses=1]
+ store i8 %tmp, i8* @i8_s
+ ret void
+}
+
+define void @i9_ls() nounwind {
+ %tmp = load i9* @i9_l ; <i9> [#uses=1]
+ store i9 %tmp, i9* @i9_s
+ ret void
+}
+
+define void @i10_ls() nounwind {
+ %tmp = load i10* @i10_l ; <i10> [#uses=1]
+ store i10 %tmp, i10* @i10_s
+ ret void
+}
+
+define void @i11_ls() nounwind {
+ %tmp = load i11* @i11_l ; <i11> [#uses=1]
+ store i11 %tmp, i11* @i11_s
+ ret void
+}
+
+define void @i12_ls() nounwind {
+ %tmp = load i12* @i12_l ; <i12> [#uses=1]
+ store i12 %tmp, i12* @i12_s
+ ret void
+}
+
+define void @i13_ls() nounwind {
+ %tmp = load i13* @i13_l ; <i13> [#uses=1]
+ store i13 %tmp, i13* @i13_s
+ ret void
+}
+
+define void @i14_ls() nounwind {
+ %tmp = load i14* @i14_l ; <i14> [#uses=1]
+ store i14 %tmp, i14* @i14_s
+ ret void
+}
+
+define void @i15_ls() nounwind {
+ %tmp = load i15* @i15_l ; <i15> [#uses=1]
+ store i15 %tmp, i15* @i15_s
+ ret void
+}
+
+define void @i16_ls() nounwind {
+ %tmp = load i16* @i16_l ; <i16> [#uses=1]
+ store i16 %tmp, i16* @i16_s
+ ret void
+}
+
+define void @i17_ls() nounwind {
+ %tmp = load i17* @i17_l ; <i17> [#uses=1]
+ store i17 %tmp, i17* @i17_s
+ ret void
+}
+
+define void @i18_ls() nounwind {
+ %tmp = load i18* @i18_l ; <i18> [#uses=1]
+ store i18 %tmp, i18* @i18_s
+ ret void
+}
+
+define void @i19_ls() nounwind {
+ %tmp = load i19* @i19_l ; <i19> [#uses=1]
+ store i19 %tmp, i19* @i19_s
+ ret void
+}
+
+define void @i20_ls() nounwind {
+ %tmp = load i20* @i20_l ; <i20> [#uses=1]
+ store i20 %tmp, i20* @i20_s
+ ret void
+}
+
+define void @i21_ls() nounwind {
+ %tmp = load i21* @i21_l ; <i21> [#uses=1]
+ store i21 %tmp, i21* @i21_s
+ ret void
+}
+
+define void @i22_ls() nounwind {
+ %tmp = load i22* @i22_l ; <i22> [#uses=1]
+ store i22 %tmp, i22* @i22_s
+ ret void
+}
+
+define void @i23_ls() nounwind {
+ %tmp = load i23* @i23_l ; <i23> [#uses=1]
+ store i23 %tmp, i23* @i23_s
+ ret void
+}
+
+define void @i24_ls() nounwind {
+ %tmp = load i24* @i24_l ; <i24> [#uses=1]
+ store i24 %tmp, i24* @i24_s
+ ret void
+}
+
+define void @i25_ls() nounwind {
+ %tmp = load i25* @i25_l ; <i25> [#uses=1]
+ store i25 %tmp, i25* @i25_s
+ ret void
+}
+
+define void @i26_ls() nounwind {
+ %tmp = load i26* @i26_l ; <i26> [#uses=1]
+ store i26 %tmp, i26* @i26_s
+ ret void
+}
+
+define void @i27_ls() nounwind {
+ %tmp = load i27* @i27_l ; <i27> [#uses=1]
+ store i27 %tmp, i27* @i27_s
+ ret void
+}
+
+define void @i28_ls() nounwind {
+ %tmp = load i28* @i28_l ; <i28> [#uses=1]
+ store i28 %tmp, i28* @i28_s
+ ret void
+}
+
+define void @i29_ls() nounwind {
+ %tmp = load i29* @i29_l ; <i29> [#uses=1]
+ store i29 %tmp, i29* @i29_s
+ ret void
+}
+
+define void @i30_ls() nounwind {
+ %tmp = load i30* @i30_l ; <i30> [#uses=1]
+ store i30 %tmp, i30* @i30_s
+ ret void
+}
+
+define void @i31_ls() nounwind {
+ %tmp = load i31* @i31_l ; <i31> [#uses=1]
+ store i31 %tmp, i31* @i31_s
+ ret void
+}
+
+define void @i32_ls() nounwind {
+ %tmp = load i32* @i32_l ; <i32> [#uses=1]
+ store i32 %tmp, i32* @i32_s
+ ret void
+}
+
+define void @i33_ls() nounwind {
+ %tmp = load i33* @i33_l ; <i33> [#uses=1]
+ store i33 %tmp, i33* @i33_s
+ ret void
+}
+
+define void @i34_ls() nounwind {
+ %tmp = load i34* @i34_l ; <i34> [#uses=1]
+ store i34 %tmp, i34* @i34_s
+ ret void
+}
+
+define void @i35_ls() nounwind {
+ %tmp = load i35* @i35_l ; <i35> [#uses=1]
+ store i35 %tmp, i35* @i35_s
+ ret void
+}
+
+define void @i36_ls() nounwind {
+ %tmp = load i36* @i36_l ; <i36> [#uses=1]
+ store i36 %tmp, i36* @i36_s
+ ret void
+}
+
+define void @i37_ls() nounwind {
+ %tmp = load i37* @i37_l ; <i37> [#uses=1]
+ store i37 %tmp, i37* @i37_s
+ ret void
+}
+
+define void @i38_ls() nounwind {
+ %tmp = load i38* @i38_l ; <i38> [#uses=1]
+ store i38 %tmp, i38* @i38_s
+ ret void
+}
+
+define void @i39_ls() nounwind {
+ %tmp = load i39* @i39_l ; <i39> [#uses=1]
+ store i39 %tmp, i39* @i39_s
+ ret void
+}
+
+define void @i40_ls() nounwind {
+ %tmp = load i40* @i40_l ; <i40> [#uses=1]
+ store i40 %tmp, i40* @i40_s
+ ret void
+}
+
+define void @i41_ls() nounwind {
+ %tmp = load i41* @i41_l ; <i41> [#uses=1]
+ store i41 %tmp, i41* @i41_s
+ ret void
+}
+
+define void @i42_ls() nounwind {
+ %tmp = load i42* @i42_l ; <i42> [#uses=1]
+ store i42 %tmp, i42* @i42_s
+ ret void
+}
+
+define void @i43_ls() nounwind {
+ %tmp = load i43* @i43_l ; <i43> [#uses=1]
+ store i43 %tmp, i43* @i43_s
+ ret void
+}
+
+define void @i44_ls() nounwind {
+ %tmp = load i44* @i44_l ; <i44> [#uses=1]
+ store i44 %tmp, i44* @i44_s
+ ret void
+}
+
+define void @i45_ls() nounwind {
+ %tmp = load i45* @i45_l ; <i45> [#uses=1]
+ store i45 %tmp, i45* @i45_s
+ ret void
+}
+
+define void @i46_ls() nounwind {
+ %tmp = load i46* @i46_l ; <i46> [#uses=1]
+ store i46 %tmp, i46* @i46_s
+ ret void
+}
+
+define void @i47_ls() nounwind {
+ %tmp = load i47* @i47_l ; <i47> [#uses=1]
+ store i47 %tmp, i47* @i47_s
+ ret void
+}
+
+define void @i48_ls() nounwind {
+ %tmp = load i48* @i48_l ; <i48> [#uses=1]
+ store i48 %tmp, i48* @i48_s
+ ret void
+}
+
+define void @i49_ls() nounwind {
+ %tmp = load i49* @i49_l ; <i49> [#uses=1]
+ store i49 %tmp, i49* @i49_s
+ ret void
+}
+
+define void @i50_ls() nounwind {
+ %tmp = load i50* @i50_l ; <i50> [#uses=1]
+ store i50 %tmp, i50* @i50_s
+ ret void
+}
+
+define void @i51_ls() nounwind {
+ %tmp = load i51* @i51_l ; <i51> [#uses=1]
+ store i51 %tmp, i51* @i51_s
+ ret void
+}
+
+define void @i52_ls() nounwind {
+ %tmp = load i52* @i52_l ; <i52> [#uses=1]
+ store i52 %tmp, i52* @i52_s
+ ret void
+}
+
+define void @i53_ls() nounwind {
+ %tmp = load i53* @i53_l ; <i53> [#uses=1]
+ store i53 %tmp, i53* @i53_s
+ ret void
+}
+
+define void @i54_ls() nounwind {
+ %tmp = load i54* @i54_l ; <i54> [#uses=1]
+ store i54 %tmp, i54* @i54_s
+ ret void
+}
+
+define void @i55_ls() nounwind {
+ %tmp = load i55* @i55_l ; <i55> [#uses=1]
+ store i55 %tmp, i55* @i55_s
+ ret void
+}
+
+define void @i56_ls() nounwind {
+ %tmp = load i56* @i56_l ; <i56> [#uses=1]
+ store i56 %tmp, i56* @i56_s
+ ret void
+}
+
+define void @i57_ls() nounwind {
+ %tmp = load i57* @i57_l ; <i57> [#uses=1]
+ store i57 %tmp, i57* @i57_s
+ ret void
+}
+
+define void @i58_ls() nounwind {
+ %tmp = load i58* @i58_l ; <i58> [#uses=1]
+ store i58 %tmp, i58* @i58_s
+ ret void
+}
+
+define void @i59_ls() nounwind {
+ %tmp = load i59* @i59_l ; <i59> [#uses=1]
+ store i59 %tmp, i59* @i59_s
+ ret void
+}
+
+define void @i60_ls() nounwind {
+ %tmp = load i60* @i60_l ; <i60> [#uses=1]
+ store i60 %tmp, i60* @i60_s
+ ret void
+}
+
+define void @i61_ls() nounwind {
+ %tmp = load i61* @i61_l ; <i61> [#uses=1]
+ store i61 %tmp, i61* @i61_s
+ ret void
+}
+
+define void @i62_ls() nounwind {
+ %tmp = load i62* @i62_l ; <i62> [#uses=1]
+ store i62 %tmp, i62* @i62_s
+ ret void
+}
+
+define void @i63_ls() nounwind {
+ %tmp = load i63* @i63_l ; <i63> [#uses=1]
+ store i63 %tmp, i63* @i63_s
+ ret void
+}
+
+define void @i64_ls() nounwind {
+ %tmp = load i64* @i64_l ; <i64> [#uses=1]
+ store i64 %tmp, i64* @i64_s
+ ret void
+}
+
+define void @i65_ls() nounwind {
+ %tmp = load i65* @i65_l ; <i65> [#uses=1]
+ store i65 %tmp, i65* @i65_s
+ ret void
+}
+
+define void @i66_ls() nounwind {
+ %tmp = load i66* @i66_l ; <i66> [#uses=1]
+ store i66 %tmp, i66* @i66_s
+ ret void
+}
+
+define void @i67_ls() nounwind {
+ %tmp = load i67* @i67_l ; <i67> [#uses=1]
+ store i67 %tmp, i67* @i67_s
+ ret void
+}
+
+define void @i68_ls() nounwind {
+ %tmp = load i68* @i68_l ; <i68> [#uses=1]
+ store i68 %tmp, i68* @i68_s
+ ret void
+}
+
+define void @i69_ls() nounwind {
+ %tmp = load i69* @i69_l ; <i69> [#uses=1]
+ store i69 %tmp, i69* @i69_s
+ ret void
+}
+
+define void @i70_ls() nounwind {
+ %tmp = load i70* @i70_l ; <i70> [#uses=1]
+ store i70 %tmp, i70* @i70_s
+ ret void
+}
+
+define void @i71_ls() nounwind {
+ %tmp = load i71* @i71_l ; <i71> [#uses=1]
+ store i71 %tmp, i71* @i71_s
+ ret void
+}
+
+define void @i72_ls() nounwind {
+ %tmp = load i72* @i72_l ; <i72> [#uses=1]
+ store i72 %tmp, i72* @i72_s
+ ret void
+}
+
+define void @i73_ls() nounwind {
+ %tmp = load i73* @i73_l ; <i73> [#uses=1]
+ store i73 %tmp, i73* @i73_s
+ ret void
+}
+
+define void @i74_ls() nounwind {
+ %tmp = load i74* @i74_l ; <i74> [#uses=1]
+ store i74 %tmp, i74* @i74_s
+ ret void
+}
+
+define void @i75_ls() nounwind {
+ %tmp = load i75* @i75_l ; <i75> [#uses=1]
+ store i75 %tmp, i75* @i75_s
+ ret void
+}
+
+define void @i76_ls() nounwind {
+ %tmp = load i76* @i76_l ; <i76> [#uses=1]
+ store i76 %tmp, i76* @i76_s
+ ret void
+}
+
+define void @i77_ls() nounwind {
+ %tmp = load i77* @i77_l ; <i77> [#uses=1]
+ store i77 %tmp, i77* @i77_s
+ ret void
+}
+
+define void @i78_ls() nounwind {
+ %tmp = load i78* @i78_l ; <i78> [#uses=1]
+ store i78 %tmp, i78* @i78_s
+ ret void
+}
+
+define void @i79_ls() nounwind {
+ %tmp = load i79* @i79_l ; <i79> [#uses=1]
+ store i79 %tmp, i79* @i79_s
+ ret void
+}
+
+define void @i80_ls() nounwind {
+ %tmp = load i80* @i80_l ; <i80> [#uses=1]
+ store i80 %tmp, i80* @i80_s
+ ret void
+}
+
+define void @i81_ls() nounwind {
+ %tmp = load i81* @i81_l ; <i81> [#uses=1]
+ store i81 %tmp, i81* @i81_s
+ ret void
+}
+
+define void @i82_ls() nounwind {
+ %tmp = load i82* @i82_l ; <i82> [#uses=1]
+ store i82 %tmp, i82* @i82_s
+ ret void
+}
+
+define void @i83_ls() nounwind {
+ %tmp = load i83* @i83_l ; <i83> [#uses=1]
+ store i83 %tmp, i83* @i83_s
+ ret void
+}
+
+define void @i84_ls() nounwind {
+ %tmp = load i84* @i84_l ; <i84> [#uses=1]
+ store i84 %tmp, i84* @i84_s
+ ret void
+}
+
+define void @i85_ls() nounwind {
+ %tmp = load i85* @i85_l ; <i85> [#uses=1]
+ store i85 %tmp, i85* @i85_s
+ ret void
+}
+
+define void @i86_ls() nounwind {
+ %tmp = load i86* @i86_l ; <i86> [#uses=1]
+ store i86 %tmp, i86* @i86_s
+ ret void
+}
+
+define void @i87_ls() nounwind {
+ %tmp = load i87* @i87_l ; <i87> [#uses=1]
+ store i87 %tmp, i87* @i87_s
+ ret void
+}
+
+define void @i88_ls() nounwind {
+ %tmp = load i88* @i88_l ; <i88> [#uses=1]
+ store i88 %tmp, i88* @i88_s
+ ret void
+}
+
+define void @i89_ls() nounwind {
+ %tmp = load i89* @i89_l ; <i89> [#uses=1]
+ store i89 %tmp, i89* @i89_s
+ ret void
+}
+
+define void @i90_ls() nounwind {
+ %tmp = load i90* @i90_l ; <i90> [#uses=1]
+ store i90 %tmp, i90* @i90_s
+ ret void
+}
+
+define void @i91_ls() nounwind {
+ %tmp = load i91* @i91_l ; <i91> [#uses=1]
+ store i91 %tmp, i91* @i91_s
+ ret void
+}
+
+define void @i92_ls() nounwind {
+ %tmp = load i92* @i92_l ; <i92> [#uses=1]
+ store i92 %tmp, i92* @i92_s
+ ret void
+}
+
+define void @i93_ls() nounwind {
+ %tmp = load i93* @i93_l ; <i93> [#uses=1]
+ store i93 %tmp, i93* @i93_s
+ ret void
+}
+
+define void @i94_ls() nounwind {
+ %tmp = load i94* @i94_l ; <i94> [#uses=1]
+ store i94 %tmp, i94* @i94_s
+ ret void
+}
+
+define void @i95_ls() nounwind {
+ %tmp = load i95* @i95_l ; <i95> [#uses=1]
+ store i95 %tmp, i95* @i95_s
+ ret void
+}
+
+define void @i96_ls() nounwind {
+ %tmp = load i96* @i96_l ; <i96> [#uses=1]
+ store i96 %tmp, i96* @i96_s
+ ret void
+}
+
+define void @i97_ls() nounwind {
+ %tmp = load i97* @i97_l ; <i97> [#uses=1]
+ store i97 %tmp, i97* @i97_s
+ ret void
+}
+
+define void @i98_ls() nounwind {
+ %tmp = load i98* @i98_l ; <i98> [#uses=1]
+ store i98 %tmp, i98* @i98_s
+ ret void
+}
+
+define void @i99_ls() nounwind {
+ %tmp = load i99* @i99_l ; <i99> [#uses=1]
+ store i99 %tmp, i99* @i99_s
+ ret void
+}
+
+define void @i100_ls() nounwind {
+ %tmp = load i100* @i100_l ; <i100> [#uses=1]
+ store i100 %tmp, i100* @i100_s
+ ret void
+}
+
+define void @i101_ls() nounwind {
+ %tmp = load i101* @i101_l ; <i101> [#uses=1]
+ store i101 %tmp, i101* @i101_s
+ ret void
+}
+
+define void @i102_ls() nounwind {
+ %tmp = load i102* @i102_l ; <i102> [#uses=1]
+ store i102 %tmp, i102* @i102_s
+ ret void
+}
+
+define void @i103_ls() nounwind {
+ %tmp = load i103* @i103_l ; <i103> [#uses=1]
+ store i103 %tmp, i103* @i103_s
+ ret void
+}
+
+define void @i104_ls() nounwind {
+ %tmp = load i104* @i104_l ; <i104> [#uses=1]
+ store i104 %tmp, i104* @i104_s
+ ret void
+}
+
+define void @i105_ls() nounwind {
+ %tmp = load i105* @i105_l ; <i105> [#uses=1]
+ store i105 %tmp, i105* @i105_s
+ ret void
+}
+
+define void @i106_ls() nounwind {
+ %tmp = load i106* @i106_l ; <i106> [#uses=1]
+ store i106 %tmp, i106* @i106_s
+ ret void
+}
+
+define void @i107_ls() nounwind {
+ %tmp = load i107* @i107_l ; <i107> [#uses=1]
+ store i107 %tmp, i107* @i107_s
+ ret void
+}
+
+define void @i108_ls() nounwind {
+ %tmp = load i108* @i108_l ; <i108> [#uses=1]
+ store i108 %tmp, i108* @i108_s
+ ret void
+}
+
+define void @i109_ls() nounwind {
+ %tmp = load i109* @i109_l ; <i109> [#uses=1]
+ store i109 %tmp, i109* @i109_s
+ ret void
+}
+
+define void @i110_ls() nounwind {
+ %tmp = load i110* @i110_l ; <i110> [#uses=1]
+ store i110 %tmp, i110* @i110_s
+ ret void
+}
+
+define void @i111_ls() nounwind {
+ %tmp = load i111* @i111_l ; <i111> [#uses=1]
+ store i111 %tmp, i111* @i111_s
+ ret void
+}
+
+define void @i112_ls() nounwind {
+ %tmp = load i112* @i112_l ; <i112> [#uses=1]
+ store i112 %tmp, i112* @i112_s
+ ret void
+}
+
+define void @i113_ls() nounwind {
+ %tmp = load i113* @i113_l ; <i113> [#uses=1]
+ store i113 %tmp, i113* @i113_s
+ ret void
+}
+
+define void @i114_ls() nounwind {
+ %tmp = load i114* @i114_l ; <i114> [#uses=1]
+ store i114 %tmp, i114* @i114_s
+ ret void
+}
+
+define void @i115_ls() nounwind {
+ %tmp = load i115* @i115_l ; <i115> [#uses=1]
+ store i115 %tmp, i115* @i115_s
+ ret void
+}
+
+define void @i116_ls() nounwind {
+ %tmp = load i116* @i116_l ; <i116> [#uses=1]
+ store i116 %tmp, i116* @i116_s
+ ret void
+}
+
+define void @i117_ls() nounwind {
+ %tmp = load i117* @i117_l ; <i117> [#uses=1]
+ store i117 %tmp, i117* @i117_s
+ ret void
+}
+
+define void @i118_ls() nounwind {
+ %tmp = load i118* @i118_l ; <i118> [#uses=1]
+ store i118 %tmp, i118* @i118_s
+ ret void
+}
+
+define void @i119_ls() nounwind {
+ %tmp = load i119* @i119_l ; <i119> [#uses=1]
+ store i119 %tmp, i119* @i119_s
+ ret void
+}
+
+define void @i120_ls() nounwind {
+ %tmp = load i120* @i120_l ; <i120> [#uses=1]
+ store i120 %tmp, i120* @i120_s
+ ret void
+}
+
+define void @i121_ls() nounwind {
+ %tmp = load i121* @i121_l ; <i121> [#uses=1]
+ store i121 %tmp, i121* @i121_s
+ ret void
+}
+
+define void @i122_ls() nounwind {
+ %tmp = load i122* @i122_l ; <i122> [#uses=1]
+ store i122 %tmp, i122* @i122_s
+ ret void
+}
+
+define void @i123_ls() nounwind {
+ %tmp = load i123* @i123_l ; <i123> [#uses=1]
+ store i123 %tmp, i123* @i123_s
+ ret void
+}
+
+define void @i124_ls() nounwind {
+ %tmp = load i124* @i124_l ; <i124> [#uses=1]
+ store i124 %tmp, i124* @i124_s
+ ret void
+}
+
+define void @i125_ls() nounwind {
+ %tmp = load i125* @i125_l ; <i125> [#uses=1]
+ store i125 %tmp, i125* @i125_s
+ ret void
+}
+
+define void @i126_ls() nounwind {
+ %tmp = load i126* @i126_l ; <i126> [#uses=1]
+ store i126 %tmp, i126* @i126_s
+ ret void
+}
+
+define void @i127_ls() nounwind {
+ %tmp = load i127* @i127_l ; <i127> [#uses=1]
+ store i127 %tmp, i127* @i127_s
+ ret void
+}
+
+define void @i128_ls() nounwind {
+ %tmp = load i128* @i128_l ; <i128> [#uses=1]
+ store i128 %tmp, i128* @i128_s
+ ret void
+}
+
+define void @i129_ls() nounwind {
+ %tmp = load i129* @i129_l ; <i129> [#uses=1]
+ store i129 %tmp, i129* @i129_s
+ ret void
+}
+
+define void @i130_ls() nounwind {
+ %tmp = load i130* @i130_l ; <i130> [#uses=1]
+ store i130 %tmp, i130* @i130_s
+ ret void
+}
+
+define void @i131_ls() nounwind {
+ %tmp = load i131* @i131_l ; <i131> [#uses=1]
+ store i131 %tmp, i131* @i131_s
+ ret void
+}
+
+define void @i132_ls() nounwind {
+ %tmp = load i132* @i132_l ; <i132> [#uses=1]
+ store i132 %tmp, i132* @i132_s
+ ret void
+}
+
+define void @i133_ls() nounwind {
+ %tmp = load i133* @i133_l ; <i133> [#uses=1]
+ store i133 %tmp, i133* @i133_s
+ ret void
+}
+
+define void @i134_ls() nounwind {
+ %tmp = load i134* @i134_l ; <i134> [#uses=1]
+ store i134 %tmp, i134* @i134_s
+ ret void
+}
+
+define void @i135_ls() nounwind {
+ %tmp = load i135* @i135_l ; <i135> [#uses=1]
+ store i135 %tmp, i135* @i135_s
+ ret void
+}
+
+define void @i136_ls() nounwind {
+ %tmp = load i136* @i136_l ; <i136> [#uses=1]
+ store i136 %tmp, i136* @i136_s
+ ret void
+}
+
+define void @i137_ls() nounwind {
+ %tmp = load i137* @i137_l ; <i137> [#uses=1]
+ store i137 %tmp, i137* @i137_s
+ ret void
+}
+
+define void @i138_ls() nounwind {
+ %tmp = load i138* @i138_l ; <i138> [#uses=1]
+ store i138 %tmp, i138* @i138_s
+ ret void
+}
+
+define void @i139_ls() nounwind {
+ %tmp = load i139* @i139_l ; <i139> [#uses=1]
+ store i139 %tmp, i139* @i139_s
+ ret void
+}
+
+define void @i140_ls() nounwind {
+ %tmp = load i140* @i140_l ; <i140> [#uses=1]
+ store i140 %tmp, i140* @i140_s
+ ret void
+}
+
+define void @i141_ls() nounwind {
+ %tmp = load i141* @i141_l ; <i141> [#uses=1]
+ store i141 %tmp, i141* @i141_s
+ ret void
+}
+
+define void @i142_ls() nounwind {
+ %tmp = load i142* @i142_l ; <i142> [#uses=1]
+ store i142 %tmp, i142* @i142_s
+ ret void
+}
+
+define void @i143_ls() nounwind {
+ %tmp = load i143* @i143_l ; <i143> [#uses=1]
+ store i143 %tmp, i143* @i143_s
+ ret void
+}
+
+define void @i144_ls() nounwind {
+ %tmp = load i144* @i144_l ; <i144> [#uses=1]
+ store i144 %tmp, i144* @i144_s
+ ret void
+}
+
+define void @i145_ls() nounwind {
+ %tmp = load i145* @i145_l ; <i145> [#uses=1]
+ store i145 %tmp, i145* @i145_s
+ ret void
+}
+
+define void @i146_ls() nounwind {
+ %tmp = load i146* @i146_l ; <i146> [#uses=1]
+ store i146 %tmp, i146* @i146_s
+ ret void
+}
+
+define void @i147_ls() nounwind {
+ %tmp = load i147* @i147_l ; <i147> [#uses=1]
+ store i147 %tmp, i147* @i147_s
+ ret void
+}
+
+define void @i148_ls() nounwind {
+ %tmp = load i148* @i148_l ; <i148> [#uses=1]
+ store i148 %tmp, i148* @i148_s
+ ret void
+}
+
+define void @i149_ls() nounwind {
+ %tmp = load i149* @i149_l ; <i149> [#uses=1]
+ store i149 %tmp, i149* @i149_s
+ ret void
+}
+
+define void @i150_ls() nounwind {
+ %tmp = load i150* @i150_l ; <i150> [#uses=1]
+ store i150 %tmp, i150* @i150_s
+ ret void
+}
+
+define void @i151_ls() nounwind {
+ %tmp = load i151* @i151_l ; <i151> [#uses=1]
+ store i151 %tmp, i151* @i151_s
+ ret void
+}
+
+define void @i152_ls() nounwind {
+ %tmp = load i152* @i152_l ; <i152> [#uses=1]
+ store i152 %tmp, i152* @i152_s
+ ret void
+}
+
+define void @i153_ls() nounwind {
+ %tmp = load i153* @i153_l ; <i153> [#uses=1]
+ store i153 %tmp, i153* @i153_s
+ ret void
+}
+
+define void @i154_ls() nounwind {
+ %tmp = load i154* @i154_l ; <i154> [#uses=1]
+ store i154 %tmp, i154* @i154_s
+ ret void
+}
+
+define void @i155_ls() nounwind {
+ %tmp = load i155* @i155_l ; <i155> [#uses=1]
+ store i155 %tmp, i155* @i155_s
+ ret void
+}
+
+define void @i156_ls() nounwind {
+ %tmp = load i156* @i156_l ; <i156> [#uses=1]
+ store i156 %tmp, i156* @i156_s
+ ret void
+}
+
+define void @i157_ls() nounwind {
+ %tmp = load i157* @i157_l ; <i157> [#uses=1]
+ store i157 %tmp, i157* @i157_s
+ ret void
+}
+
+define void @i158_ls() nounwind {
+ %tmp = load i158* @i158_l ; <i158> [#uses=1]
+ store i158 %tmp, i158* @i158_s
+ ret void
+}
+
+define void @i159_ls() nounwind {
+ %tmp = load i159* @i159_l ; <i159> [#uses=1]
+ store i159 %tmp, i159* @i159_s
+ ret void
+}
+
+define void @i160_ls() nounwind {
+ %tmp = load i160* @i160_l ; <i160> [#uses=1]
+ store i160 %tmp, i160* @i160_s
+ ret void
+}
+
+define void @i161_ls() nounwind {
+ %tmp = load i161* @i161_l ; <i161> [#uses=1]
+ store i161 %tmp, i161* @i161_s
+ ret void
+}
+
+define void @i162_ls() nounwind {
+ %tmp = load i162* @i162_l ; <i162> [#uses=1]
+ store i162 %tmp, i162* @i162_s
+ ret void
+}
+
+define void @i163_ls() nounwind {
+ %tmp = load i163* @i163_l ; <i163> [#uses=1]
+ store i163 %tmp, i163* @i163_s
+ ret void
+}
+
+define void @i164_ls() nounwind {
+ %tmp = load i164* @i164_l ; <i164> [#uses=1]
+ store i164 %tmp, i164* @i164_s
+ ret void
+}
+
+define void @i165_ls() nounwind {
+ %tmp = load i165* @i165_l ; <i165> [#uses=1]
+ store i165 %tmp, i165* @i165_s
+ ret void
+}
+
+define void @i166_ls() nounwind {
+ %tmp = load i166* @i166_l ; <i166> [#uses=1]
+ store i166 %tmp, i166* @i166_s
+ ret void
+}
+
+define void @i167_ls() nounwind {
+ %tmp = load i167* @i167_l ; <i167> [#uses=1]
+ store i167 %tmp, i167* @i167_s
+ ret void
+}
+
+define void @i168_ls() nounwind {
+ %tmp = load i168* @i168_l ; <i168> [#uses=1]
+ store i168 %tmp, i168* @i168_s
+ ret void
+}
+
+define void @i169_ls() nounwind {
+ %tmp = load i169* @i169_l ; <i169> [#uses=1]
+ store i169 %tmp, i169* @i169_s
+ ret void
+}
+
+define void @i170_ls() nounwind {
+ %tmp = load i170* @i170_l ; <i170> [#uses=1]
+ store i170 %tmp, i170* @i170_s
+ ret void
+}
+
+define void @i171_ls() nounwind {
+ %tmp = load i171* @i171_l ; <i171> [#uses=1]
+ store i171 %tmp, i171* @i171_s
+ ret void
+}
+
+define void @i172_ls() nounwind {
+ %tmp = load i172* @i172_l ; <i172> [#uses=1]
+ store i172 %tmp, i172* @i172_s
+ ret void
+}
+
+define void @i173_ls() nounwind {
+ %tmp = load i173* @i173_l ; <i173> [#uses=1]
+ store i173 %tmp, i173* @i173_s
+ ret void
+}
+
+define void @i174_ls() nounwind {
+ %tmp = load i174* @i174_l ; <i174> [#uses=1]
+ store i174 %tmp, i174* @i174_s
+ ret void
+}
+
+define void @i175_ls() nounwind {
+ %tmp = load i175* @i175_l ; <i175> [#uses=1]
+ store i175 %tmp, i175* @i175_s
+ ret void
+}
+
+define void @i176_ls() nounwind {
+ %tmp = load i176* @i176_l ; <i176> [#uses=1]
+ store i176 %tmp, i176* @i176_s
+ ret void
+}
+
+define void @i177_ls() nounwind {
+ %tmp = load i177* @i177_l ; <i177> [#uses=1]
+ store i177 %tmp, i177* @i177_s
+ ret void
+}
+
+define void @i178_ls() nounwind {
+ %tmp = load i178* @i178_l ; <i178> [#uses=1]
+ store i178 %tmp, i178* @i178_s
+ ret void
+}
+
+define void @i179_ls() nounwind {
+ %tmp = load i179* @i179_l ; <i179> [#uses=1]
+ store i179 %tmp, i179* @i179_s
+ ret void
+}
+
+define void @i180_ls() nounwind {
+ %tmp = load i180* @i180_l ; <i180> [#uses=1]
+ store i180 %tmp, i180* @i180_s
+ ret void
+}
+
+define void @i181_ls() nounwind {
+ %tmp = load i181* @i181_l ; <i181> [#uses=1]
+ store i181 %tmp, i181* @i181_s
+ ret void
+}
+
+define void @i182_ls() nounwind {
+ %tmp = load i182* @i182_l ; <i182> [#uses=1]
+ store i182 %tmp, i182* @i182_s
+ ret void
+}
+
+define void @i183_ls() nounwind {
+ %tmp = load i183* @i183_l ; <i183> [#uses=1]
+ store i183 %tmp, i183* @i183_s
+ ret void
+}
+
+define void @i184_ls() nounwind {
+ %tmp = load i184* @i184_l ; <i184> [#uses=1]
+ store i184 %tmp, i184* @i184_s
+ ret void
+}
+
+define void @i185_ls() nounwind {
+ %tmp = load i185* @i185_l ; <i185> [#uses=1]
+ store i185 %tmp, i185* @i185_s
+ ret void
+}
+
+define void @i186_ls() nounwind {
+ %tmp = load i186* @i186_l ; <i186> [#uses=1]
+ store i186 %tmp, i186* @i186_s
+ ret void
+}
+
+define void @i187_ls() nounwind {
+ %tmp = load i187* @i187_l ; <i187> [#uses=1]
+ store i187 %tmp, i187* @i187_s
+ ret void
+}
+
+define void @i188_ls() nounwind {
+ %tmp = load i188* @i188_l ; <i188> [#uses=1]
+ store i188 %tmp, i188* @i188_s
+ ret void
+}
+
+define void @i189_ls() nounwind {
+ %tmp = load i189* @i189_l ; <i189> [#uses=1]
+ store i189 %tmp, i189* @i189_s
+ ret void
+}
+
+define void @i190_ls() nounwind {
+ %tmp = load i190* @i190_l ; <i190> [#uses=1]
+ store i190 %tmp, i190* @i190_s
+ ret void
+}
+
+define void @i191_ls() nounwind {
+ %tmp = load i191* @i191_l ; <i191> [#uses=1]
+ store i191 %tmp, i191* @i191_s
+ ret void
+}
+
+define void @i192_ls() nounwind {
+ %tmp = load i192* @i192_l ; <i192> [#uses=1]
+ store i192 %tmp, i192* @i192_s
+ ret void
+}
+
+define void @i193_ls() nounwind {
+ %tmp = load i193* @i193_l ; <i193> [#uses=1]
+ store i193 %tmp, i193* @i193_s
+ ret void
+}
+
+define void @i194_ls() nounwind {
+ %tmp = load i194* @i194_l ; <i194> [#uses=1]
+ store i194 %tmp, i194* @i194_s
+ ret void
+}
+
+define void @i195_ls() nounwind {
+ %tmp = load i195* @i195_l ; <i195> [#uses=1]
+ store i195 %tmp, i195* @i195_s
+ ret void
+}
+
+define void @i196_ls() nounwind {
+ %tmp = load i196* @i196_l ; <i196> [#uses=1]
+ store i196 %tmp, i196* @i196_s
+ ret void
+}
+
+define void @i197_ls() nounwind {
+ %tmp = load i197* @i197_l ; <i197> [#uses=1]
+ store i197 %tmp, i197* @i197_s
+ ret void
+}
+
+define void @i198_ls() nounwind {
+ %tmp = load i198* @i198_l ; <i198> [#uses=1]
+ store i198 %tmp, i198* @i198_s
+ ret void
+}
+
+define void @i199_ls() nounwind {
+ %tmp = load i199* @i199_l ; <i199> [#uses=1]
+ store i199 %tmp, i199* @i199_s
+ ret void
+}
+
+define void @i200_ls() nounwind {
+ %tmp = load i200* @i200_l ; <i200> [#uses=1]
+ store i200 %tmp, i200* @i200_s
+ ret void
+}
+
+define void @i201_ls() nounwind {
+ %tmp = load i201* @i201_l ; <i201> [#uses=1]
+ store i201 %tmp, i201* @i201_s
+ ret void
+}
+
+define void @i202_ls() nounwind {
+ %tmp = load i202* @i202_l ; <i202> [#uses=1]
+ store i202 %tmp, i202* @i202_s
+ ret void
+}
+
+define void @i203_ls() nounwind {
+ %tmp = load i203* @i203_l ; <i203> [#uses=1]
+ store i203 %tmp, i203* @i203_s
+ ret void
+}
+
+define void @i204_ls() nounwind {
+ %tmp = load i204* @i204_l ; <i204> [#uses=1]
+ store i204 %tmp, i204* @i204_s
+ ret void
+}
+
+define void @i205_ls() nounwind {
+ %tmp = load i205* @i205_l ; <i205> [#uses=1]
+ store i205 %tmp, i205* @i205_s
+ ret void
+}
+
+define void @i206_ls() nounwind {
+ %tmp = load i206* @i206_l ; <i206> [#uses=1]
+ store i206 %tmp, i206* @i206_s
+ ret void
+}
+
+define void @i207_ls() nounwind {
+ %tmp = load i207* @i207_l ; <i207> [#uses=1]
+ store i207 %tmp, i207* @i207_s
+ ret void
+}
+
+define void @i208_ls() nounwind {
+ %tmp = load i208* @i208_l ; <i208> [#uses=1]
+ store i208 %tmp, i208* @i208_s
+ ret void
+}
+
+define void @i209_ls() nounwind {
+ %tmp = load i209* @i209_l ; <i209> [#uses=1]
+ store i209 %tmp, i209* @i209_s
+ ret void
+}
+
+define void @i210_ls() nounwind {
+ %tmp = load i210* @i210_l ; <i210> [#uses=1]
+ store i210 %tmp, i210* @i210_s
+ ret void
+}
+
+define void @i211_ls() nounwind {
+ %tmp = load i211* @i211_l ; <i211> [#uses=1]
+ store i211 %tmp, i211* @i211_s
+ ret void
+}
+
+define void @i212_ls() nounwind {
+ %tmp = load i212* @i212_l ; <i212> [#uses=1]
+ store i212 %tmp, i212* @i212_s
+ ret void
+}
+
+define void @i213_ls() nounwind {
+ %tmp = load i213* @i213_l ; <i213> [#uses=1]
+ store i213 %tmp, i213* @i213_s
+ ret void
+}
+
+define void @i214_ls() nounwind {
+ %tmp = load i214* @i214_l ; <i214> [#uses=1]
+ store i214 %tmp, i214* @i214_s
+ ret void
+}
+
+define void @i215_ls() nounwind {
+ %tmp = load i215* @i215_l ; <i215> [#uses=1]
+ store i215 %tmp, i215* @i215_s
+ ret void
+}
+
+define void @i216_ls() nounwind {
+ %tmp = load i216* @i216_l ; <i216> [#uses=1]
+ store i216 %tmp, i216* @i216_s
+ ret void
+}
+
+define void @i217_ls() nounwind {
+ %tmp = load i217* @i217_l ; <i217> [#uses=1]
+ store i217 %tmp, i217* @i217_s
+ ret void
+}
+
+define void @i218_ls() nounwind {
+ %tmp = load i218* @i218_l ; <i218> [#uses=1]
+ store i218 %tmp, i218* @i218_s
+ ret void
+}
+
+define void @i219_ls() nounwind {
+ %tmp = load i219* @i219_l ; <i219> [#uses=1]
+ store i219 %tmp, i219* @i219_s
+ ret void
+}
+
+define void @i220_ls() nounwind {
+ %tmp = load i220* @i220_l ; <i220> [#uses=1]
+ store i220 %tmp, i220* @i220_s
+ ret void
+}
+
+define void @i221_ls() nounwind {
+ %tmp = load i221* @i221_l ; <i221> [#uses=1]
+ store i221 %tmp, i221* @i221_s
+ ret void
+}
+
+define void @i222_ls() nounwind {
+ %tmp = load i222* @i222_l ; <i222> [#uses=1]
+ store i222 %tmp, i222* @i222_s
+ ret void
+}
+
+define void @i223_ls() nounwind {
+ %tmp = load i223* @i223_l ; <i223> [#uses=1]
+ store i223 %tmp, i223* @i223_s
+ ret void
+}
+
+define void @i224_ls() nounwind {
+ %tmp = load i224* @i224_l ; <i224> [#uses=1]
+ store i224 %tmp, i224* @i224_s
+ ret void
+}
+
+define void @i225_ls() nounwind {
+ %tmp = load i225* @i225_l ; <i225> [#uses=1]
+ store i225 %tmp, i225* @i225_s
+ ret void
+}
+
+define void @i226_ls() nounwind {
+ %tmp = load i226* @i226_l ; <i226> [#uses=1]
+ store i226 %tmp, i226* @i226_s
+ ret void
+}
+
+define void @i227_ls() nounwind {
+ %tmp = load i227* @i227_l ; <i227> [#uses=1]
+ store i227 %tmp, i227* @i227_s
+ ret void
+}
+
+define void @i228_ls() nounwind {
+ %tmp = load i228* @i228_l ; <i228> [#uses=1]
+ store i228 %tmp, i228* @i228_s
+ ret void
+}
+
+define void @i229_ls() nounwind {
+ %tmp = load i229* @i229_l ; <i229> [#uses=1]
+ store i229 %tmp, i229* @i229_s
+ ret void
+}
+
+define void @i230_ls() nounwind {
+ %tmp = load i230* @i230_l ; <i230> [#uses=1]
+ store i230 %tmp, i230* @i230_s
+ ret void
+}
+
+define void @i231_ls() nounwind {
+ %tmp = load i231* @i231_l ; <i231> [#uses=1]
+ store i231 %tmp, i231* @i231_s
+ ret void
+}
+
+define void @i232_ls() nounwind {
+ %tmp = load i232* @i232_l ; <i232> [#uses=1]
+ store i232 %tmp, i232* @i232_s
+ ret void
+}
+
+define void @i233_ls() nounwind {
+ %tmp = load i233* @i233_l ; <i233> [#uses=1]
+ store i233 %tmp, i233* @i233_s
+ ret void
+}
+
+define void @i234_ls() nounwind {
+ %tmp = load i234* @i234_l ; <i234> [#uses=1]
+ store i234 %tmp, i234* @i234_s
+ ret void
+}
+
+define void @i235_ls() nounwind {
+ %tmp = load i235* @i235_l ; <i235> [#uses=1]
+ store i235 %tmp, i235* @i235_s
+ ret void
+}
+
+define void @i236_ls() nounwind {
+ %tmp = load i236* @i236_l ; <i236> [#uses=1]
+ store i236 %tmp, i236* @i236_s
+ ret void
+}
+
+define void @i237_ls() nounwind {
+ %tmp = load i237* @i237_l ; <i237> [#uses=1]
+ store i237 %tmp, i237* @i237_s
+ ret void
+}
+
+define void @i238_ls() nounwind {
+ %tmp = load i238* @i238_l ; <i238> [#uses=1]
+ store i238 %tmp, i238* @i238_s
+ ret void
+}
+
+define void @i239_ls() nounwind {
+ %tmp = load i239* @i239_l ; <i239> [#uses=1]
+ store i239 %tmp, i239* @i239_s
+ ret void
+}
+
+define void @i240_ls() nounwind {
+ %tmp = load i240* @i240_l ; <i240> [#uses=1]
+ store i240 %tmp, i240* @i240_s
+ ret void
+}
+
+define void @i241_ls() nounwind {
+ %tmp = load i241* @i241_l ; <i241> [#uses=1]
+ store i241 %tmp, i241* @i241_s
+ ret void
+}
+
+define void @i242_ls() nounwind {
+ %tmp = load i242* @i242_l ; <i242> [#uses=1]
+ store i242 %tmp, i242* @i242_s
+ ret void
+}
+
+define void @i243_ls() nounwind {
+ %tmp = load i243* @i243_l ; <i243> [#uses=1]
+ store i243 %tmp, i243* @i243_s
+ ret void
+}
+
+define void @i244_ls() nounwind {
+ %tmp = load i244* @i244_l ; <i244> [#uses=1]
+ store i244 %tmp, i244* @i244_s
+ ret void
+}
+
+define void @i245_ls() nounwind {
+ %tmp = load i245* @i245_l ; <i245> [#uses=1]
+ store i245 %tmp, i245* @i245_s
+ ret void
+}
+
+define void @i246_ls() nounwind {
+ %tmp = load i246* @i246_l ; <i246> [#uses=1]
+ store i246 %tmp, i246* @i246_s
+ ret void
+}
+
+define void @i247_ls() nounwind {
+ %tmp = load i247* @i247_l ; <i247> [#uses=1]
+ store i247 %tmp, i247* @i247_s
+ ret void
+}
+
+define void @i248_ls() nounwind {
+ %tmp = load i248* @i248_l ; <i248> [#uses=1]
+ store i248 %tmp, i248* @i248_s
+ ret void
+}
+
+define void @i249_ls() nounwind {
+ %tmp = load i249* @i249_l ; <i249> [#uses=1]
+ store i249 %tmp, i249* @i249_s
+ ret void
+}
+
+define void @i250_ls() nounwind {
+ %tmp = load i250* @i250_l ; <i250> [#uses=1]
+ store i250 %tmp, i250* @i250_s
+ ret void
+}
+
+define void @i251_ls() nounwind {
+ %tmp = load i251* @i251_l ; <i251> [#uses=1]
+ store i251 %tmp, i251* @i251_s
+ ret void
+}
+
+define void @i252_ls() nounwind {
+ %tmp = load i252* @i252_l ; <i252> [#uses=1]
+ store i252 %tmp, i252* @i252_s
+ ret void
+}
+
+define void @i253_ls() nounwind {
+ %tmp = load i253* @i253_l ; <i253> [#uses=1]
+ store i253 %tmp, i253* @i253_s
+ ret void
+}
+
+define void @i254_ls() nounwind {
+ %tmp = load i254* @i254_l ; <i254> [#uses=1]
+ store i254 %tmp, i254* @i254_s
+ ret void
+}
+
+define void @i255_ls() nounwind {
+ %tmp = load i255* @i255_l ; <i255> [#uses=1]
+ store i255 %tmp, i255* @i255_s
+ ret void
+}
+
+define void @i256_ls() nounwind {
+ %tmp = load i256* @i256_l ; <i256> [#uses=1]
+ store i256 %tmp, i256* @i256_s
+ ret void
+}
diff --git a/test/CodeGen/Generic/APIntParam.ll b/test/CodeGen/Generic/APIntParam.ll
new file mode 100644
index 0000000000000..f80f71b176184
--- /dev/null
+++ b/test/CodeGen/Generic/APIntParam.ll
@@ -0,0 +1,1537 @@
+; RUN: llvm-as < %s | llc > %t
+@i1_s = external global i1 ; <i1*> [#uses=1]
+@i2_s = external global i2 ; <i2*> [#uses=1]
+@i3_s = external global i3 ; <i3*> [#uses=1]
+@i4_s = external global i4 ; <i4*> [#uses=1]
+@i5_s = external global i5 ; <i5*> [#uses=1]
+@i6_s = external global i6 ; <i6*> [#uses=1]
+@i7_s = external global i7 ; <i7*> [#uses=1]
+@i8_s = external global i8 ; <i8*> [#uses=1]
+@i9_s = external global i9 ; <i9*> [#uses=1]
+@i10_s = external global i10 ; <i10*> [#uses=1]
+@i11_s = external global i11 ; <i11*> [#uses=1]
+@i12_s = external global i12 ; <i12*> [#uses=1]
+@i13_s = external global i13 ; <i13*> [#uses=1]
+@i14_s = external global i14 ; <i14*> [#uses=1]
+@i15_s = external global i15 ; <i15*> [#uses=1]
+@i16_s = external global i16 ; <i16*> [#uses=1]
+@i17_s = external global i17 ; <i17*> [#uses=1]
+@i18_s = external global i18 ; <i18*> [#uses=1]
+@i19_s = external global i19 ; <i19*> [#uses=1]
+@i20_s = external global i20 ; <i20*> [#uses=1]
+@i21_s = external global i21 ; <i21*> [#uses=1]
+@i22_s = external global i22 ; <i22*> [#uses=1]
+@i23_s = external global i23 ; <i23*> [#uses=1]
+@i24_s = external global i24 ; <i24*> [#uses=1]
+@i25_s = external global i25 ; <i25*> [#uses=1]
+@i26_s = external global i26 ; <i26*> [#uses=1]
+@i27_s = external global i27 ; <i27*> [#uses=1]
+@i28_s = external global i28 ; <i28*> [#uses=1]
+@i29_s = external global i29 ; <i29*> [#uses=1]
+@i30_s = external global i30 ; <i30*> [#uses=1]
+@i31_s = external global i31 ; <i31*> [#uses=1]
+@i32_s = external global i32 ; <i32*> [#uses=1]
+@i33_s = external global i33 ; <i33*> [#uses=1]
+@i34_s = external global i34 ; <i34*> [#uses=1]
+@i35_s = external global i35 ; <i35*> [#uses=1]
+@i36_s = external global i36 ; <i36*> [#uses=1]
+@i37_s = external global i37 ; <i37*> [#uses=1]
+@i38_s = external global i38 ; <i38*> [#uses=1]
+@i39_s = external global i39 ; <i39*> [#uses=1]
+@i40_s = external global i40 ; <i40*> [#uses=1]
+@i41_s = external global i41 ; <i41*> [#uses=1]
+@i42_s = external global i42 ; <i42*> [#uses=1]
+@i43_s = external global i43 ; <i43*> [#uses=1]
+@i44_s = external global i44 ; <i44*> [#uses=1]
+@i45_s = external global i45 ; <i45*> [#uses=1]
+@i46_s = external global i46 ; <i46*> [#uses=1]
+@i47_s = external global i47 ; <i47*> [#uses=1]
+@i48_s = external global i48 ; <i48*> [#uses=1]
+@i49_s = external global i49 ; <i49*> [#uses=1]
+@i50_s = external global i50 ; <i50*> [#uses=1]
+@i51_s = external global i51 ; <i51*> [#uses=1]
+@i52_s = external global i52 ; <i52*> [#uses=1]
+@i53_s = external global i53 ; <i53*> [#uses=1]
+@i54_s = external global i54 ; <i54*> [#uses=1]
+@i55_s = external global i55 ; <i55*> [#uses=1]
+@i56_s = external global i56 ; <i56*> [#uses=1]
+@i57_s = external global i57 ; <i57*> [#uses=1]
+@i58_s = external global i58 ; <i58*> [#uses=1]
+@i59_s = external global i59 ; <i59*> [#uses=1]
+@i60_s = external global i60 ; <i60*> [#uses=1]
+@i61_s = external global i61 ; <i61*> [#uses=1]
+@i62_s = external global i62 ; <i62*> [#uses=1]
+@i63_s = external global i63 ; <i63*> [#uses=1]
+@i64_s = external global i64 ; <i64*> [#uses=1]
+@i65_s = external global i65 ; <i65*> [#uses=1]
+@i66_s = external global i66 ; <i66*> [#uses=1]
+@i67_s = external global i67 ; <i67*> [#uses=1]
+@i68_s = external global i68 ; <i68*> [#uses=1]
+@i69_s = external global i69 ; <i69*> [#uses=1]
+@i70_s = external global i70 ; <i70*> [#uses=1]
+@i71_s = external global i71 ; <i71*> [#uses=1]
+@i72_s = external global i72 ; <i72*> [#uses=1]
+@i73_s = external global i73 ; <i73*> [#uses=1]
+@i74_s = external global i74 ; <i74*> [#uses=1]
+@i75_s = external global i75 ; <i75*> [#uses=1]
+@i76_s = external global i76 ; <i76*> [#uses=1]
+@i77_s = external global i77 ; <i77*> [#uses=1]
+@i78_s = external global i78 ; <i78*> [#uses=1]
+@i79_s = external global i79 ; <i79*> [#uses=1]
+@i80_s = external global i80 ; <i80*> [#uses=1]
+@i81_s = external global i81 ; <i81*> [#uses=1]
+@i82_s = external global i82 ; <i82*> [#uses=1]
+@i83_s = external global i83 ; <i83*> [#uses=1]
+@i84_s = external global i84 ; <i84*> [#uses=1]
+@i85_s = external global i85 ; <i85*> [#uses=1]
+@i86_s = external global i86 ; <i86*> [#uses=1]
+@i87_s = external global i87 ; <i87*> [#uses=1]
+@i88_s = external global i88 ; <i88*> [#uses=1]
+@i89_s = external global i89 ; <i89*> [#uses=1]
+@i90_s = external global i90 ; <i90*> [#uses=1]
+@i91_s = external global i91 ; <i91*> [#uses=1]
+@i92_s = external global i92 ; <i92*> [#uses=1]
+@i93_s = external global i93 ; <i93*> [#uses=1]
+@i94_s = external global i94 ; <i94*> [#uses=1]
+@i95_s = external global i95 ; <i95*> [#uses=1]
+@i96_s = external global i96 ; <i96*> [#uses=1]
+@i97_s = external global i97 ; <i97*> [#uses=1]
+@i98_s = external global i98 ; <i98*> [#uses=1]
+@i99_s = external global i99 ; <i99*> [#uses=1]
+@i100_s = external global i100 ; <i100*> [#uses=1]
+@i101_s = external global i101 ; <i101*> [#uses=1]
+@i102_s = external global i102 ; <i102*> [#uses=1]
+@i103_s = external global i103 ; <i103*> [#uses=1]
+@i104_s = external global i104 ; <i104*> [#uses=1]
+@i105_s = external global i105 ; <i105*> [#uses=1]
+@i106_s = external global i106 ; <i106*> [#uses=1]
+@i107_s = external global i107 ; <i107*> [#uses=1]
+@i108_s = external global i108 ; <i108*> [#uses=1]
+@i109_s = external global i109 ; <i109*> [#uses=1]
+@i110_s = external global i110 ; <i110*> [#uses=1]
+@i111_s = external global i111 ; <i111*> [#uses=1]
+@i112_s = external global i112 ; <i112*> [#uses=1]
+@i113_s = external global i113 ; <i113*> [#uses=1]
+@i114_s = external global i114 ; <i114*> [#uses=1]
+@i115_s = external global i115 ; <i115*> [#uses=1]
+@i116_s = external global i116 ; <i116*> [#uses=1]
+@i117_s = external global i117 ; <i117*> [#uses=1]
+@i118_s = external global i118 ; <i118*> [#uses=1]
+@i119_s = external global i119 ; <i119*> [#uses=1]
+@i120_s = external global i120 ; <i120*> [#uses=1]
+@i121_s = external global i121 ; <i121*> [#uses=1]
+@i122_s = external global i122 ; <i122*> [#uses=1]
+@i123_s = external global i123 ; <i123*> [#uses=1]
+@i124_s = external global i124 ; <i124*> [#uses=1]
+@i125_s = external global i125 ; <i125*> [#uses=1]
+@i126_s = external global i126 ; <i126*> [#uses=1]
+@i127_s = external global i127 ; <i127*> [#uses=1]
+@i128_s = external global i128 ; <i128*> [#uses=1]
+@i129_s = external global i129 ; <i129*> [#uses=1]
+@i130_s = external global i130 ; <i130*> [#uses=1]
+@i131_s = external global i131 ; <i131*> [#uses=1]
+@i132_s = external global i132 ; <i132*> [#uses=1]
+@i133_s = external global i133 ; <i133*> [#uses=1]
+@i134_s = external global i134 ; <i134*> [#uses=1]
+@i135_s = external global i135 ; <i135*> [#uses=1]
+@i136_s = external global i136 ; <i136*> [#uses=1]
+@i137_s = external global i137 ; <i137*> [#uses=1]
+@i138_s = external global i138 ; <i138*> [#uses=1]
+@i139_s = external global i139 ; <i139*> [#uses=1]
+@i140_s = external global i140 ; <i140*> [#uses=1]
+@i141_s = external global i141 ; <i141*> [#uses=1]
+@i142_s = external global i142 ; <i142*> [#uses=1]
+@i143_s = external global i143 ; <i143*> [#uses=1]
+@i144_s = external global i144 ; <i144*> [#uses=1]
+@i145_s = external global i145 ; <i145*> [#uses=1]
+@i146_s = external global i146 ; <i146*> [#uses=1]
+@i147_s = external global i147 ; <i147*> [#uses=1]
+@i148_s = external global i148 ; <i148*> [#uses=1]
+@i149_s = external global i149 ; <i149*> [#uses=1]
+@i150_s = external global i150 ; <i150*> [#uses=1]
+@i151_s = external global i151 ; <i151*> [#uses=1]
+@i152_s = external global i152 ; <i152*> [#uses=1]
+@i153_s = external global i153 ; <i153*> [#uses=1]
+@i154_s = external global i154 ; <i154*> [#uses=1]
+@i155_s = external global i155 ; <i155*> [#uses=1]
+@i156_s = external global i156 ; <i156*> [#uses=1]
+@i157_s = external global i157 ; <i157*> [#uses=1]
+@i158_s = external global i158 ; <i158*> [#uses=1]
+@i159_s = external global i159 ; <i159*> [#uses=1]
+@i160_s = external global i160 ; <i160*> [#uses=1]
+@i161_s = external global i161 ; <i161*> [#uses=1]
+@i162_s = external global i162 ; <i162*> [#uses=1]
+@i163_s = external global i163 ; <i163*> [#uses=1]
+@i164_s = external global i164 ; <i164*> [#uses=1]
+@i165_s = external global i165 ; <i165*> [#uses=1]
+@i166_s = external global i166 ; <i166*> [#uses=1]
+@i167_s = external global i167 ; <i167*> [#uses=1]
+@i168_s = external global i168 ; <i168*> [#uses=1]
+@i169_s = external global i169 ; <i169*> [#uses=1]
+@i170_s = external global i170 ; <i170*> [#uses=1]
+@i171_s = external global i171 ; <i171*> [#uses=1]
+@i172_s = external global i172 ; <i172*> [#uses=1]
+@i173_s = external global i173 ; <i173*> [#uses=1]
+@i174_s = external global i174 ; <i174*> [#uses=1]
+@i175_s = external global i175 ; <i175*> [#uses=1]
+@i176_s = external global i176 ; <i176*> [#uses=1]
+@i177_s = external global i177 ; <i177*> [#uses=1]
+@i178_s = external global i178 ; <i178*> [#uses=1]
+@i179_s = external global i179 ; <i179*> [#uses=1]
+@i180_s = external global i180 ; <i180*> [#uses=1]
+@i181_s = external global i181 ; <i181*> [#uses=1]
+@i182_s = external global i182 ; <i182*> [#uses=1]
+@i183_s = external global i183 ; <i183*> [#uses=1]
+@i184_s = external global i184 ; <i184*> [#uses=1]
+@i185_s = external global i185 ; <i185*> [#uses=1]
+@i186_s = external global i186 ; <i186*> [#uses=1]
+@i187_s = external global i187 ; <i187*> [#uses=1]
+@i188_s = external global i188 ; <i188*> [#uses=1]
+@i189_s = external global i189 ; <i189*> [#uses=1]
+@i190_s = external global i190 ; <i190*> [#uses=1]
+@i191_s = external global i191 ; <i191*> [#uses=1]
+@i192_s = external global i192 ; <i192*> [#uses=1]
+@i193_s = external global i193 ; <i193*> [#uses=1]
+@i194_s = external global i194 ; <i194*> [#uses=1]
+@i195_s = external global i195 ; <i195*> [#uses=1]
+@i196_s = external global i196 ; <i196*> [#uses=1]
+@i197_s = external global i197 ; <i197*> [#uses=1]
+@i198_s = external global i198 ; <i198*> [#uses=1]
+@i199_s = external global i199 ; <i199*> [#uses=1]
+@i200_s = external global i200 ; <i200*> [#uses=1]
+@i201_s = external global i201 ; <i201*> [#uses=1]
+@i202_s = external global i202 ; <i202*> [#uses=1]
+@i203_s = external global i203 ; <i203*> [#uses=1]
+@i204_s = external global i204 ; <i204*> [#uses=1]
+@i205_s = external global i205 ; <i205*> [#uses=1]
+@i206_s = external global i206 ; <i206*> [#uses=1]
+@i207_s = external global i207 ; <i207*> [#uses=1]
+@i208_s = external global i208 ; <i208*> [#uses=1]
+@i209_s = external global i209 ; <i209*> [#uses=1]
+@i210_s = external global i210 ; <i210*> [#uses=1]
+@i211_s = external global i211 ; <i211*> [#uses=1]
+@i212_s = external global i212 ; <i212*> [#uses=1]
+@i213_s = external global i213 ; <i213*> [#uses=1]
+@i214_s = external global i214 ; <i214*> [#uses=1]
+@i215_s = external global i215 ; <i215*> [#uses=1]
+@i216_s = external global i216 ; <i216*> [#uses=1]
+@i217_s = external global i217 ; <i217*> [#uses=1]
+@i218_s = external global i218 ; <i218*> [#uses=1]
+@i219_s = external global i219 ; <i219*> [#uses=1]
+@i220_s = external global i220 ; <i220*> [#uses=1]
+@i221_s = external global i221 ; <i221*> [#uses=1]
+@i222_s = external global i222 ; <i222*> [#uses=1]
+@i223_s = external global i223 ; <i223*> [#uses=1]
+@i224_s = external global i224 ; <i224*> [#uses=1]
+@i225_s = external global i225 ; <i225*> [#uses=1]
+@i226_s = external global i226 ; <i226*> [#uses=1]
+@i227_s = external global i227 ; <i227*> [#uses=1]
+@i228_s = external global i228 ; <i228*> [#uses=1]
+@i229_s = external global i229 ; <i229*> [#uses=1]
+@i230_s = external global i230 ; <i230*> [#uses=1]
+@i231_s = external global i231 ; <i231*> [#uses=1]
+@i232_s = external global i232 ; <i232*> [#uses=1]
+@i233_s = external global i233 ; <i233*> [#uses=1]
+@i234_s = external global i234 ; <i234*> [#uses=1]
+@i235_s = external global i235 ; <i235*> [#uses=1]
+@i236_s = external global i236 ; <i236*> [#uses=1]
+@i237_s = external global i237 ; <i237*> [#uses=1]
+@i238_s = external global i238 ; <i238*> [#uses=1]
+@i239_s = external global i239 ; <i239*> [#uses=1]
+@i240_s = external global i240 ; <i240*> [#uses=1]
+@i241_s = external global i241 ; <i241*> [#uses=1]
+@i242_s = external global i242 ; <i242*> [#uses=1]
+@i243_s = external global i243 ; <i243*> [#uses=1]
+@i244_s = external global i244 ; <i244*> [#uses=1]
+@i245_s = external global i245 ; <i245*> [#uses=1]
+@i246_s = external global i246 ; <i246*> [#uses=1]
+@i247_s = external global i247 ; <i247*> [#uses=1]
+@i248_s = external global i248 ; <i248*> [#uses=1]
+@i249_s = external global i249 ; <i249*> [#uses=1]
+@i250_s = external global i250 ; <i250*> [#uses=1]
+@i251_s = external global i251 ; <i251*> [#uses=1]
+@i252_s = external global i252 ; <i252*> [#uses=1]
+@i253_s = external global i253 ; <i253*> [#uses=1]
+@i254_s = external global i254 ; <i254*> [#uses=1]
+@i255_s = external global i255 ; <i255*> [#uses=1]
+@i256_s = external global i256 ; <i256*> [#uses=1]
+
+define void @i1_ls(i1 %x) nounwind {
+ store i1 %x, i1* @i1_s
+ ret void
+}
+
+define void @i2_ls(i2 %x) nounwind {
+ store i2 %x, i2* @i2_s
+ ret void
+}
+
+define void @i3_ls(i3 %x) nounwind {
+ store i3 %x, i3* @i3_s
+ ret void
+}
+
+define void @i4_ls(i4 %x) nounwind {
+ store i4 %x, i4* @i4_s
+ ret void
+}
+
+define void @i5_ls(i5 %x) nounwind {
+ store i5 %x, i5* @i5_s
+ ret void
+}
+
+define void @i6_ls(i6 %x) nounwind {
+ store i6 %x, i6* @i6_s
+ ret void
+}
+
+define void @i7_ls(i7 %x) nounwind {
+ store i7 %x, i7* @i7_s
+ ret void
+}
+
+define void @i8_ls(i8 %x) nounwind {
+ store i8 %x, i8* @i8_s
+ ret void
+}
+
+define void @i9_ls(i9 %x) nounwind {
+ store i9 %x, i9* @i9_s
+ ret void
+}
+
+define void @i10_ls(i10 %x) nounwind {
+ store i10 %x, i10* @i10_s
+ ret void
+}
+
+define void @i11_ls(i11 %x) nounwind {
+ store i11 %x, i11* @i11_s
+ ret void
+}
+
+define void @i12_ls(i12 %x) nounwind {
+ store i12 %x, i12* @i12_s
+ ret void
+}
+
+define void @i13_ls(i13 %x) nounwind {
+ store i13 %x, i13* @i13_s
+ ret void
+}
+
+define void @i14_ls(i14 %x) nounwind {
+ store i14 %x, i14* @i14_s
+ ret void
+}
+
+define void @i15_ls(i15 %x) nounwind {
+ store i15 %x, i15* @i15_s
+ ret void
+}
+
+define void @i16_ls(i16 %x) nounwind {
+ store i16 %x, i16* @i16_s
+ ret void
+}
+
+define void @i17_ls(i17 %x) nounwind {
+ store i17 %x, i17* @i17_s
+ ret void
+}
+
+define void @i18_ls(i18 %x) nounwind {
+ store i18 %x, i18* @i18_s
+ ret void
+}
+
+define void @i19_ls(i19 %x) nounwind {
+ store i19 %x, i19* @i19_s
+ ret void
+}
+
+define void @i20_ls(i20 %x) nounwind {
+ store i20 %x, i20* @i20_s
+ ret void
+}
+
+define void @i21_ls(i21 %x) nounwind {
+ store i21 %x, i21* @i21_s
+ ret void
+}
+
+define void @i22_ls(i22 %x) nounwind {
+ store i22 %x, i22* @i22_s
+ ret void
+}
+
+define void @i23_ls(i23 %x) nounwind {
+ store i23 %x, i23* @i23_s
+ ret void
+}
+
+define void @i24_ls(i24 %x) nounwind {
+ store i24 %x, i24* @i24_s
+ ret void
+}
+
+define void @i25_ls(i25 %x) nounwind {
+ store i25 %x, i25* @i25_s
+ ret void
+}
+
+define void @i26_ls(i26 %x) nounwind {
+ store i26 %x, i26* @i26_s
+ ret void
+}
+
+define void @i27_ls(i27 %x) nounwind {
+ store i27 %x, i27* @i27_s
+ ret void
+}
+
+define void @i28_ls(i28 %x) nounwind {
+ store i28 %x, i28* @i28_s
+ ret void
+}
+
+define void @i29_ls(i29 %x) nounwind {
+ store i29 %x, i29* @i29_s
+ ret void
+}
+
+define void @i30_ls(i30 %x) nounwind {
+ store i30 %x, i30* @i30_s
+ ret void
+}
+
+define void @i31_ls(i31 %x) nounwind {
+ store i31 %x, i31* @i31_s
+ ret void
+}
+
+define void @i32_ls(i32 %x) nounwind {
+ store i32 %x, i32* @i32_s
+ ret void
+}
+
+define void @i33_ls(i33 %x) nounwind {
+ store i33 %x, i33* @i33_s
+ ret void
+}
+
+define void @i34_ls(i34 %x) nounwind {
+ store i34 %x, i34* @i34_s
+ ret void
+}
+
+define void @i35_ls(i35 %x) nounwind {
+ store i35 %x, i35* @i35_s
+ ret void
+}
+
+define void @i36_ls(i36 %x) nounwind {
+ store i36 %x, i36* @i36_s
+ ret void
+}
+
+define void @i37_ls(i37 %x) nounwind {
+ store i37 %x, i37* @i37_s
+ ret void
+}
+
+define void @i38_ls(i38 %x) nounwind {
+ store i38 %x, i38* @i38_s
+ ret void
+}
+
+define void @i39_ls(i39 %x) nounwind {
+ store i39 %x, i39* @i39_s
+ ret void
+}
+
+define void @i40_ls(i40 %x) nounwind {
+ store i40 %x, i40* @i40_s
+ ret void
+}
+
+define void @i41_ls(i41 %x) nounwind {
+ store i41 %x, i41* @i41_s
+ ret void
+}
+
+define void @i42_ls(i42 %x) nounwind {
+ store i42 %x, i42* @i42_s
+ ret void
+}
+
+define void @i43_ls(i43 %x) nounwind {
+ store i43 %x, i43* @i43_s
+ ret void
+}
+
+define void @i44_ls(i44 %x) nounwind {
+ store i44 %x, i44* @i44_s
+ ret void
+}
+
+define void @i45_ls(i45 %x) nounwind {
+ store i45 %x, i45* @i45_s
+ ret void
+}
+
+define void @i46_ls(i46 %x) nounwind {
+ store i46 %x, i46* @i46_s
+ ret void
+}
+
+define void @i47_ls(i47 %x) nounwind {
+ store i47 %x, i47* @i47_s
+ ret void
+}
+
+define void @i48_ls(i48 %x) nounwind {
+ store i48 %x, i48* @i48_s
+ ret void
+}
+
+define void @i49_ls(i49 %x) nounwind {
+ store i49 %x, i49* @i49_s
+ ret void
+}
+
+define void @i50_ls(i50 %x) nounwind {
+ store i50 %x, i50* @i50_s
+ ret void
+}
+
+define void @i51_ls(i51 %x) nounwind {
+ store i51 %x, i51* @i51_s
+ ret void
+}
+
+define void @i52_ls(i52 %x) nounwind {
+ store i52 %x, i52* @i52_s
+ ret void
+}
+
+define void @i53_ls(i53 %x) nounwind {
+ store i53 %x, i53* @i53_s
+ ret void
+}
+
+define void @i54_ls(i54 %x) nounwind {
+ store i54 %x, i54* @i54_s
+ ret void
+}
+
+define void @i55_ls(i55 %x) nounwind {
+ store i55 %x, i55* @i55_s
+ ret void
+}
+
+define void @i56_ls(i56 %x) nounwind {
+ store i56 %x, i56* @i56_s
+ ret void
+}
+
+define void @i57_ls(i57 %x) nounwind {
+ store i57 %x, i57* @i57_s
+ ret void
+}
+
+define void @i58_ls(i58 %x) nounwind {
+ store i58 %x, i58* @i58_s
+ ret void
+}
+
+define void @i59_ls(i59 %x) nounwind {
+ store i59 %x, i59* @i59_s
+ ret void
+}
+
+define void @i60_ls(i60 %x) nounwind {
+ store i60 %x, i60* @i60_s
+ ret void
+}
+
+define void @i61_ls(i61 %x) nounwind {
+ store i61 %x, i61* @i61_s
+ ret void
+}
+
+define void @i62_ls(i62 %x) nounwind {
+ store i62 %x, i62* @i62_s
+ ret void
+}
+
+define void @i63_ls(i63 %x) nounwind {
+ store i63 %x, i63* @i63_s
+ ret void
+}
+
+define void @i64_ls(i64 %x) nounwind {
+ store i64 %x, i64* @i64_s
+ ret void
+}
+
+define void @i65_ls(i65 %x) nounwind {
+ store i65 %x, i65* @i65_s
+ ret void
+}
+
+define void @i66_ls(i66 %x) nounwind {
+ store i66 %x, i66* @i66_s
+ ret void
+}
+
+define void @i67_ls(i67 %x) nounwind {
+ store i67 %x, i67* @i67_s
+ ret void
+}
+
+define void @i68_ls(i68 %x) nounwind {
+ store i68 %x, i68* @i68_s
+ ret void
+}
+
+define void @i69_ls(i69 %x) nounwind {
+ store i69 %x, i69* @i69_s
+ ret void
+}
+
+define void @i70_ls(i70 %x) nounwind {
+ store i70 %x, i70* @i70_s
+ ret void
+}
+
+define void @i71_ls(i71 %x) nounwind {
+ store i71 %x, i71* @i71_s
+ ret void
+}
+
+define void @i72_ls(i72 %x) nounwind {
+ store i72 %x, i72* @i72_s
+ ret void
+}
+
+define void @i73_ls(i73 %x) nounwind {
+ store i73 %x, i73* @i73_s
+ ret void
+}
+
+define void @i74_ls(i74 %x) nounwind {
+ store i74 %x, i74* @i74_s
+ ret void
+}
+
+define void @i75_ls(i75 %x) nounwind {
+ store i75 %x, i75* @i75_s
+ ret void
+}
+
+define void @i76_ls(i76 %x) nounwind {
+ store i76 %x, i76* @i76_s
+ ret void
+}
+
+define void @i77_ls(i77 %x) nounwind {
+ store i77 %x, i77* @i77_s
+ ret void
+}
+
+define void @i78_ls(i78 %x) nounwind {
+ store i78 %x, i78* @i78_s
+ ret void
+}
+
+define void @i79_ls(i79 %x) nounwind {
+ store i79 %x, i79* @i79_s
+ ret void
+}
+
+define void @i80_ls(i80 %x) nounwind {
+ store i80 %x, i80* @i80_s
+ ret void
+}
+
+define void @i81_ls(i81 %x) nounwind {
+ store i81 %x, i81* @i81_s
+ ret void
+}
+
+define void @i82_ls(i82 %x) nounwind {
+ store i82 %x, i82* @i82_s
+ ret void
+}
+
+define void @i83_ls(i83 %x) nounwind {
+ store i83 %x, i83* @i83_s
+ ret void
+}
+
+define void @i84_ls(i84 %x) nounwind {
+ store i84 %x, i84* @i84_s
+ ret void
+}
+
+define void @i85_ls(i85 %x) nounwind {
+ store i85 %x, i85* @i85_s
+ ret void
+}
+
+define void @i86_ls(i86 %x) nounwind {
+ store i86 %x, i86* @i86_s
+ ret void
+}
+
+define void @i87_ls(i87 %x) nounwind {
+ store i87 %x, i87* @i87_s
+ ret void
+}
+
+define void @i88_ls(i88 %x) nounwind {
+ store i88 %x, i88* @i88_s
+ ret void
+}
+
+define void @i89_ls(i89 %x) nounwind {
+ store i89 %x, i89* @i89_s
+ ret void
+}
+
+define void @i90_ls(i90 %x) nounwind {
+ store i90 %x, i90* @i90_s
+ ret void
+}
+
+define void @i91_ls(i91 %x) nounwind {
+ store i91 %x, i91* @i91_s
+ ret void
+}
+
+define void @i92_ls(i92 %x) nounwind {
+ store i92 %x, i92* @i92_s
+ ret void
+}
+
+define void @i93_ls(i93 %x) nounwind {
+ store i93 %x, i93* @i93_s
+ ret void
+}
+
+define void @i94_ls(i94 %x) nounwind {
+ store i94 %x, i94* @i94_s
+ ret void
+}
+
+define void @i95_ls(i95 %x) nounwind {
+ store i95 %x, i95* @i95_s
+ ret void
+}
+
+define void @i96_ls(i96 %x) nounwind {
+ store i96 %x, i96* @i96_s
+ ret void
+}
+
+define void @i97_ls(i97 %x) nounwind {
+ store i97 %x, i97* @i97_s
+ ret void
+}
+
+define void @i98_ls(i98 %x) nounwind {
+ store i98 %x, i98* @i98_s
+ ret void
+}
+
+define void @i99_ls(i99 %x) nounwind {
+ store i99 %x, i99* @i99_s
+ ret void
+}
+
+define void @i100_ls(i100 %x) nounwind {
+ store i100 %x, i100* @i100_s
+ ret void
+}
+
+define void @i101_ls(i101 %x) nounwind {
+ store i101 %x, i101* @i101_s
+ ret void
+}
+
+define void @i102_ls(i102 %x) nounwind {
+ store i102 %x, i102* @i102_s
+ ret void
+}
+
+define void @i103_ls(i103 %x) nounwind {
+ store i103 %x, i103* @i103_s
+ ret void
+}
+
+define void @i104_ls(i104 %x) nounwind {
+ store i104 %x, i104* @i104_s
+ ret void
+}
+
+define void @i105_ls(i105 %x) nounwind {
+ store i105 %x, i105* @i105_s
+ ret void
+}
+
+define void @i106_ls(i106 %x) nounwind {
+ store i106 %x, i106* @i106_s
+ ret void
+}
+
+define void @i107_ls(i107 %x) nounwind {
+ store i107 %x, i107* @i107_s
+ ret void
+}
+
+define void @i108_ls(i108 %x) nounwind {
+ store i108 %x, i108* @i108_s
+ ret void
+}
+
+define void @i109_ls(i109 %x) nounwind {
+ store i109 %x, i109* @i109_s
+ ret void
+}
+
+define void @i110_ls(i110 %x) nounwind {
+ store i110 %x, i110* @i110_s
+ ret void
+}
+
+define void @i111_ls(i111 %x) nounwind {
+ store i111 %x, i111* @i111_s
+ ret void
+}
+
+define void @i112_ls(i112 %x) nounwind {
+ store i112 %x, i112* @i112_s
+ ret void
+}
+
+define void @i113_ls(i113 %x) nounwind {
+ store i113 %x, i113* @i113_s
+ ret void
+}
+
+define void @i114_ls(i114 %x) nounwind {
+ store i114 %x, i114* @i114_s
+ ret void
+}
+
+define void @i115_ls(i115 %x) nounwind {
+ store i115 %x, i115* @i115_s
+ ret void
+}
+
+define void @i116_ls(i116 %x) nounwind {
+ store i116 %x, i116* @i116_s
+ ret void
+}
+
+define void @i117_ls(i117 %x) nounwind {
+ store i117 %x, i117* @i117_s
+ ret void
+}
+
+define void @i118_ls(i118 %x) nounwind {
+ store i118 %x, i118* @i118_s
+ ret void
+}
+
+define void @i119_ls(i119 %x) nounwind {
+ store i119 %x, i119* @i119_s
+ ret void
+}
+
+define void @i120_ls(i120 %x) nounwind {
+ store i120 %x, i120* @i120_s
+ ret void
+}
+
+define void @i121_ls(i121 %x) nounwind {
+ store i121 %x, i121* @i121_s
+ ret void
+}
+
+define void @i122_ls(i122 %x) nounwind {
+ store i122 %x, i122* @i122_s
+ ret void
+}
+
+define void @i123_ls(i123 %x) nounwind {
+ store i123 %x, i123* @i123_s
+ ret void
+}
+
+define void @i124_ls(i124 %x) nounwind {
+ store i124 %x, i124* @i124_s
+ ret void
+}
+
+define void @i125_ls(i125 %x) nounwind {
+ store i125 %x, i125* @i125_s
+ ret void
+}
+
+define void @i126_ls(i126 %x) nounwind {
+ store i126 %x, i126* @i126_s
+ ret void
+}
+
+define void @i127_ls(i127 %x) nounwind {
+ store i127 %x, i127* @i127_s
+ ret void
+}
+
+define void @i128_ls(i128 %x) nounwind {
+ store i128 %x, i128* @i128_s
+ ret void
+}
+
+define void @i129_ls(i129 %x) nounwind {
+ store i129 %x, i129* @i129_s
+ ret void
+}
+
+define void @i130_ls(i130 %x) nounwind {
+ store i130 %x, i130* @i130_s
+ ret void
+}
+
+define void @i131_ls(i131 %x) nounwind {
+ store i131 %x, i131* @i131_s
+ ret void
+}
+
+define void @i132_ls(i132 %x) nounwind {
+ store i132 %x, i132* @i132_s
+ ret void
+}
+
+define void @i133_ls(i133 %x) nounwind {
+ store i133 %x, i133* @i133_s
+ ret void
+}
+
+define void @i134_ls(i134 %x) nounwind {
+ store i134 %x, i134* @i134_s
+ ret void
+}
+
+define void @i135_ls(i135 %x) nounwind {
+ store i135 %x, i135* @i135_s
+ ret void
+}
+
+define void @i136_ls(i136 %x) nounwind {
+ store i136 %x, i136* @i136_s
+ ret void
+}
+
+define void @i137_ls(i137 %x) nounwind {
+ store i137 %x, i137* @i137_s
+ ret void
+}
+
+define void @i138_ls(i138 %x) nounwind {
+ store i138 %x, i138* @i138_s
+ ret void
+}
+
+define void @i139_ls(i139 %x) nounwind {
+ store i139 %x, i139* @i139_s
+ ret void
+}
+
+define void @i140_ls(i140 %x) nounwind {
+ store i140 %x, i140* @i140_s
+ ret void
+}
+
+define void @i141_ls(i141 %x) nounwind {
+ store i141 %x, i141* @i141_s
+ ret void
+}
+
+define void @i142_ls(i142 %x) nounwind {
+ store i142 %x, i142* @i142_s
+ ret void
+}
+
+define void @i143_ls(i143 %x) nounwind {
+ store i143 %x, i143* @i143_s
+ ret void
+}
+
+define void @i144_ls(i144 %x) nounwind {
+ store i144 %x, i144* @i144_s
+ ret void
+}
+
+define void @i145_ls(i145 %x) nounwind {
+ store i145 %x, i145* @i145_s
+ ret void
+}
+
+define void @i146_ls(i146 %x) nounwind {
+ store i146 %x, i146* @i146_s
+ ret void
+}
+
+define void @i147_ls(i147 %x) nounwind {
+ store i147 %x, i147* @i147_s
+ ret void
+}
+
+define void @i148_ls(i148 %x) nounwind {
+ store i148 %x, i148* @i148_s
+ ret void
+}
+
+define void @i149_ls(i149 %x) nounwind {
+ store i149 %x, i149* @i149_s
+ ret void
+}
+
+define void @i150_ls(i150 %x) nounwind {
+ store i150 %x, i150* @i150_s
+ ret void
+}
+
+define void @i151_ls(i151 %x) nounwind {
+ store i151 %x, i151* @i151_s
+ ret void
+}
+
+define void @i152_ls(i152 %x) nounwind {
+ store i152 %x, i152* @i152_s
+ ret void
+}
+
+define void @i153_ls(i153 %x) nounwind {
+ store i153 %x, i153* @i153_s
+ ret void
+}
+
+define void @i154_ls(i154 %x) nounwind {
+ store i154 %x, i154* @i154_s
+ ret void
+}
+
+define void @i155_ls(i155 %x) nounwind {
+ store i155 %x, i155* @i155_s
+ ret void
+}
+
+define void @i156_ls(i156 %x) nounwind {
+ store i156 %x, i156* @i156_s
+ ret void
+}
+
+define void @i157_ls(i157 %x) nounwind {
+ store i157 %x, i157* @i157_s
+ ret void
+}
+
+define void @i158_ls(i158 %x) nounwind {
+ store i158 %x, i158* @i158_s
+ ret void
+}
+
+define void @i159_ls(i159 %x) nounwind {
+ store i159 %x, i159* @i159_s
+ ret void
+}
+
+define void @i160_ls(i160 %x) nounwind {
+ store i160 %x, i160* @i160_s
+ ret void
+}
+
+define void @i161_ls(i161 %x) nounwind {
+ store i161 %x, i161* @i161_s
+ ret void
+}
+
+define void @i162_ls(i162 %x) nounwind {
+ store i162 %x, i162* @i162_s
+ ret void
+}
+
+define void @i163_ls(i163 %x) nounwind {
+ store i163 %x, i163* @i163_s
+ ret void
+}
+
+define void @i164_ls(i164 %x) nounwind {
+ store i164 %x, i164* @i164_s
+ ret void
+}
+
+define void @i165_ls(i165 %x) nounwind {
+ store i165 %x, i165* @i165_s
+ ret void
+}
+
+define void @i166_ls(i166 %x) nounwind {
+ store i166 %x, i166* @i166_s
+ ret void
+}
+
+define void @i167_ls(i167 %x) nounwind {
+ store i167 %x, i167* @i167_s
+ ret void
+}
+
+define void @i168_ls(i168 %x) nounwind {
+ store i168 %x, i168* @i168_s
+ ret void
+}
+
+define void @i169_ls(i169 %x) nounwind {
+ store i169 %x, i169* @i169_s
+ ret void
+}
+
+define void @i170_ls(i170 %x) nounwind {
+ store i170 %x, i170* @i170_s
+ ret void
+}
+
+define void @i171_ls(i171 %x) nounwind {
+ store i171 %x, i171* @i171_s
+ ret void
+}
+
+define void @i172_ls(i172 %x) nounwind {
+ store i172 %x, i172* @i172_s
+ ret void
+}
+
+define void @i173_ls(i173 %x) nounwind {
+ store i173 %x, i173* @i173_s
+ ret void
+}
+
+define void @i174_ls(i174 %x) nounwind {
+ store i174 %x, i174* @i174_s
+ ret void
+}
+
+define void @i175_ls(i175 %x) nounwind {
+ store i175 %x, i175* @i175_s
+ ret void
+}
+
+define void @i176_ls(i176 %x) nounwind {
+ store i176 %x, i176* @i176_s
+ ret void
+}
+
+define void @i177_ls(i177 %x) nounwind {
+ store i177 %x, i177* @i177_s
+ ret void
+}
+
+define void @i178_ls(i178 %x) nounwind {
+ store i178 %x, i178* @i178_s
+ ret void
+}
+
+define void @i179_ls(i179 %x) nounwind {
+ store i179 %x, i179* @i179_s
+ ret void
+}
+
+define void @i180_ls(i180 %x) nounwind {
+ store i180 %x, i180* @i180_s
+ ret void
+}
+
+define void @i181_ls(i181 %x) nounwind {
+ store i181 %x, i181* @i181_s
+ ret void
+}
+
+define void @i182_ls(i182 %x) nounwind {
+ store i182 %x, i182* @i182_s
+ ret void
+}
+
+define void @i183_ls(i183 %x) nounwind {
+ store i183 %x, i183* @i183_s
+ ret void
+}
+
+define void @i184_ls(i184 %x) nounwind {
+ store i184 %x, i184* @i184_s
+ ret void
+}
+
+define void @i185_ls(i185 %x) nounwind {
+ store i185 %x, i185* @i185_s
+ ret void
+}
+
+define void @i186_ls(i186 %x) nounwind {
+ store i186 %x, i186* @i186_s
+ ret void
+}
+
+define void @i187_ls(i187 %x) nounwind {
+ store i187 %x, i187* @i187_s
+ ret void
+}
+
+define void @i188_ls(i188 %x) nounwind {
+ store i188 %x, i188* @i188_s
+ ret void
+}
+
+define void @i189_ls(i189 %x) nounwind {
+ store i189 %x, i189* @i189_s
+ ret void
+}
+
+define void @i190_ls(i190 %x) nounwind {
+ store i190 %x, i190* @i190_s
+ ret void
+}
+
+define void @i191_ls(i191 %x) nounwind {
+ store i191 %x, i191* @i191_s
+ ret void
+}
+
+define void @i192_ls(i192 %x) nounwind {
+ store i192 %x, i192* @i192_s
+ ret void
+}
+
+define void @i193_ls(i193 %x) nounwind {
+ store i193 %x, i193* @i193_s
+ ret void
+}
+
+define void @i194_ls(i194 %x) nounwind {
+ store i194 %x, i194* @i194_s
+ ret void
+}
+
+define void @i195_ls(i195 %x) nounwind {
+ store i195 %x, i195* @i195_s
+ ret void
+}
+
+define void @i196_ls(i196 %x) nounwind {
+ store i196 %x, i196* @i196_s
+ ret void
+}
+
+define void @i197_ls(i197 %x) nounwind {
+ store i197 %x, i197* @i197_s
+ ret void
+}
+
+define void @i198_ls(i198 %x) nounwind {
+ store i198 %x, i198* @i198_s
+ ret void
+}
+
+define void @i199_ls(i199 %x) nounwind {
+ store i199 %x, i199* @i199_s
+ ret void
+}
+
+define void @i200_ls(i200 %x) nounwind {
+ store i200 %x, i200* @i200_s
+ ret void
+}
+
+define void @i201_ls(i201 %x) nounwind {
+ store i201 %x, i201* @i201_s
+ ret void
+}
+
+define void @i202_ls(i202 %x) nounwind {
+ store i202 %x, i202* @i202_s
+ ret void
+}
+
+define void @i203_ls(i203 %x) nounwind {
+ store i203 %x, i203* @i203_s
+ ret void
+}
+
+define void @i204_ls(i204 %x) nounwind {
+ store i204 %x, i204* @i204_s
+ ret void
+}
+
+define void @i205_ls(i205 %x) nounwind {
+ store i205 %x, i205* @i205_s
+ ret void
+}
+
+define void @i206_ls(i206 %x) nounwind {
+ store i206 %x, i206* @i206_s
+ ret void
+}
+
+define void @i207_ls(i207 %x) nounwind {
+ store i207 %x, i207* @i207_s
+ ret void
+}
+
+define void @i208_ls(i208 %x) nounwind {
+ store i208 %x, i208* @i208_s
+ ret void
+}
+
+define void @i209_ls(i209 %x) nounwind {
+ store i209 %x, i209* @i209_s
+ ret void
+}
+
+define void @i210_ls(i210 %x) nounwind {
+ store i210 %x, i210* @i210_s
+ ret void
+}
+
+define void @i211_ls(i211 %x) nounwind {
+ store i211 %x, i211* @i211_s
+ ret void
+}
+
+define void @i212_ls(i212 %x) nounwind {
+ store i212 %x, i212* @i212_s
+ ret void
+}
+
+define void @i213_ls(i213 %x) nounwind {
+ store i213 %x, i213* @i213_s
+ ret void
+}
+
+define void @i214_ls(i214 %x) nounwind {
+ store i214 %x, i214* @i214_s
+ ret void
+}
+
+define void @i215_ls(i215 %x) nounwind {
+ store i215 %x, i215* @i215_s
+ ret void
+}
+
+define void @i216_ls(i216 %x) nounwind {
+ store i216 %x, i216* @i216_s
+ ret void
+}
+
+define void @i217_ls(i217 %x) nounwind {
+ store i217 %x, i217* @i217_s
+ ret void
+}
+
+define void @i218_ls(i218 %x) nounwind {
+ store i218 %x, i218* @i218_s
+ ret void
+}
+
+define void @i219_ls(i219 %x) nounwind {
+ store i219 %x, i219* @i219_s
+ ret void
+}
+
+define void @i220_ls(i220 %x) nounwind {
+ store i220 %x, i220* @i220_s
+ ret void
+}
+
+define void @i221_ls(i221 %x) nounwind {
+ store i221 %x, i221* @i221_s
+ ret void
+}
+
+define void @i222_ls(i222 %x) nounwind {
+ store i222 %x, i222* @i222_s
+ ret void
+}
+
+define void @i223_ls(i223 %x) nounwind {
+ store i223 %x, i223* @i223_s
+ ret void
+}
+
+define void @i224_ls(i224 %x) nounwind {
+ store i224 %x, i224* @i224_s
+ ret void
+}
+
+define void @i225_ls(i225 %x) nounwind {
+ store i225 %x, i225* @i225_s
+ ret void
+}
+
+define void @i226_ls(i226 %x) nounwind {
+ store i226 %x, i226* @i226_s
+ ret void
+}
+
+define void @i227_ls(i227 %x) nounwind {
+ store i227 %x, i227* @i227_s
+ ret void
+}
+
+define void @i228_ls(i228 %x) nounwind {
+ store i228 %x, i228* @i228_s
+ ret void
+}
+
+define void @i229_ls(i229 %x) nounwind {
+ store i229 %x, i229* @i229_s
+ ret void
+}
+
+define void @i230_ls(i230 %x) nounwind {
+ store i230 %x, i230* @i230_s
+ ret void
+}
+
+define void @i231_ls(i231 %x) nounwind {
+ store i231 %x, i231* @i231_s
+ ret void
+}
+
+define void @i232_ls(i232 %x) nounwind {
+ store i232 %x, i232* @i232_s
+ ret void
+}
+
+define void @i233_ls(i233 %x) nounwind {
+ store i233 %x, i233* @i233_s
+ ret void
+}
+
+define void @i234_ls(i234 %x) nounwind {
+ store i234 %x, i234* @i234_s
+ ret void
+}
+
+define void @i235_ls(i235 %x) nounwind {
+ store i235 %x, i235* @i235_s
+ ret void
+}
+
+define void @i236_ls(i236 %x) nounwind {
+ store i236 %x, i236* @i236_s
+ ret void
+}
+
+define void @i237_ls(i237 %x) nounwind {
+ store i237 %x, i237* @i237_s
+ ret void
+}
+
+define void @i238_ls(i238 %x) nounwind {
+ store i238 %x, i238* @i238_s
+ ret void
+}
+
+define void @i239_ls(i239 %x) nounwind {
+ store i239 %x, i239* @i239_s
+ ret void
+}
+
+define void @i240_ls(i240 %x) nounwind {
+ store i240 %x, i240* @i240_s
+ ret void
+}
+
+define void @i241_ls(i241 %x) nounwind {
+ store i241 %x, i241* @i241_s
+ ret void
+}
+
+define void @i242_ls(i242 %x) nounwind {
+ store i242 %x, i242* @i242_s
+ ret void
+}
+
+define void @i243_ls(i243 %x) nounwind {
+ store i243 %x, i243* @i243_s
+ ret void
+}
+
+define void @i244_ls(i244 %x) nounwind {
+ store i244 %x, i244* @i244_s
+ ret void
+}
+
+define void @i245_ls(i245 %x) nounwind {
+ store i245 %x, i245* @i245_s
+ ret void
+}
+
+define void @i246_ls(i246 %x) nounwind {
+ store i246 %x, i246* @i246_s
+ ret void
+}
+
+define void @i247_ls(i247 %x) nounwind {
+ store i247 %x, i247* @i247_s
+ ret void
+}
+
+define void @i248_ls(i248 %x) nounwind {
+ store i248 %x, i248* @i248_s
+ ret void
+}
+
+define void @i249_ls(i249 %x) nounwind {
+ store i249 %x, i249* @i249_s
+ ret void
+}
+
+define void @i250_ls(i250 %x) nounwind {
+ store i250 %x, i250* @i250_s
+ ret void
+}
+
+define void @i251_ls(i251 %x) nounwind {
+ store i251 %x, i251* @i251_s
+ ret void
+}
+
+define void @i252_ls(i252 %x) nounwind {
+ store i252 %x, i252* @i252_s
+ ret void
+}
+
+define void @i253_ls(i253 %x) nounwind {
+ store i253 %x, i253* @i253_s
+ ret void
+}
+
+define void @i254_ls(i254 %x) nounwind {
+ store i254 %x, i254* @i254_s
+ ret void
+}
+
+define void @i255_ls(i255 %x) nounwind {
+ store i255 %x, i255* @i255_s
+ ret void
+}
+
+define void @i256_ls(i256 %x) nounwind {
+ store i256 %x, i256* @i256_s
+ ret void
+}
diff --git a/test/CodeGen/Generic/APIntSextParam.ll b/test/CodeGen/Generic/APIntSextParam.ll
new file mode 100644
index 0000000000000..9fb06cb1bfb1d
--- /dev/null
+++ b/test/CodeGen/Generic/APIntSextParam.ll
@@ -0,0 +1,1537 @@
+; RUN: llvm-as < %s | llc > %t
+@i1_s = external global i1 ; <i1*> [#uses=1]
+@i2_s = external global i2 ; <i2*> [#uses=1]
+@i3_s = external global i3 ; <i3*> [#uses=1]
+@i4_s = external global i4 ; <i4*> [#uses=1]
+@i5_s = external global i5 ; <i5*> [#uses=1]
+@i6_s = external global i6 ; <i6*> [#uses=1]
+@i7_s = external global i7 ; <i7*> [#uses=1]
+@i8_s = external global i8 ; <i8*> [#uses=1]
+@i9_s = external global i9 ; <i9*> [#uses=1]
+@i10_s = external global i10 ; <i10*> [#uses=1]
+@i11_s = external global i11 ; <i11*> [#uses=1]
+@i12_s = external global i12 ; <i12*> [#uses=1]
+@i13_s = external global i13 ; <i13*> [#uses=1]
+@i14_s = external global i14 ; <i14*> [#uses=1]
+@i15_s = external global i15 ; <i15*> [#uses=1]
+@i16_s = external global i16 ; <i16*> [#uses=1]
+@i17_s = external global i17 ; <i17*> [#uses=1]
+@i18_s = external global i18 ; <i18*> [#uses=1]
+@i19_s = external global i19 ; <i19*> [#uses=1]
+@i20_s = external global i20 ; <i20*> [#uses=1]
+@i21_s = external global i21 ; <i21*> [#uses=1]
+@i22_s = external global i22 ; <i22*> [#uses=1]
+@i23_s = external global i23 ; <i23*> [#uses=1]
+@i24_s = external global i24 ; <i24*> [#uses=1]
+@i25_s = external global i25 ; <i25*> [#uses=1]
+@i26_s = external global i26 ; <i26*> [#uses=1]
+@i27_s = external global i27 ; <i27*> [#uses=1]
+@i28_s = external global i28 ; <i28*> [#uses=1]
+@i29_s = external global i29 ; <i29*> [#uses=1]
+@i30_s = external global i30 ; <i30*> [#uses=1]
+@i31_s = external global i31 ; <i31*> [#uses=1]
+@i32_s = external global i32 ; <i32*> [#uses=1]
+@i33_s = external global i33 ; <i33*> [#uses=1]
+@i34_s = external global i34 ; <i34*> [#uses=1]
+@i35_s = external global i35 ; <i35*> [#uses=1]
+@i36_s = external global i36 ; <i36*> [#uses=1]
+@i37_s = external global i37 ; <i37*> [#uses=1]
+@i38_s = external global i38 ; <i38*> [#uses=1]
+@i39_s = external global i39 ; <i39*> [#uses=1]
+@i40_s = external global i40 ; <i40*> [#uses=1]
+@i41_s = external global i41 ; <i41*> [#uses=1]
+@i42_s = external global i42 ; <i42*> [#uses=1]
+@i43_s = external global i43 ; <i43*> [#uses=1]
+@i44_s = external global i44 ; <i44*> [#uses=1]
+@i45_s = external global i45 ; <i45*> [#uses=1]
+@i46_s = external global i46 ; <i46*> [#uses=1]
+@i47_s = external global i47 ; <i47*> [#uses=1]
+@i48_s = external global i48 ; <i48*> [#uses=1]
+@i49_s = external global i49 ; <i49*> [#uses=1]
+@i50_s = external global i50 ; <i50*> [#uses=1]
+@i51_s = external global i51 ; <i51*> [#uses=1]
+@i52_s = external global i52 ; <i52*> [#uses=1]
+@i53_s = external global i53 ; <i53*> [#uses=1]
+@i54_s = external global i54 ; <i54*> [#uses=1]
+@i55_s = external global i55 ; <i55*> [#uses=1]
+@i56_s = external global i56 ; <i56*> [#uses=1]
+@i57_s = external global i57 ; <i57*> [#uses=1]
+@i58_s = external global i58 ; <i58*> [#uses=1]
+@i59_s = external global i59 ; <i59*> [#uses=1]
+@i60_s = external global i60 ; <i60*> [#uses=1]
+@i61_s = external global i61 ; <i61*> [#uses=1]
+@i62_s = external global i62 ; <i62*> [#uses=1]
+@i63_s = external global i63 ; <i63*> [#uses=1]
+@i64_s = external global i64 ; <i64*> [#uses=1]
+@i65_s = external global i65 ; <i65*> [#uses=1]
+@i66_s = external global i66 ; <i66*> [#uses=1]
+@i67_s = external global i67 ; <i67*> [#uses=1]
+@i68_s = external global i68 ; <i68*> [#uses=1]
+@i69_s = external global i69 ; <i69*> [#uses=1]
+@i70_s = external global i70 ; <i70*> [#uses=1]
+@i71_s = external global i71 ; <i71*> [#uses=1]
+@i72_s = external global i72 ; <i72*> [#uses=1]
+@i73_s = external global i73 ; <i73*> [#uses=1]
+@i74_s = external global i74 ; <i74*> [#uses=1]
+@i75_s = external global i75 ; <i75*> [#uses=1]
+@i76_s = external global i76 ; <i76*> [#uses=1]
+@i77_s = external global i77 ; <i77*> [#uses=1]
+@i78_s = external global i78 ; <i78*> [#uses=1]
+@i79_s = external global i79 ; <i79*> [#uses=1]
+@i80_s = external global i80 ; <i80*> [#uses=1]
+@i81_s = external global i81 ; <i81*> [#uses=1]
+@i82_s = external global i82 ; <i82*> [#uses=1]
+@i83_s = external global i83 ; <i83*> [#uses=1]
+@i84_s = external global i84 ; <i84*> [#uses=1]
+@i85_s = external global i85 ; <i85*> [#uses=1]
+@i86_s = external global i86 ; <i86*> [#uses=1]
+@i87_s = external global i87 ; <i87*> [#uses=1]
+@i88_s = external global i88 ; <i88*> [#uses=1]
+@i89_s = external global i89 ; <i89*> [#uses=1]
+@i90_s = external global i90 ; <i90*> [#uses=1]
+@i91_s = external global i91 ; <i91*> [#uses=1]
+@i92_s = external global i92 ; <i92*> [#uses=1]
+@i93_s = external global i93 ; <i93*> [#uses=1]
+@i94_s = external global i94 ; <i94*> [#uses=1]
+@i95_s = external global i95 ; <i95*> [#uses=1]
+@i96_s = external global i96 ; <i96*> [#uses=1]
+@i97_s = external global i97 ; <i97*> [#uses=1]
+@i98_s = external global i98 ; <i98*> [#uses=1]
+@i99_s = external global i99 ; <i99*> [#uses=1]
+@i100_s = external global i100 ; <i100*> [#uses=1]
+@i101_s = external global i101 ; <i101*> [#uses=1]
+@i102_s = external global i102 ; <i102*> [#uses=1]
+@i103_s = external global i103 ; <i103*> [#uses=1]
+@i104_s = external global i104 ; <i104*> [#uses=1]
+@i105_s = external global i105 ; <i105*> [#uses=1]
+@i106_s = external global i106 ; <i106*> [#uses=1]
+@i107_s = external global i107 ; <i107*> [#uses=1]
+@i108_s = external global i108 ; <i108*> [#uses=1]
+@i109_s = external global i109 ; <i109*> [#uses=1]
+@i110_s = external global i110 ; <i110*> [#uses=1]
+@i111_s = external global i111 ; <i111*> [#uses=1]
+@i112_s = external global i112 ; <i112*> [#uses=1]
+@i113_s = external global i113 ; <i113*> [#uses=1]
+@i114_s = external global i114 ; <i114*> [#uses=1]
+@i115_s = external global i115 ; <i115*> [#uses=1]
+@i116_s = external global i116 ; <i116*> [#uses=1]
+@i117_s = external global i117 ; <i117*> [#uses=1]
+@i118_s = external global i118 ; <i118*> [#uses=1]
+@i119_s = external global i119 ; <i119*> [#uses=1]
+@i120_s = external global i120 ; <i120*> [#uses=1]
+@i121_s = external global i121 ; <i121*> [#uses=1]
+@i122_s = external global i122 ; <i122*> [#uses=1]
+@i123_s = external global i123 ; <i123*> [#uses=1]
+@i124_s = external global i124 ; <i124*> [#uses=1]
+@i125_s = external global i125 ; <i125*> [#uses=1]
+@i126_s = external global i126 ; <i126*> [#uses=1]
+@i127_s = external global i127 ; <i127*> [#uses=1]
+@i128_s = external global i128 ; <i128*> [#uses=1]
+@i129_s = external global i129 ; <i129*> [#uses=1]
+@i130_s = external global i130 ; <i130*> [#uses=1]
+@i131_s = external global i131 ; <i131*> [#uses=1]
+@i132_s = external global i132 ; <i132*> [#uses=1]
+@i133_s = external global i133 ; <i133*> [#uses=1]
+@i134_s = external global i134 ; <i134*> [#uses=1]
+@i135_s = external global i135 ; <i135*> [#uses=1]
+@i136_s = external global i136 ; <i136*> [#uses=1]
+@i137_s = external global i137 ; <i137*> [#uses=1]
+@i138_s = external global i138 ; <i138*> [#uses=1]
+@i139_s = external global i139 ; <i139*> [#uses=1]
+@i140_s = external global i140 ; <i140*> [#uses=1]
+@i141_s = external global i141 ; <i141*> [#uses=1]
+@i142_s = external global i142 ; <i142*> [#uses=1]
+@i143_s = external global i143 ; <i143*> [#uses=1]
+@i144_s = external global i144 ; <i144*> [#uses=1]
+@i145_s = external global i145 ; <i145*> [#uses=1]
+@i146_s = external global i146 ; <i146*> [#uses=1]
+@i147_s = external global i147 ; <i147*> [#uses=1]
+@i148_s = external global i148 ; <i148*> [#uses=1]
+@i149_s = external global i149 ; <i149*> [#uses=1]
+@i150_s = external global i150 ; <i150*> [#uses=1]
+@i151_s = external global i151 ; <i151*> [#uses=1]
+@i152_s = external global i152 ; <i152*> [#uses=1]
+@i153_s = external global i153 ; <i153*> [#uses=1]
+@i154_s = external global i154 ; <i154*> [#uses=1]
+@i155_s = external global i155 ; <i155*> [#uses=1]
+@i156_s = external global i156 ; <i156*> [#uses=1]
+@i157_s = external global i157 ; <i157*> [#uses=1]
+@i158_s = external global i158 ; <i158*> [#uses=1]
+@i159_s = external global i159 ; <i159*> [#uses=1]
+@i160_s = external global i160 ; <i160*> [#uses=1]
+@i161_s = external global i161 ; <i161*> [#uses=1]
+@i162_s = external global i162 ; <i162*> [#uses=1]
+@i163_s = external global i163 ; <i163*> [#uses=1]
+@i164_s = external global i164 ; <i164*> [#uses=1]
+@i165_s = external global i165 ; <i165*> [#uses=1]
+@i166_s = external global i166 ; <i166*> [#uses=1]
+@i167_s = external global i167 ; <i167*> [#uses=1]
+@i168_s = external global i168 ; <i168*> [#uses=1]
+@i169_s = external global i169 ; <i169*> [#uses=1]
+@i170_s = external global i170 ; <i170*> [#uses=1]
+@i171_s = external global i171 ; <i171*> [#uses=1]
+@i172_s = external global i172 ; <i172*> [#uses=1]
+@i173_s = external global i173 ; <i173*> [#uses=1]
+@i174_s = external global i174 ; <i174*> [#uses=1]
+@i175_s = external global i175 ; <i175*> [#uses=1]
+@i176_s = external global i176 ; <i176*> [#uses=1]
+@i177_s = external global i177 ; <i177*> [#uses=1]
+@i178_s = external global i178 ; <i178*> [#uses=1]
+@i179_s = external global i179 ; <i179*> [#uses=1]
+@i180_s = external global i180 ; <i180*> [#uses=1]
+@i181_s = external global i181 ; <i181*> [#uses=1]
+@i182_s = external global i182 ; <i182*> [#uses=1]
+@i183_s = external global i183 ; <i183*> [#uses=1]
+@i184_s = external global i184 ; <i184*> [#uses=1]
+@i185_s = external global i185 ; <i185*> [#uses=1]
+@i186_s = external global i186 ; <i186*> [#uses=1]
+@i187_s = external global i187 ; <i187*> [#uses=1]
+@i188_s = external global i188 ; <i188*> [#uses=1]
+@i189_s = external global i189 ; <i189*> [#uses=1]
+@i190_s = external global i190 ; <i190*> [#uses=1]
+@i191_s = external global i191 ; <i191*> [#uses=1]
+@i192_s = external global i192 ; <i192*> [#uses=1]
+@i193_s = external global i193 ; <i193*> [#uses=1]
+@i194_s = external global i194 ; <i194*> [#uses=1]
+@i195_s = external global i195 ; <i195*> [#uses=1]
+@i196_s = external global i196 ; <i196*> [#uses=1]
+@i197_s = external global i197 ; <i197*> [#uses=1]
+@i198_s = external global i198 ; <i198*> [#uses=1]
+@i199_s = external global i199 ; <i199*> [#uses=1]
+@i200_s = external global i200 ; <i200*> [#uses=1]
+@i201_s = external global i201 ; <i201*> [#uses=1]
+@i202_s = external global i202 ; <i202*> [#uses=1]
+@i203_s = external global i203 ; <i203*> [#uses=1]
+@i204_s = external global i204 ; <i204*> [#uses=1]
+@i205_s = external global i205 ; <i205*> [#uses=1]
+@i206_s = external global i206 ; <i206*> [#uses=1]
+@i207_s = external global i207 ; <i207*> [#uses=1]
+@i208_s = external global i208 ; <i208*> [#uses=1]
+@i209_s = external global i209 ; <i209*> [#uses=1]
+@i210_s = external global i210 ; <i210*> [#uses=1]
+@i211_s = external global i211 ; <i211*> [#uses=1]
+@i212_s = external global i212 ; <i212*> [#uses=1]
+@i213_s = external global i213 ; <i213*> [#uses=1]
+@i214_s = external global i214 ; <i214*> [#uses=1]
+@i215_s = external global i215 ; <i215*> [#uses=1]
+@i216_s = external global i216 ; <i216*> [#uses=1]
+@i217_s = external global i217 ; <i217*> [#uses=1]
+@i218_s = external global i218 ; <i218*> [#uses=1]
+@i219_s = external global i219 ; <i219*> [#uses=1]
+@i220_s = external global i220 ; <i220*> [#uses=1]
+@i221_s = external global i221 ; <i221*> [#uses=1]
+@i222_s = external global i222 ; <i222*> [#uses=1]
+@i223_s = external global i223 ; <i223*> [#uses=1]
+@i224_s = external global i224 ; <i224*> [#uses=1]
+@i225_s = external global i225 ; <i225*> [#uses=1]
+@i226_s = external global i226 ; <i226*> [#uses=1]
+@i227_s = external global i227 ; <i227*> [#uses=1]
+@i228_s = external global i228 ; <i228*> [#uses=1]
+@i229_s = external global i229 ; <i229*> [#uses=1]
+@i230_s = external global i230 ; <i230*> [#uses=1]
+@i231_s = external global i231 ; <i231*> [#uses=1]
+@i232_s = external global i232 ; <i232*> [#uses=1]
+@i233_s = external global i233 ; <i233*> [#uses=1]
+@i234_s = external global i234 ; <i234*> [#uses=1]
+@i235_s = external global i235 ; <i235*> [#uses=1]
+@i236_s = external global i236 ; <i236*> [#uses=1]
+@i237_s = external global i237 ; <i237*> [#uses=1]
+@i238_s = external global i238 ; <i238*> [#uses=1]
+@i239_s = external global i239 ; <i239*> [#uses=1]
+@i240_s = external global i240 ; <i240*> [#uses=1]
+@i241_s = external global i241 ; <i241*> [#uses=1]
+@i242_s = external global i242 ; <i242*> [#uses=1]
+@i243_s = external global i243 ; <i243*> [#uses=1]
+@i244_s = external global i244 ; <i244*> [#uses=1]
+@i245_s = external global i245 ; <i245*> [#uses=1]
+@i246_s = external global i246 ; <i246*> [#uses=1]
+@i247_s = external global i247 ; <i247*> [#uses=1]
+@i248_s = external global i248 ; <i248*> [#uses=1]
+@i249_s = external global i249 ; <i249*> [#uses=1]
+@i250_s = external global i250 ; <i250*> [#uses=1]
+@i251_s = external global i251 ; <i251*> [#uses=1]
+@i252_s = external global i252 ; <i252*> [#uses=1]
+@i253_s = external global i253 ; <i253*> [#uses=1]
+@i254_s = external global i254 ; <i254*> [#uses=1]
+@i255_s = external global i255 ; <i255*> [#uses=1]
+@i256_s = external global i256 ; <i256*> [#uses=1]
+
+define void @i1_ls(i1 signext %x) nounwind {
+ store i1 %x, i1* @i1_s
+ ret void
+}
+
+define void @i2_ls(i2 signext %x) nounwind {
+ store i2 %x, i2* @i2_s
+ ret void
+}
+
+define void @i3_ls(i3 signext %x) nounwind {
+ store i3 %x, i3* @i3_s
+ ret void
+}
+
+define void @i4_ls(i4 signext %x) nounwind {
+ store i4 %x, i4* @i4_s
+ ret void
+}
+
+define void @i5_ls(i5 signext %x) nounwind {
+ store i5 %x, i5* @i5_s
+ ret void
+}
+
+define void @i6_ls(i6 signext %x) nounwind {
+ store i6 %x, i6* @i6_s
+ ret void
+}
+
+define void @i7_ls(i7 signext %x) nounwind {
+ store i7 %x, i7* @i7_s
+ ret void
+}
+
+define void @i8_ls(i8 signext %x) nounwind {
+ store i8 %x, i8* @i8_s
+ ret void
+}
+
+define void @i9_ls(i9 signext %x) nounwind {
+ store i9 %x, i9* @i9_s
+ ret void
+}
+
+define void @i10_ls(i10 signext %x) nounwind {
+ store i10 %x, i10* @i10_s
+ ret void
+}
+
+define void @i11_ls(i11 signext %x) nounwind {
+ store i11 %x, i11* @i11_s
+ ret void
+}
+
+define void @i12_ls(i12 signext %x) nounwind {
+ store i12 %x, i12* @i12_s
+ ret void
+}
+
+define void @i13_ls(i13 signext %x) nounwind {
+ store i13 %x, i13* @i13_s
+ ret void
+}
+
+define void @i14_ls(i14 signext %x) nounwind {
+ store i14 %x, i14* @i14_s
+ ret void
+}
+
+define void @i15_ls(i15 signext %x) nounwind {
+ store i15 %x, i15* @i15_s
+ ret void
+}
+
+define void @i16_ls(i16 signext %x) nounwind {
+ store i16 %x, i16* @i16_s
+ ret void
+}
+
+define void @i17_ls(i17 signext %x) nounwind {
+ store i17 %x, i17* @i17_s
+ ret void
+}
+
+define void @i18_ls(i18 signext %x) nounwind {
+ store i18 %x, i18* @i18_s
+ ret void
+}
+
+define void @i19_ls(i19 signext %x) nounwind {
+ store i19 %x, i19* @i19_s
+ ret void
+}
+
+define void @i20_ls(i20 signext %x) nounwind {
+ store i20 %x, i20* @i20_s
+ ret void
+}
+
+define void @i21_ls(i21 signext %x) nounwind {
+ store i21 %x, i21* @i21_s
+ ret void
+}
+
+define void @i22_ls(i22 signext %x) nounwind {
+ store i22 %x, i22* @i22_s
+ ret void
+}
+
+define void @i23_ls(i23 signext %x) nounwind {
+ store i23 %x, i23* @i23_s
+ ret void
+}
+
+define void @i24_ls(i24 signext %x) nounwind {
+ store i24 %x, i24* @i24_s
+ ret void
+}
+
+define void @i25_ls(i25 signext %x) nounwind {
+ store i25 %x, i25* @i25_s
+ ret void
+}
+
+define void @i26_ls(i26 signext %x) nounwind {
+ store i26 %x, i26* @i26_s
+ ret void
+}
+
+define void @i27_ls(i27 signext %x) nounwind {
+ store i27 %x, i27* @i27_s
+ ret void
+}
+
+define void @i28_ls(i28 signext %x) nounwind {
+ store i28 %x, i28* @i28_s
+ ret void
+}
+
+define void @i29_ls(i29 signext %x) nounwind {
+ store i29 %x, i29* @i29_s
+ ret void
+}
+
+define void @i30_ls(i30 signext %x) nounwind {
+ store i30 %x, i30* @i30_s
+ ret void
+}
+
+define void @i31_ls(i31 signext %x) nounwind {
+ store i31 %x, i31* @i31_s
+ ret void
+}
+
+define void @i32_ls(i32 signext %x) nounwind {
+ store i32 %x, i32* @i32_s
+ ret void
+}
+
+define void @i33_ls(i33 signext %x) nounwind {
+ store i33 %x, i33* @i33_s
+ ret void
+}
+
+define void @i34_ls(i34 signext %x) nounwind {
+ store i34 %x, i34* @i34_s
+ ret void
+}
+
+define void @i35_ls(i35 signext %x) nounwind {
+ store i35 %x, i35* @i35_s
+ ret void
+}
+
+define void @i36_ls(i36 signext %x) nounwind {
+ store i36 %x, i36* @i36_s
+ ret void
+}
+
+define void @i37_ls(i37 signext %x) nounwind {
+ store i37 %x, i37* @i37_s
+ ret void
+}
+
+define void @i38_ls(i38 signext %x) nounwind {
+ store i38 %x, i38* @i38_s
+ ret void
+}
+
+define void @i39_ls(i39 signext %x) nounwind {
+ store i39 %x, i39* @i39_s
+ ret void
+}
+
+define void @i40_ls(i40 signext %x) nounwind {
+ store i40 %x, i40* @i40_s
+ ret void
+}
+
+define void @i41_ls(i41 signext %x) nounwind {
+ store i41 %x, i41* @i41_s
+ ret void
+}
+
+define void @i42_ls(i42 signext %x) nounwind {
+ store i42 %x, i42* @i42_s
+ ret void
+}
+
+define void @i43_ls(i43 signext %x) nounwind {
+ store i43 %x, i43* @i43_s
+ ret void
+}
+
+define void @i44_ls(i44 signext %x) nounwind {
+ store i44 %x, i44* @i44_s
+ ret void
+}
+
+define void @i45_ls(i45 signext %x) nounwind {
+ store i45 %x, i45* @i45_s
+ ret void
+}
+
+define void @i46_ls(i46 signext %x) nounwind {
+ store i46 %x, i46* @i46_s
+ ret void
+}
+
+define void @i47_ls(i47 signext %x) nounwind {
+ store i47 %x, i47* @i47_s
+ ret void
+}
+
+define void @i48_ls(i48 signext %x) nounwind {
+ store i48 %x, i48* @i48_s
+ ret void
+}
+
+define void @i49_ls(i49 signext %x) nounwind {
+ store i49 %x, i49* @i49_s
+ ret void
+}
+
+define void @i50_ls(i50 signext %x) nounwind {
+ store i50 %x, i50* @i50_s
+ ret void
+}
+
+define void @i51_ls(i51 signext %x) nounwind {
+ store i51 %x, i51* @i51_s
+ ret void
+}
+
+define void @i52_ls(i52 signext %x) nounwind {
+ store i52 %x, i52* @i52_s
+ ret void
+}
+
+define void @i53_ls(i53 signext %x) nounwind {
+ store i53 %x, i53* @i53_s
+ ret void
+}
+
+define void @i54_ls(i54 signext %x) nounwind {
+ store i54 %x, i54* @i54_s
+ ret void
+}
+
+define void @i55_ls(i55 signext %x) nounwind {
+ store i55 %x, i55* @i55_s
+ ret void
+}
+
+define void @i56_ls(i56 signext %x) nounwind {
+ store i56 %x, i56* @i56_s
+ ret void
+}
+
+define void @i57_ls(i57 signext %x) nounwind {
+ store i57 %x, i57* @i57_s
+ ret void
+}
+
+define void @i58_ls(i58 signext %x) nounwind {
+ store i58 %x, i58* @i58_s
+ ret void
+}
+
+define void @i59_ls(i59 signext %x) nounwind {
+ store i59 %x, i59* @i59_s
+ ret void
+}
+
+define void @i60_ls(i60 signext %x) nounwind {
+ store i60 %x, i60* @i60_s
+ ret void
+}
+
+define void @i61_ls(i61 signext %x) nounwind {
+ store i61 %x, i61* @i61_s
+ ret void
+}
+
+define void @i62_ls(i62 signext %x) nounwind {
+ store i62 %x, i62* @i62_s
+ ret void
+}
+
+define void @i63_ls(i63 signext %x) nounwind {
+ store i63 %x, i63* @i63_s
+ ret void
+}
+
+define void @i64_ls(i64 signext %x) nounwind {
+ store i64 %x, i64* @i64_s
+ ret void
+}
+
+define void @i65_ls(i65 signext %x) nounwind {
+ store i65 %x, i65* @i65_s
+ ret void
+}
+
+define void @i66_ls(i66 signext %x) nounwind {
+ store i66 %x, i66* @i66_s
+ ret void
+}
+
+define void @i67_ls(i67 signext %x) nounwind {
+ store i67 %x, i67* @i67_s
+ ret void
+}
+
+define void @i68_ls(i68 signext %x) nounwind {
+ store i68 %x, i68* @i68_s
+ ret void
+}
+
+define void @i69_ls(i69 signext %x) nounwind {
+ store i69 %x, i69* @i69_s
+ ret void
+}
+
+define void @i70_ls(i70 signext %x) nounwind {
+ store i70 %x, i70* @i70_s
+ ret void
+}
+
+define void @i71_ls(i71 signext %x) nounwind {
+ store i71 %x, i71* @i71_s
+ ret void
+}
+
+define void @i72_ls(i72 signext %x) nounwind {
+ store i72 %x, i72* @i72_s
+ ret void
+}
+
+define void @i73_ls(i73 signext %x) nounwind {
+ store i73 %x, i73* @i73_s
+ ret void
+}
+
+define void @i74_ls(i74 signext %x) nounwind {
+ store i74 %x, i74* @i74_s
+ ret void
+}
+
+define void @i75_ls(i75 signext %x) nounwind {
+ store i75 %x, i75* @i75_s
+ ret void
+}
+
+define void @i76_ls(i76 signext %x) nounwind {
+ store i76 %x, i76* @i76_s
+ ret void
+}
+
+define void @i77_ls(i77 signext %x) nounwind {
+ store i77 %x, i77* @i77_s
+ ret void
+}
+
+define void @i78_ls(i78 signext %x) nounwind {
+ store i78 %x, i78* @i78_s
+ ret void
+}
+
+define void @i79_ls(i79 signext %x) nounwind {
+ store i79 %x, i79* @i79_s
+ ret void
+}
+
+define void @i80_ls(i80 signext %x) nounwind {
+ store i80 %x, i80* @i80_s
+ ret void
+}
+
+define void @i81_ls(i81 signext %x) nounwind {
+ store i81 %x, i81* @i81_s
+ ret void
+}
+
+define void @i82_ls(i82 signext %x) nounwind {
+ store i82 %x, i82* @i82_s
+ ret void
+}
+
+define void @i83_ls(i83 signext %x) nounwind {
+ store i83 %x, i83* @i83_s
+ ret void
+}
+
+define void @i84_ls(i84 signext %x) nounwind {
+ store i84 %x, i84* @i84_s
+ ret void
+}
+
+define void @i85_ls(i85 signext %x) nounwind {
+ store i85 %x, i85* @i85_s
+ ret void
+}
+
+define void @i86_ls(i86 signext %x) nounwind {
+ store i86 %x, i86* @i86_s
+ ret void
+}
+
+define void @i87_ls(i87 signext %x) nounwind {
+ store i87 %x, i87* @i87_s
+ ret void
+}
+
+define void @i88_ls(i88 signext %x) nounwind {
+ store i88 %x, i88* @i88_s
+ ret void
+}
+
+define void @i89_ls(i89 signext %x) nounwind {
+ store i89 %x, i89* @i89_s
+ ret void
+}
+
+define void @i90_ls(i90 signext %x) nounwind {
+ store i90 %x, i90* @i90_s
+ ret void
+}
+
+define void @i91_ls(i91 signext %x) nounwind {
+ store i91 %x, i91* @i91_s
+ ret void
+}
+
+define void @i92_ls(i92 signext %x) nounwind {
+ store i92 %x, i92* @i92_s
+ ret void
+}
+
+define void @i93_ls(i93 signext %x) nounwind {
+ store i93 %x, i93* @i93_s
+ ret void
+}
+
+define void @i94_ls(i94 signext %x) nounwind {
+ store i94 %x, i94* @i94_s
+ ret void
+}
+
+define void @i95_ls(i95 signext %x) nounwind {
+ store i95 %x, i95* @i95_s
+ ret void
+}
+
+define void @i96_ls(i96 signext %x) nounwind {
+ store i96 %x, i96* @i96_s
+ ret void
+}
+
+define void @i97_ls(i97 signext %x) nounwind {
+ store i97 %x, i97* @i97_s
+ ret void
+}
+
+define void @i98_ls(i98 signext %x) nounwind {
+ store i98 %x, i98* @i98_s
+ ret void
+}
+
+define void @i99_ls(i99 signext %x) nounwind {
+ store i99 %x, i99* @i99_s
+ ret void
+}
+
+define void @i100_ls(i100 signext %x) nounwind {
+ store i100 %x, i100* @i100_s
+ ret void
+}
+
+define void @i101_ls(i101 signext %x) nounwind {
+ store i101 %x, i101* @i101_s
+ ret void
+}
+
+define void @i102_ls(i102 signext %x) nounwind {
+ store i102 %x, i102* @i102_s
+ ret void
+}
+
+define void @i103_ls(i103 signext %x) nounwind {
+ store i103 %x, i103* @i103_s
+ ret void
+}
+
+define void @i104_ls(i104 signext %x) nounwind {
+ store i104 %x, i104* @i104_s
+ ret void
+}
+
+define void @i105_ls(i105 signext %x) nounwind {
+ store i105 %x, i105* @i105_s
+ ret void
+}
+
+define void @i106_ls(i106 signext %x) nounwind {
+ store i106 %x, i106* @i106_s
+ ret void
+}
+
+define void @i107_ls(i107 signext %x) nounwind {
+ store i107 %x, i107* @i107_s
+ ret void
+}
+
+define void @i108_ls(i108 signext %x) nounwind {
+ store i108 %x, i108* @i108_s
+ ret void
+}
+
+define void @i109_ls(i109 signext %x) nounwind {
+ store i109 %x, i109* @i109_s
+ ret void
+}
+
+define void @i110_ls(i110 signext %x) nounwind {
+ store i110 %x, i110* @i110_s
+ ret void
+}
+
+define void @i111_ls(i111 signext %x) nounwind {
+ store i111 %x, i111* @i111_s
+ ret void
+}
+
+define void @i112_ls(i112 signext %x) nounwind {
+ store i112 %x, i112* @i112_s
+ ret void
+}
+
+define void @i113_ls(i113 signext %x) nounwind {
+ store i113 %x, i113* @i113_s
+ ret void
+}
+
+define void @i114_ls(i114 signext %x) nounwind {
+ store i114 %x, i114* @i114_s
+ ret void
+}
+
+define void @i115_ls(i115 signext %x) nounwind {
+ store i115 %x, i115* @i115_s
+ ret void
+}
+
+define void @i116_ls(i116 signext %x) nounwind {
+ store i116 %x, i116* @i116_s
+ ret void
+}
+
+define void @i117_ls(i117 signext %x) nounwind {
+ store i117 %x, i117* @i117_s
+ ret void
+}
+
+define void @i118_ls(i118 signext %x) nounwind {
+ store i118 %x, i118* @i118_s
+ ret void
+}
+
+define void @i119_ls(i119 signext %x) nounwind {
+ store i119 %x, i119* @i119_s
+ ret void
+}
+
+define void @i120_ls(i120 signext %x) nounwind {
+ store i120 %x, i120* @i120_s
+ ret void
+}
+
+define void @i121_ls(i121 signext %x) nounwind {
+ store i121 %x, i121* @i121_s
+ ret void
+}
+
+define void @i122_ls(i122 signext %x) nounwind {
+ store i122 %x, i122* @i122_s
+ ret void
+}
+
+define void @i123_ls(i123 signext %x) nounwind {
+ store i123 %x, i123* @i123_s
+ ret void
+}
+
+define void @i124_ls(i124 signext %x) nounwind {
+ store i124 %x, i124* @i124_s
+ ret void
+}
+
+define void @i125_ls(i125 signext %x) nounwind {
+ store i125 %x, i125* @i125_s
+ ret void
+}
+
+define void @i126_ls(i126 signext %x) nounwind {
+ store i126 %x, i126* @i126_s
+ ret void
+}
+
+define void @i127_ls(i127 signext %x) nounwind {
+ store i127 %x, i127* @i127_s
+ ret void
+}
+
+define void @i128_ls(i128 signext %x) nounwind {
+ store i128 %x, i128* @i128_s
+ ret void
+}
+
+define void @i129_ls(i129 signext %x) nounwind {
+ store i129 %x, i129* @i129_s
+ ret void
+}
+
+define void @i130_ls(i130 signext %x) nounwind {
+ store i130 %x, i130* @i130_s
+ ret void
+}
+
+define void @i131_ls(i131 signext %x) nounwind {
+ store i131 %x, i131* @i131_s
+ ret void
+}
+
+define void @i132_ls(i132 signext %x) nounwind {
+ store i132 %x, i132* @i132_s
+ ret void
+}
+
+define void @i133_ls(i133 signext %x) nounwind {
+ store i133 %x, i133* @i133_s
+ ret void
+}
+
+define void @i134_ls(i134 signext %x) nounwind {
+ store i134 %x, i134* @i134_s
+ ret void
+}
+
+define void @i135_ls(i135 signext %x) nounwind {
+ store i135 %x, i135* @i135_s
+ ret void
+}
+
+define void @i136_ls(i136 signext %x) nounwind {
+ store i136 %x, i136* @i136_s
+ ret void
+}
+
+define void @i137_ls(i137 signext %x) nounwind {
+ store i137 %x, i137* @i137_s
+ ret void
+}
+
+define void @i138_ls(i138 signext %x) nounwind {
+ store i138 %x, i138* @i138_s
+ ret void
+}
+
+define void @i139_ls(i139 signext %x) nounwind {
+ store i139 %x, i139* @i139_s
+ ret void
+}
+
+define void @i140_ls(i140 signext %x) nounwind {
+ store i140 %x, i140* @i140_s
+ ret void
+}
+
+define void @i141_ls(i141 signext %x) nounwind {
+ store i141 %x, i141* @i141_s
+ ret void
+}
+
+define void @i142_ls(i142 signext %x) nounwind {
+ store i142 %x, i142* @i142_s
+ ret void
+}
+
+define void @i143_ls(i143 signext %x) nounwind {
+ store i143 %x, i143* @i143_s
+ ret void
+}
+
+define void @i144_ls(i144 signext %x) nounwind {
+ store i144 %x, i144* @i144_s
+ ret void
+}
+
+define void @i145_ls(i145 signext %x) nounwind {
+ store i145 %x, i145* @i145_s
+ ret void
+}
+
+define void @i146_ls(i146 signext %x) nounwind {
+ store i146 %x, i146* @i146_s
+ ret void
+}
+
+define void @i147_ls(i147 signext %x) nounwind {
+ store i147 %x, i147* @i147_s
+ ret void
+}
+
+define void @i148_ls(i148 signext %x) nounwind {
+ store i148 %x, i148* @i148_s
+ ret void
+}
+
+define void @i149_ls(i149 signext %x) nounwind {
+ store i149 %x, i149* @i149_s
+ ret void
+}
+
+define void @i150_ls(i150 signext %x) nounwind {
+ store i150 %x, i150* @i150_s
+ ret void
+}
+
+define void @i151_ls(i151 signext %x) nounwind {
+ store i151 %x, i151* @i151_s
+ ret void
+}
+
+define void @i152_ls(i152 signext %x) nounwind {
+ store i152 %x, i152* @i152_s
+ ret void
+}
+
+define void @i153_ls(i153 signext %x) nounwind {
+ store i153 %x, i153* @i153_s
+ ret void
+}
+
+define void @i154_ls(i154 signext %x) nounwind {
+ store i154 %x, i154* @i154_s
+ ret void
+}
+
+define void @i155_ls(i155 signext %x) nounwind {
+ store i155 %x, i155* @i155_s
+ ret void
+}
+
+define void @i156_ls(i156 signext %x) nounwind {
+ store i156 %x, i156* @i156_s
+ ret void
+}
+
+define void @i157_ls(i157 signext %x) nounwind {
+ store i157 %x, i157* @i157_s
+ ret void
+}
+
+define void @i158_ls(i158 signext %x) nounwind {
+ store i158 %x, i158* @i158_s
+ ret void
+}
+
+define void @i159_ls(i159 signext %x) nounwind {
+ store i159 %x, i159* @i159_s
+ ret void
+}
+
+define void @i160_ls(i160 signext %x) nounwind {
+ store i160 %x, i160* @i160_s
+ ret void
+}
+
+define void @i161_ls(i161 signext %x) nounwind {
+ store i161 %x, i161* @i161_s
+ ret void
+}
+
+define void @i162_ls(i162 signext %x) nounwind {
+ store i162 %x, i162* @i162_s
+ ret void
+}
+
+define void @i163_ls(i163 signext %x) nounwind {
+ store i163 %x, i163* @i163_s
+ ret void
+}
+
+define void @i164_ls(i164 signext %x) nounwind {
+ store i164 %x, i164* @i164_s
+ ret void
+}
+
+define void @i165_ls(i165 signext %x) nounwind {
+ store i165 %x, i165* @i165_s
+ ret void
+}
+
+define void @i166_ls(i166 signext %x) nounwind {
+ store i166 %x, i166* @i166_s
+ ret void
+}
+
+define void @i167_ls(i167 signext %x) nounwind {
+ store i167 %x, i167* @i167_s
+ ret void
+}
+
+define void @i168_ls(i168 signext %x) nounwind {
+ store i168 %x, i168* @i168_s
+ ret void
+}
+
+define void @i169_ls(i169 signext %x) nounwind {
+ store i169 %x, i169* @i169_s
+ ret void
+}
+
+define void @i170_ls(i170 signext %x) nounwind {
+ store i170 %x, i170* @i170_s
+ ret void
+}
+
+define void @i171_ls(i171 signext %x) nounwind {
+ store i171 %x, i171* @i171_s
+ ret void
+}
+
+define void @i172_ls(i172 signext %x) nounwind {
+ store i172 %x, i172* @i172_s
+ ret void
+}
+
+define void @i173_ls(i173 signext %x) nounwind {
+ store i173 %x, i173* @i173_s
+ ret void
+}
+
+define void @i174_ls(i174 signext %x) nounwind {
+ store i174 %x, i174* @i174_s
+ ret void
+}
+
+define void @i175_ls(i175 signext %x) nounwind {
+ store i175 %x, i175* @i175_s
+ ret void
+}
+
+define void @i176_ls(i176 signext %x) nounwind {
+ store i176 %x, i176* @i176_s
+ ret void
+}
+
+define void @i177_ls(i177 signext %x) nounwind {
+ store i177 %x, i177* @i177_s
+ ret void
+}
+
+define void @i178_ls(i178 signext %x) nounwind {
+ store i178 %x, i178* @i178_s
+ ret void
+}
+
+define void @i179_ls(i179 signext %x) nounwind {
+ store i179 %x, i179* @i179_s
+ ret void
+}
+
+define void @i180_ls(i180 signext %x) nounwind {
+ store i180 %x, i180* @i180_s
+ ret void
+}
+
+define void @i181_ls(i181 signext %x) nounwind {
+ store i181 %x, i181* @i181_s
+ ret void
+}
+
+define void @i182_ls(i182 signext %x) nounwind {
+ store i182 %x, i182* @i182_s
+ ret void
+}
+
+define void @i183_ls(i183 signext %x) nounwind {
+ store i183 %x, i183* @i183_s
+ ret void
+}
+
+define void @i184_ls(i184 signext %x) nounwind {
+ store i184 %x, i184* @i184_s
+ ret void
+}
+
+define void @i185_ls(i185 signext %x) nounwind {
+ store i185 %x, i185* @i185_s
+ ret void
+}
+
+define void @i186_ls(i186 signext %x) nounwind {
+ store i186 %x, i186* @i186_s
+ ret void
+}
+
+define void @i187_ls(i187 signext %x) nounwind {
+ store i187 %x, i187* @i187_s
+ ret void
+}
+
+define void @i188_ls(i188 signext %x) nounwind {
+ store i188 %x, i188* @i188_s
+ ret void
+}
+
+define void @i189_ls(i189 signext %x) nounwind {
+ store i189 %x, i189* @i189_s
+ ret void
+}
+
+define void @i190_ls(i190 signext %x) nounwind {
+ store i190 %x, i190* @i190_s
+ ret void
+}
+
+define void @i191_ls(i191 signext %x) nounwind {
+ store i191 %x, i191* @i191_s
+ ret void
+}
+
+define void @i192_ls(i192 signext %x) nounwind {
+ store i192 %x, i192* @i192_s
+ ret void
+}
+
+define void @i193_ls(i193 signext %x) nounwind {
+ store i193 %x, i193* @i193_s
+ ret void
+}
+
+define void @i194_ls(i194 signext %x) nounwind {
+ store i194 %x, i194* @i194_s
+ ret void
+}
+
+define void @i195_ls(i195 signext %x) nounwind {
+ store i195 %x, i195* @i195_s
+ ret void
+}
+
+define void @i196_ls(i196 signext %x) nounwind {
+ store i196 %x, i196* @i196_s
+ ret void
+}
+
+define void @i197_ls(i197 signext %x) nounwind {
+ store i197 %x, i197* @i197_s
+ ret void
+}
+
+define void @i198_ls(i198 signext %x) nounwind {
+ store i198 %x, i198* @i198_s
+ ret void
+}
+
+define void @i199_ls(i199 signext %x) nounwind {
+ store i199 %x, i199* @i199_s
+ ret void
+}
+
+define void @i200_ls(i200 signext %x) nounwind {
+ store i200 %x, i200* @i200_s
+ ret void
+}
+
+define void @i201_ls(i201 signext %x) nounwind {
+ store i201 %x, i201* @i201_s
+ ret void
+}
+
+define void @i202_ls(i202 signext %x) nounwind {
+ store i202 %x, i202* @i202_s
+ ret void
+}
+
+define void @i203_ls(i203 signext %x) nounwind {
+ store i203 %x, i203* @i203_s
+ ret void
+}
+
+define void @i204_ls(i204 signext %x) nounwind {
+ store i204 %x, i204* @i204_s
+ ret void
+}
+
+define void @i205_ls(i205 signext %x) nounwind {
+ store i205 %x, i205* @i205_s
+ ret void
+}
+
+define void @i206_ls(i206 signext %x) nounwind {
+ store i206 %x, i206* @i206_s
+ ret void
+}
+
+define void @i207_ls(i207 signext %x) nounwind {
+ store i207 %x, i207* @i207_s
+ ret void
+}
+
+define void @i208_ls(i208 signext %x) nounwind {
+ store i208 %x, i208* @i208_s
+ ret void
+}
+
+define void @i209_ls(i209 signext %x) nounwind {
+ store i209 %x, i209* @i209_s
+ ret void
+}
+
+define void @i210_ls(i210 signext %x) nounwind {
+ store i210 %x, i210* @i210_s
+ ret void
+}
+
+define void @i211_ls(i211 signext %x) nounwind {
+ store i211 %x, i211* @i211_s
+ ret void
+}
+
+define void @i212_ls(i212 signext %x) nounwind {
+ store i212 %x, i212* @i212_s
+ ret void
+}
+
+define void @i213_ls(i213 signext %x) nounwind {
+ store i213 %x, i213* @i213_s
+ ret void
+}
+
+define void @i214_ls(i214 signext %x) nounwind {
+ store i214 %x, i214* @i214_s
+ ret void
+}
+
+define void @i215_ls(i215 signext %x) nounwind {
+ store i215 %x, i215* @i215_s
+ ret void
+}
+
+define void @i216_ls(i216 signext %x) nounwind {
+ store i216 %x, i216* @i216_s
+ ret void
+}
+
+define void @i217_ls(i217 signext %x) nounwind {
+ store i217 %x, i217* @i217_s
+ ret void
+}
+
+define void @i218_ls(i218 signext %x) nounwind {
+ store i218 %x, i218* @i218_s
+ ret void
+}
+
+define void @i219_ls(i219 signext %x) nounwind {
+ store i219 %x, i219* @i219_s
+ ret void
+}
+
+define void @i220_ls(i220 signext %x) nounwind {
+ store i220 %x, i220* @i220_s
+ ret void
+}
+
+define void @i221_ls(i221 signext %x) nounwind {
+ store i221 %x, i221* @i221_s
+ ret void
+}
+
+define void @i222_ls(i222 signext %x) nounwind {
+ store i222 %x, i222* @i222_s
+ ret void
+}
+
+define void @i223_ls(i223 signext %x) nounwind {
+ store i223 %x, i223* @i223_s
+ ret void
+}
+
+define void @i224_ls(i224 signext %x) nounwind {
+ store i224 %x, i224* @i224_s
+ ret void
+}
+
+define void @i225_ls(i225 signext %x) nounwind {
+ store i225 %x, i225* @i225_s
+ ret void
+}
+
+define void @i226_ls(i226 signext %x) nounwind {
+ store i226 %x, i226* @i226_s
+ ret void
+}
+
+define void @i227_ls(i227 signext %x) nounwind {
+ store i227 %x, i227* @i227_s
+ ret void
+}
+
+define void @i228_ls(i228 signext %x) nounwind {
+ store i228 %x, i228* @i228_s
+ ret void
+}
+
+define void @i229_ls(i229 signext %x) nounwind {
+ store i229 %x, i229* @i229_s
+ ret void
+}
+
+define void @i230_ls(i230 signext %x) nounwind {
+ store i230 %x, i230* @i230_s
+ ret void
+}
+
+define void @i231_ls(i231 signext %x) nounwind {
+ store i231 %x, i231* @i231_s
+ ret void
+}
+
+define void @i232_ls(i232 signext %x) nounwind {
+ store i232 %x, i232* @i232_s
+ ret void
+}
+
+define void @i233_ls(i233 signext %x) nounwind {
+ store i233 %x, i233* @i233_s
+ ret void
+}
+
+define void @i234_ls(i234 signext %x) nounwind {
+ store i234 %x, i234* @i234_s
+ ret void
+}
+
+define void @i235_ls(i235 signext %x) nounwind {
+ store i235 %x, i235* @i235_s
+ ret void
+}
+
+define void @i236_ls(i236 signext %x) nounwind {
+ store i236 %x, i236* @i236_s
+ ret void
+}
+
+define void @i237_ls(i237 signext %x) nounwind {
+ store i237 %x, i237* @i237_s
+ ret void
+}
+
+define void @i238_ls(i238 signext %x) nounwind {
+ store i238 %x, i238* @i238_s
+ ret void
+}
+
+define void @i239_ls(i239 signext %x) nounwind {
+ store i239 %x, i239* @i239_s
+ ret void
+}
+
+define void @i240_ls(i240 signext %x) nounwind {
+ store i240 %x, i240* @i240_s
+ ret void
+}
+
+define void @i241_ls(i241 signext %x) nounwind {
+ store i241 %x, i241* @i241_s
+ ret void
+}
+
+define void @i242_ls(i242 signext %x) nounwind {
+ store i242 %x, i242* @i242_s
+ ret void
+}
+
+define void @i243_ls(i243 signext %x) nounwind {
+ store i243 %x, i243* @i243_s
+ ret void
+}
+
+define void @i244_ls(i244 signext %x) nounwind {
+ store i244 %x, i244* @i244_s
+ ret void
+}
+
+define void @i245_ls(i245 signext %x) nounwind {
+ store i245 %x, i245* @i245_s
+ ret void
+}
+
+define void @i246_ls(i246 signext %x) nounwind {
+ store i246 %x, i246* @i246_s
+ ret void
+}
+
+define void @i247_ls(i247 signext %x) nounwind {
+ store i247 %x, i247* @i247_s
+ ret void
+}
+
+define void @i248_ls(i248 signext %x) nounwind {
+ store i248 %x, i248* @i248_s
+ ret void
+}
+
+define void @i249_ls(i249 signext %x) nounwind {
+ store i249 %x, i249* @i249_s
+ ret void
+}
+
+define void @i250_ls(i250 signext %x) nounwind {
+ store i250 %x, i250* @i250_s
+ ret void
+}
+
+define void @i251_ls(i251 signext %x) nounwind {
+ store i251 %x, i251* @i251_s
+ ret void
+}
+
+define void @i252_ls(i252 signext %x) nounwind {
+ store i252 %x, i252* @i252_s
+ ret void
+}
+
+define void @i253_ls(i253 signext %x) nounwind {
+ store i253 %x, i253* @i253_s
+ ret void
+}
+
+define void @i254_ls(i254 signext %x) nounwind {
+ store i254 %x, i254* @i254_s
+ ret void
+}
+
+define void @i255_ls(i255 signext %x) nounwind {
+ store i255 %x, i255* @i255_s
+ ret void
+}
+
+define void @i256_ls(i256 signext %x) nounwind {
+ store i256 %x, i256* @i256_s
+ ret void
+}
diff --git a/test/CodeGen/Generic/APIntZextParam.ll b/test/CodeGen/Generic/APIntZextParam.ll
new file mode 100644
index 0000000000000..ea7743ecd086c
--- /dev/null
+++ b/test/CodeGen/Generic/APIntZextParam.ll
@@ -0,0 +1,1537 @@
+; RUN: llvm-as < %s | llc > %t
+@i1_s = external global i1 ; <i1*> [#uses=1]
+@i2_s = external global i2 ; <i2*> [#uses=1]
+@i3_s = external global i3 ; <i3*> [#uses=1]
+@i4_s = external global i4 ; <i4*> [#uses=1]
+@i5_s = external global i5 ; <i5*> [#uses=1]
+@i6_s = external global i6 ; <i6*> [#uses=1]
+@i7_s = external global i7 ; <i7*> [#uses=1]
+@i8_s = external global i8 ; <i8*> [#uses=1]
+@i9_s = external global i9 ; <i9*> [#uses=1]
+@i10_s = external global i10 ; <i10*> [#uses=1]
+@i11_s = external global i11 ; <i11*> [#uses=1]
+@i12_s = external global i12 ; <i12*> [#uses=1]
+@i13_s = external global i13 ; <i13*> [#uses=1]
+@i14_s = external global i14 ; <i14*> [#uses=1]
+@i15_s = external global i15 ; <i15*> [#uses=1]
+@i16_s = external global i16 ; <i16*> [#uses=1]
+@i17_s = external global i17 ; <i17*> [#uses=1]
+@i18_s = external global i18 ; <i18*> [#uses=1]
+@i19_s = external global i19 ; <i19*> [#uses=1]
+@i20_s = external global i20 ; <i20*> [#uses=1]
+@i21_s = external global i21 ; <i21*> [#uses=1]
+@i22_s = external global i22 ; <i22*> [#uses=1]
+@i23_s = external global i23 ; <i23*> [#uses=1]
+@i24_s = external global i24 ; <i24*> [#uses=1]
+@i25_s = external global i25 ; <i25*> [#uses=1]
+@i26_s = external global i26 ; <i26*> [#uses=1]
+@i27_s = external global i27 ; <i27*> [#uses=1]
+@i28_s = external global i28 ; <i28*> [#uses=1]
+@i29_s = external global i29 ; <i29*> [#uses=1]
+@i30_s = external global i30 ; <i30*> [#uses=1]
+@i31_s = external global i31 ; <i31*> [#uses=1]
+@i32_s = external global i32 ; <i32*> [#uses=1]
+@i33_s = external global i33 ; <i33*> [#uses=1]
+@i34_s = external global i34 ; <i34*> [#uses=1]
+@i35_s = external global i35 ; <i35*> [#uses=1]
+@i36_s = external global i36 ; <i36*> [#uses=1]
+@i37_s = external global i37 ; <i37*> [#uses=1]
+@i38_s = external global i38 ; <i38*> [#uses=1]
+@i39_s = external global i39 ; <i39*> [#uses=1]
+@i40_s = external global i40 ; <i40*> [#uses=1]
+@i41_s = external global i41 ; <i41*> [#uses=1]
+@i42_s = external global i42 ; <i42*> [#uses=1]
+@i43_s = external global i43 ; <i43*> [#uses=1]
+@i44_s = external global i44 ; <i44*> [#uses=1]
+@i45_s = external global i45 ; <i45*> [#uses=1]
+@i46_s = external global i46 ; <i46*> [#uses=1]
+@i47_s = external global i47 ; <i47*> [#uses=1]
+@i48_s = external global i48 ; <i48*> [#uses=1]
+@i49_s = external global i49 ; <i49*> [#uses=1]
+@i50_s = external global i50 ; <i50*> [#uses=1]
+@i51_s = external global i51 ; <i51*> [#uses=1]
+@i52_s = external global i52 ; <i52*> [#uses=1]
+@i53_s = external global i53 ; <i53*> [#uses=1]
+@i54_s = external global i54 ; <i54*> [#uses=1]
+@i55_s = external global i55 ; <i55*> [#uses=1]
+@i56_s = external global i56 ; <i56*> [#uses=1]
+@i57_s = external global i57 ; <i57*> [#uses=1]
+@i58_s = external global i58 ; <i58*> [#uses=1]
+@i59_s = external global i59 ; <i59*> [#uses=1]
+@i60_s = external global i60 ; <i60*> [#uses=1]
+@i61_s = external global i61 ; <i61*> [#uses=1]
+@i62_s = external global i62 ; <i62*> [#uses=1]
+@i63_s = external global i63 ; <i63*> [#uses=1]
+@i64_s = external global i64 ; <i64*> [#uses=1]
+@i65_s = external global i65 ; <i65*> [#uses=1]
+@i66_s = external global i66 ; <i66*> [#uses=1]
+@i67_s = external global i67 ; <i67*> [#uses=1]
+@i68_s = external global i68 ; <i68*> [#uses=1]
+@i69_s = external global i69 ; <i69*> [#uses=1]
+@i70_s = external global i70 ; <i70*> [#uses=1]
+@i71_s = external global i71 ; <i71*> [#uses=1]
+@i72_s = external global i72 ; <i72*> [#uses=1]
+@i73_s = external global i73 ; <i73*> [#uses=1]
+@i74_s = external global i74 ; <i74*> [#uses=1]
+@i75_s = external global i75 ; <i75*> [#uses=1]
+@i76_s = external global i76 ; <i76*> [#uses=1]
+@i77_s = external global i77 ; <i77*> [#uses=1]
+@i78_s = external global i78 ; <i78*> [#uses=1]
+@i79_s = external global i79 ; <i79*> [#uses=1]
+@i80_s = external global i80 ; <i80*> [#uses=1]
+@i81_s = external global i81 ; <i81*> [#uses=1]
+@i82_s = external global i82 ; <i82*> [#uses=1]
+@i83_s = external global i83 ; <i83*> [#uses=1]
+@i84_s = external global i84 ; <i84*> [#uses=1]
+@i85_s = external global i85 ; <i85*> [#uses=1]
+@i86_s = external global i86 ; <i86*> [#uses=1]
+@i87_s = external global i87 ; <i87*> [#uses=1]
+@i88_s = external global i88 ; <i88*> [#uses=1]
+@i89_s = external global i89 ; <i89*> [#uses=1]
+@i90_s = external global i90 ; <i90*> [#uses=1]
+@i91_s = external global i91 ; <i91*> [#uses=1]
+@i92_s = external global i92 ; <i92*> [#uses=1]
+@i93_s = external global i93 ; <i93*> [#uses=1]
+@i94_s = external global i94 ; <i94*> [#uses=1]
+@i95_s = external global i95 ; <i95*> [#uses=1]
+@i96_s = external global i96 ; <i96*> [#uses=1]
+@i97_s = external global i97 ; <i97*> [#uses=1]
+@i98_s = external global i98 ; <i98*> [#uses=1]
+@i99_s = external global i99 ; <i99*> [#uses=1]
+@i100_s = external global i100 ; <i100*> [#uses=1]
+@i101_s = external global i101 ; <i101*> [#uses=1]
+@i102_s = external global i102 ; <i102*> [#uses=1]
+@i103_s = external global i103 ; <i103*> [#uses=1]
+@i104_s = external global i104 ; <i104*> [#uses=1]
+@i105_s = external global i105 ; <i105*> [#uses=1]
+@i106_s = external global i106 ; <i106*> [#uses=1]
+@i107_s = external global i107 ; <i107*> [#uses=1]
+@i108_s = external global i108 ; <i108*> [#uses=1]
+@i109_s = external global i109 ; <i109*> [#uses=1]
+@i110_s = external global i110 ; <i110*> [#uses=1]
+@i111_s = external global i111 ; <i111*> [#uses=1]
+@i112_s = external global i112 ; <i112*> [#uses=1]
+@i113_s = external global i113 ; <i113*> [#uses=1]
+@i114_s = external global i114 ; <i114*> [#uses=1]
+@i115_s = external global i115 ; <i115*> [#uses=1]
+@i116_s = external global i116 ; <i116*> [#uses=1]
+@i117_s = external global i117 ; <i117*> [#uses=1]
+@i118_s = external global i118 ; <i118*> [#uses=1]
+@i119_s = external global i119 ; <i119*> [#uses=1]
+@i120_s = external global i120 ; <i120*> [#uses=1]
+@i121_s = external global i121 ; <i121*> [#uses=1]
+@i122_s = external global i122 ; <i122*> [#uses=1]
+@i123_s = external global i123 ; <i123*> [#uses=1]
+@i124_s = external global i124 ; <i124*> [#uses=1]
+@i125_s = external global i125 ; <i125*> [#uses=1]
+@i126_s = external global i126 ; <i126*> [#uses=1]
+@i127_s = external global i127 ; <i127*> [#uses=1]
+@i128_s = external global i128 ; <i128*> [#uses=1]
+@i129_s = external global i129 ; <i129*> [#uses=1]
+@i130_s = external global i130 ; <i130*> [#uses=1]
+@i131_s = external global i131 ; <i131*> [#uses=1]
+@i132_s = external global i132 ; <i132*> [#uses=1]
+@i133_s = external global i133 ; <i133*> [#uses=1]
+@i134_s = external global i134 ; <i134*> [#uses=1]
+@i135_s = external global i135 ; <i135*> [#uses=1]
+@i136_s = external global i136 ; <i136*> [#uses=1]
+@i137_s = external global i137 ; <i137*> [#uses=1]
+@i138_s = external global i138 ; <i138*> [#uses=1]
+@i139_s = external global i139 ; <i139*> [#uses=1]
+@i140_s = external global i140 ; <i140*> [#uses=1]
+@i141_s = external global i141 ; <i141*> [#uses=1]
+@i142_s = external global i142 ; <i142*> [#uses=1]
+@i143_s = external global i143 ; <i143*> [#uses=1]
+@i144_s = external global i144 ; <i144*> [#uses=1]
+@i145_s = external global i145 ; <i145*> [#uses=1]
+@i146_s = external global i146 ; <i146*> [#uses=1]
+@i147_s = external global i147 ; <i147*> [#uses=1]
+@i148_s = external global i148 ; <i148*> [#uses=1]
+@i149_s = external global i149 ; <i149*> [#uses=1]
+@i150_s = external global i150 ; <i150*> [#uses=1]
+@i151_s = external global i151 ; <i151*> [#uses=1]
+@i152_s = external global i152 ; <i152*> [#uses=1]
+@i153_s = external global i153 ; <i153*> [#uses=1]
+@i154_s = external global i154 ; <i154*> [#uses=1]
+@i155_s = external global i155 ; <i155*> [#uses=1]
+@i156_s = external global i156 ; <i156*> [#uses=1]
+@i157_s = external global i157 ; <i157*> [#uses=1]
+@i158_s = external global i158 ; <i158*> [#uses=1]
+@i159_s = external global i159 ; <i159*> [#uses=1]
+@i160_s = external global i160 ; <i160*> [#uses=1]
+@i161_s = external global i161 ; <i161*> [#uses=1]
+@i162_s = external global i162 ; <i162*> [#uses=1]
+@i163_s = external global i163 ; <i163*> [#uses=1]
+@i164_s = external global i164 ; <i164*> [#uses=1]
+@i165_s = external global i165 ; <i165*> [#uses=1]
+@i166_s = external global i166 ; <i166*> [#uses=1]
+@i167_s = external global i167 ; <i167*> [#uses=1]
+@i168_s = external global i168 ; <i168*> [#uses=1]
+@i169_s = external global i169 ; <i169*> [#uses=1]
+@i170_s = external global i170 ; <i170*> [#uses=1]
+@i171_s = external global i171 ; <i171*> [#uses=1]
+@i172_s = external global i172 ; <i172*> [#uses=1]
+@i173_s = external global i173 ; <i173*> [#uses=1]
+@i174_s = external global i174 ; <i174*> [#uses=1]
+@i175_s = external global i175 ; <i175*> [#uses=1]
+@i176_s = external global i176 ; <i176*> [#uses=1]
+@i177_s = external global i177 ; <i177*> [#uses=1]
+@i178_s = external global i178 ; <i178*> [#uses=1]
+@i179_s = external global i179 ; <i179*> [#uses=1]
+@i180_s = external global i180 ; <i180*> [#uses=1]
+@i181_s = external global i181 ; <i181*> [#uses=1]
+@i182_s = external global i182 ; <i182*> [#uses=1]
+@i183_s = external global i183 ; <i183*> [#uses=1]
+@i184_s = external global i184 ; <i184*> [#uses=1]
+@i185_s = external global i185 ; <i185*> [#uses=1]
+@i186_s = external global i186 ; <i186*> [#uses=1]
+@i187_s = external global i187 ; <i187*> [#uses=1]
+@i188_s = external global i188 ; <i188*> [#uses=1]
+@i189_s = external global i189 ; <i189*> [#uses=1]
+@i190_s = external global i190 ; <i190*> [#uses=1]
+@i191_s = external global i191 ; <i191*> [#uses=1]
+@i192_s = external global i192 ; <i192*> [#uses=1]
+@i193_s = external global i193 ; <i193*> [#uses=1]
+@i194_s = external global i194 ; <i194*> [#uses=1]
+@i195_s = external global i195 ; <i195*> [#uses=1]
+@i196_s = external global i196 ; <i196*> [#uses=1]
+@i197_s = external global i197 ; <i197*> [#uses=1]
+@i198_s = external global i198 ; <i198*> [#uses=1]
+@i199_s = external global i199 ; <i199*> [#uses=1]
+@i200_s = external global i200 ; <i200*> [#uses=1]
+@i201_s = external global i201 ; <i201*> [#uses=1]
+@i202_s = external global i202 ; <i202*> [#uses=1]
+@i203_s = external global i203 ; <i203*> [#uses=1]
+@i204_s = external global i204 ; <i204*> [#uses=1]
+@i205_s = external global i205 ; <i205*> [#uses=1]
+@i206_s = external global i206 ; <i206*> [#uses=1]
+@i207_s = external global i207 ; <i207*> [#uses=1]
+@i208_s = external global i208 ; <i208*> [#uses=1]
+@i209_s = external global i209 ; <i209*> [#uses=1]
+@i210_s = external global i210 ; <i210*> [#uses=1]
+@i211_s = external global i211 ; <i211*> [#uses=1]
+@i212_s = external global i212 ; <i212*> [#uses=1]
+@i213_s = external global i213 ; <i213*> [#uses=1]
+@i214_s = external global i214 ; <i214*> [#uses=1]
+@i215_s = external global i215 ; <i215*> [#uses=1]
+@i216_s = external global i216 ; <i216*> [#uses=1]
+@i217_s = external global i217 ; <i217*> [#uses=1]
+@i218_s = external global i218 ; <i218*> [#uses=1]
+@i219_s = external global i219 ; <i219*> [#uses=1]
+@i220_s = external global i220 ; <i220*> [#uses=1]
+@i221_s = external global i221 ; <i221*> [#uses=1]
+@i222_s = external global i222 ; <i222*> [#uses=1]
+@i223_s = external global i223 ; <i223*> [#uses=1]
+@i224_s = external global i224 ; <i224*> [#uses=1]
+@i225_s = external global i225 ; <i225*> [#uses=1]
+@i226_s = external global i226 ; <i226*> [#uses=1]
+@i227_s = external global i227 ; <i227*> [#uses=1]
+@i228_s = external global i228 ; <i228*> [#uses=1]
+@i229_s = external global i229 ; <i229*> [#uses=1]
+@i230_s = external global i230 ; <i230*> [#uses=1]
+@i231_s = external global i231 ; <i231*> [#uses=1]
+@i232_s = external global i232 ; <i232*> [#uses=1]
+@i233_s = external global i233 ; <i233*> [#uses=1]
+@i234_s = external global i234 ; <i234*> [#uses=1]
+@i235_s = external global i235 ; <i235*> [#uses=1]
+@i236_s = external global i236 ; <i236*> [#uses=1]
+@i237_s = external global i237 ; <i237*> [#uses=1]
+@i238_s = external global i238 ; <i238*> [#uses=1]
+@i239_s = external global i239 ; <i239*> [#uses=1]
+@i240_s = external global i240 ; <i240*> [#uses=1]
+@i241_s = external global i241 ; <i241*> [#uses=1]
+@i242_s = external global i242 ; <i242*> [#uses=1]
+@i243_s = external global i243 ; <i243*> [#uses=1]
+@i244_s = external global i244 ; <i244*> [#uses=1]
+@i245_s = external global i245 ; <i245*> [#uses=1]
+@i246_s = external global i246 ; <i246*> [#uses=1]
+@i247_s = external global i247 ; <i247*> [#uses=1]
+@i248_s = external global i248 ; <i248*> [#uses=1]
+@i249_s = external global i249 ; <i249*> [#uses=1]
+@i250_s = external global i250 ; <i250*> [#uses=1]
+@i251_s = external global i251 ; <i251*> [#uses=1]
+@i252_s = external global i252 ; <i252*> [#uses=1]
+@i253_s = external global i253 ; <i253*> [#uses=1]
+@i254_s = external global i254 ; <i254*> [#uses=1]
+@i255_s = external global i255 ; <i255*> [#uses=1]
+@i256_s = external global i256 ; <i256*> [#uses=1]
+
+define void @i1_ls(i1 zeroext %x) nounwind {
+ store i1 %x, i1* @i1_s
+ ret void
+}
+
+define void @i2_ls(i2 zeroext %x) nounwind {
+ store i2 %x, i2* @i2_s
+ ret void
+}
+
+define void @i3_ls(i3 zeroext %x) nounwind {
+ store i3 %x, i3* @i3_s
+ ret void
+}
+
+define void @i4_ls(i4 zeroext %x) nounwind {
+ store i4 %x, i4* @i4_s
+ ret void
+}
+
+define void @i5_ls(i5 zeroext %x) nounwind {
+ store i5 %x, i5* @i5_s
+ ret void
+}
+
+define void @i6_ls(i6 zeroext %x) nounwind {
+ store i6 %x, i6* @i6_s
+ ret void
+}
+
+define void @i7_ls(i7 zeroext %x) nounwind {
+ store i7 %x, i7* @i7_s
+ ret void
+}
+
+define void @i8_ls(i8 zeroext %x) nounwind {
+ store i8 %x, i8* @i8_s
+ ret void
+}
+
+define void @i9_ls(i9 zeroext %x) nounwind {
+ store i9 %x, i9* @i9_s
+ ret void
+}
+
+define void @i10_ls(i10 zeroext %x) nounwind {
+ store i10 %x, i10* @i10_s
+ ret void
+}
+
+define void @i11_ls(i11 zeroext %x) nounwind {
+ store i11 %x, i11* @i11_s
+ ret void
+}
+
+define void @i12_ls(i12 zeroext %x) nounwind {
+ store i12 %x, i12* @i12_s
+ ret void
+}
+
+define void @i13_ls(i13 zeroext %x) nounwind {
+ store i13 %x, i13* @i13_s
+ ret void
+}
+
+define void @i14_ls(i14 zeroext %x) nounwind {
+ store i14 %x, i14* @i14_s
+ ret void
+}
+
+define void @i15_ls(i15 zeroext %x) nounwind {
+ store i15 %x, i15* @i15_s
+ ret void
+}
+
+define void @i16_ls(i16 zeroext %x) nounwind {
+ store i16 %x, i16* @i16_s
+ ret void
+}
+
+define void @i17_ls(i17 zeroext %x) nounwind {
+ store i17 %x, i17* @i17_s
+ ret void
+}
+
+define void @i18_ls(i18 zeroext %x) nounwind {
+ store i18 %x, i18* @i18_s
+ ret void
+}
+
+define void @i19_ls(i19 zeroext %x) nounwind {
+ store i19 %x, i19* @i19_s
+ ret void
+}
+
+define void @i20_ls(i20 zeroext %x) nounwind {
+ store i20 %x, i20* @i20_s
+ ret void
+}
+
+define void @i21_ls(i21 zeroext %x) nounwind {
+ store i21 %x, i21* @i21_s
+ ret void
+}
+
+define void @i22_ls(i22 zeroext %x) nounwind {
+ store i22 %x, i22* @i22_s
+ ret void
+}
+
+define void @i23_ls(i23 zeroext %x) nounwind {
+ store i23 %x, i23* @i23_s
+ ret void
+}
+
+define void @i24_ls(i24 zeroext %x) nounwind {
+ store i24 %x, i24* @i24_s
+ ret void
+}
+
+define void @i25_ls(i25 zeroext %x) nounwind {
+ store i25 %x, i25* @i25_s
+ ret void
+}
+
+define void @i26_ls(i26 zeroext %x) nounwind {
+ store i26 %x, i26* @i26_s
+ ret void
+}
+
+define void @i27_ls(i27 zeroext %x) nounwind {
+ store i27 %x, i27* @i27_s
+ ret void
+}
+
+define void @i28_ls(i28 zeroext %x) nounwind {
+ store i28 %x, i28* @i28_s
+ ret void
+}
+
+define void @i29_ls(i29 zeroext %x) nounwind {
+ store i29 %x, i29* @i29_s
+ ret void
+}
+
+define void @i30_ls(i30 zeroext %x) nounwind {
+ store i30 %x, i30* @i30_s
+ ret void
+}
+
+define void @i31_ls(i31 zeroext %x) nounwind {
+ store i31 %x, i31* @i31_s
+ ret void
+}
+
+define void @i32_ls(i32 zeroext %x) nounwind {
+ store i32 %x, i32* @i32_s
+ ret void
+}
+
+define void @i33_ls(i33 zeroext %x) nounwind {
+ store i33 %x, i33* @i33_s
+ ret void
+}
+
+define void @i34_ls(i34 zeroext %x) nounwind {
+ store i34 %x, i34* @i34_s
+ ret void
+}
+
+define void @i35_ls(i35 zeroext %x) nounwind {
+ store i35 %x, i35* @i35_s
+ ret void
+}
+
+define void @i36_ls(i36 zeroext %x) nounwind {
+ store i36 %x, i36* @i36_s
+ ret void
+}
+
+define void @i37_ls(i37 zeroext %x) nounwind {
+ store i37 %x, i37* @i37_s
+ ret void
+}
+
+define void @i38_ls(i38 zeroext %x) nounwind {
+ store i38 %x, i38* @i38_s
+ ret void
+}
+
+define void @i39_ls(i39 zeroext %x) nounwind {
+ store i39 %x, i39* @i39_s
+ ret void
+}
+
+define void @i40_ls(i40 zeroext %x) nounwind {
+ store i40 %x, i40* @i40_s
+ ret void
+}
+
+define void @i41_ls(i41 zeroext %x) nounwind {
+ store i41 %x, i41* @i41_s
+ ret void
+}
+
+define void @i42_ls(i42 zeroext %x) nounwind {
+ store i42 %x, i42* @i42_s
+ ret void
+}
+
+define void @i43_ls(i43 zeroext %x) nounwind {
+ store i43 %x, i43* @i43_s
+ ret void
+}
+
+define void @i44_ls(i44 zeroext %x) nounwind {
+ store i44 %x, i44* @i44_s
+ ret void
+}
+
+define void @i45_ls(i45 zeroext %x) nounwind {
+ store i45 %x, i45* @i45_s
+ ret void
+}
+
+define void @i46_ls(i46 zeroext %x) nounwind {
+ store i46 %x, i46* @i46_s
+ ret void
+}
+
+define void @i47_ls(i47 zeroext %x) nounwind {
+ store i47 %x, i47* @i47_s
+ ret void
+}
+
+define void @i48_ls(i48 zeroext %x) nounwind {
+ store i48 %x, i48* @i48_s
+ ret void
+}
+
+define void @i49_ls(i49 zeroext %x) nounwind {
+ store i49 %x, i49* @i49_s
+ ret void
+}
+
+define void @i50_ls(i50 zeroext %x) nounwind {
+ store i50 %x, i50* @i50_s
+ ret void
+}
+
+define void @i51_ls(i51 zeroext %x) nounwind {
+ store i51 %x, i51* @i51_s
+ ret void
+}
+
+define void @i52_ls(i52 zeroext %x) nounwind {
+ store i52 %x, i52* @i52_s
+ ret void
+}
+
+define void @i53_ls(i53 zeroext %x) nounwind {
+ store i53 %x, i53* @i53_s
+ ret void
+}
+
+define void @i54_ls(i54 zeroext %x) nounwind {
+ store i54 %x, i54* @i54_s
+ ret void
+}
+
+define void @i55_ls(i55 zeroext %x) nounwind {
+ store i55 %x, i55* @i55_s
+ ret void
+}
+
+define void @i56_ls(i56 zeroext %x) nounwind {
+ store i56 %x, i56* @i56_s
+ ret void
+}
+
+define void @i57_ls(i57 zeroext %x) nounwind {
+ store i57 %x, i57* @i57_s
+ ret void
+}
+
+define void @i58_ls(i58 zeroext %x) nounwind {
+ store i58 %x, i58* @i58_s
+ ret void
+}
+
+define void @i59_ls(i59 zeroext %x) nounwind {
+ store i59 %x, i59* @i59_s
+ ret void
+}
+
+define void @i60_ls(i60 zeroext %x) nounwind {
+ store i60 %x, i60* @i60_s
+ ret void
+}
+
+define void @i61_ls(i61 zeroext %x) nounwind {
+ store i61 %x, i61* @i61_s
+ ret void
+}
+
+define void @i62_ls(i62 zeroext %x) nounwind {
+ store i62 %x, i62* @i62_s
+ ret void
+}
+
+define void @i63_ls(i63 zeroext %x) nounwind {
+ store i63 %x, i63* @i63_s
+ ret void
+}
+
+define void @i64_ls(i64 zeroext %x) nounwind {
+ store i64 %x, i64* @i64_s
+ ret void
+}
+
+define void @i65_ls(i65 zeroext %x) nounwind {
+ store i65 %x, i65* @i65_s
+ ret void
+}
+
+define void @i66_ls(i66 zeroext %x) nounwind {
+ store i66 %x, i66* @i66_s
+ ret void
+}
+
+define void @i67_ls(i67 zeroext %x) nounwind {
+ store i67 %x, i67* @i67_s
+ ret void
+}
+
+define void @i68_ls(i68 zeroext %x) nounwind {
+ store i68 %x, i68* @i68_s
+ ret void
+}
+
+define void @i69_ls(i69 zeroext %x) nounwind {
+ store i69 %x, i69* @i69_s
+ ret void
+}
+
+define void @i70_ls(i70 zeroext %x) nounwind {
+ store i70 %x, i70* @i70_s
+ ret void
+}
+
+define void @i71_ls(i71 zeroext %x) nounwind {
+ store i71 %x, i71* @i71_s
+ ret void
+}
+
+define void @i72_ls(i72 zeroext %x) nounwind {
+ store i72 %x, i72* @i72_s
+ ret void
+}
+
+define void @i73_ls(i73 zeroext %x) nounwind {
+ store i73 %x, i73* @i73_s
+ ret void
+}
+
+define void @i74_ls(i74 zeroext %x) nounwind {
+ store i74 %x, i74* @i74_s
+ ret void
+}
+
+define void @i75_ls(i75 zeroext %x) nounwind {
+ store i75 %x, i75* @i75_s
+ ret void
+}
+
+define void @i76_ls(i76 zeroext %x) nounwind {
+ store i76 %x, i76* @i76_s
+ ret void
+}
+
+define void @i77_ls(i77 zeroext %x) nounwind {
+ store i77 %x, i77* @i77_s
+ ret void
+}
+
+define void @i78_ls(i78 zeroext %x) nounwind {
+ store i78 %x, i78* @i78_s
+ ret void
+}
+
+define void @i79_ls(i79 zeroext %x) nounwind {
+ store i79 %x, i79* @i79_s
+ ret void
+}
+
+define void @i80_ls(i80 zeroext %x) nounwind {
+ store i80 %x, i80* @i80_s
+ ret void
+}
+
+define void @i81_ls(i81 zeroext %x) nounwind {
+ store i81 %x, i81* @i81_s
+ ret void
+}
+
+define void @i82_ls(i82 zeroext %x) nounwind {
+ store i82 %x, i82* @i82_s
+ ret void
+}
+
+define void @i83_ls(i83 zeroext %x) nounwind {
+ store i83 %x, i83* @i83_s
+ ret void
+}
+
+define void @i84_ls(i84 zeroext %x) nounwind {
+ store i84 %x, i84* @i84_s
+ ret void
+}
+
+define void @i85_ls(i85 zeroext %x) nounwind {
+ store i85 %x, i85* @i85_s
+ ret void
+}
+
+define void @i86_ls(i86 zeroext %x) nounwind {
+ store i86 %x, i86* @i86_s
+ ret void
+}
+
+define void @i87_ls(i87 zeroext %x) nounwind {
+ store i87 %x, i87* @i87_s
+ ret void
+}
+
+define void @i88_ls(i88 zeroext %x) nounwind {
+ store i88 %x, i88* @i88_s
+ ret void
+}
+
+define void @i89_ls(i89 zeroext %x) nounwind {
+ store i89 %x, i89* @i89_s
+ ret void
+}
+
+define void @i90_ls(i90 zeroext %x) nounwind {
+ store i90 %x, i90* @i90_s
+ ret void
+}
+
+define void @i91_ls(i91 zeroext %x) nounwind {
+ store i91 %x, i91* @i91_s
+ ret void
+}
+
+define void @i92_ls(i92 zeroext %x) nounwind {
+ store i92 %x, i92* @i92_s
+ ret void
+}
+
+define void @i93_ls(i93 zeroext %x) nounwind {
+ store i93 %x, i93* @i93_s
+ ret void
+}
+
+define void @i94_ls(i94 zeroext %x) nounwind {
+ store i94 %x, i94* @i94_s
+ ret void
+}
+
+define void @i95_ls(i95 zeroext %x) nounwind {
+ store i95 %x, i95* @i95_s
+ ret void
+}
+
+define void @i96_ls(i96 zeroext %x) nounwind {
+ store i96 %x, i96* @i96_s
+ ret void
+}
+
+define void @i97_ls(i97 zeroext %x) nounwind {
+ store i97 %x, i97* @i97_s
+ ret void
+}
+
+define void @i98_ls(i98 zeroext %x) nounwind {
+ store i98 %x, i98* @i98_s
+ ret void
+}
+
+define void @i99_ls(i99 zeroext %x) nounwind {
+ store i99 %x, i99* @i99_s
+ ret void
+}
+
+define void @i100_ls(i100 zeroext %x) nounwind {
+ store i100 %x, i100* @i100_s
+ ret void
+}
+
+define void @i101_ls(i101 zeroext %x) nounwind {
+ store i101 %x, i101* @i101_s
+ ret void
+}
+
+define void @i102_ls(i102 zeroext %x) nounwind {
+ store i102 %x, i102* @i102_s
+ ret void
+}
+
+define void @i103_ls(i103 zeroext %x) nounwind {
+ store i103 %x, i103* @i103_s
+ ret void
+}
+
+define void @i104_ls(i104 zeroext %x) nounwind {
+ store i104 %x, i104* @i104_s
+ ret void
+}
+
+define void @i105_ls(i105 zeroext %x) nounwind {
+ store i105 %x, i105* @i105_s
+ ret void
+}
+
+define void @i106_ls(i106 zeroext %x) nounwind {
+ store i106 %x, i106* @i106_s
+ ret void
+}
+
+define void @i107_ls(i107 zeroext %x) nounwind {
+ store i107 %x, i107* @i107_s
+ ret void
+}
+
+define void @i108_ls(i108 zeroext %x) nounwind {
+ store i108 %x, i108* @i108_s
+ ret void
+}
+
+define void @i109_ls(i109 zeroext %x) nounwind {
+ store i109 %x, i109* @i109_s
+ ret void
+}
+
+define void @i110_ls(i110 zeroext %x) nounwind {
+ store i110 %x, i110* @i110_s
+ ret void
+}
+
+define void @i111_ls(i111 zeroext %x) nounwind {
+ store i111 %x, i111* @i111_s
+ ret void
+}
+
+define void @i112_ls(i112 zeroext %x) nounwind {
+ store i112 %x, i112* @i112_s
+ ret void
+}
+
+define void @i113_ls(i113 zeroext %x) nounwind {
+ store i113 %x, i113* @i113_s
+ ret void
+}
+
+define void @i114_ls(i114 zeroext %x) nounwind {
+ store i114 %x, i114* @i114_s
+ ret void
+}
+
+define void @i115_ls(i115 zeroext %x) nounwind {
+ store i115 %x, i115* @i115_s
+ ret void
+}
+
+define void @i116_ls(i116 zeroext %x) nounwind {
+ store i116 %x, i116* @i116_s
+ ret void
+}
+
+define void @i117_ls(i117 zeroext %x) nounwind {
+ store i117 %x, i117* @i117_s
+ ret void
+}
+
+define void @i118_ls(i118 zeroext %x) nounwind {
+ store i118 %x, i118* @i118_s
+ ret void
+}
+
+define void @i119_ls(i119 zeroext %x) nounwind {
+ store i119 %x, i119* @i119_s
+ ret void
+}
+
+define void @i120_ls(i120 zeroext %x) nounwind {
+ store i120 %x, i120* @i120_s
+ ret void
+}
+
+define void @i121_ls(i121 zeroext %x) nounwind {
+ store i121 %x, i121* @i121_s
+ ret void
+}
+
+define void @i122_ls(i122 zeroext %x) nounwind {
+ store i122 %x, i122* @i122_s
+ ret void
+}
+
+define void @i123_ls(i123 zeroext %x) nounwind {
+ store i123 %x, i123* @i123_s
+ ret void
+}
+
+define void @i124_ls(i124 zeroext %x) nounwind {
+ store i124 %x, i124* @i124_s
+ ret void
+}
+
+define void @i125_ls(i125 zeroext %x) nounwind {
+ store i125 %x, i125* @i125_s
+ ret void
+}
+
+define void @i126_ls(i126 zeroext %x) nounwind {
+ store i126 %x, i126* @i126_s
+ ret void
+}
+
+define void @i127_ls(i127 zeroext %x) nounwind {
+ store i127 %x, i127* @i127_s
+ ret void
+}
+
+define void @i128_ls(i128 zeroext %x) nounwind {
+ store i128 %x, i128* @i128_s
+ ret void
+}
+
+define void @i129_ls(i129 zeroext %x) nounwind {
+ store i129 %x, i129* @i129_s
+ ret void
+}
+
+define void @i130_ls(i130 zeroext %x) nounwind {
+ store i130 %x, i130* @i130_s
+ ret void
+}
+
+define void @i131_ls(i131 zeroext %x) nounwind {
+ store i131 %x, i131* @i131_s
+ ret void
+}
+
+define void @i132_ls(i132 zeroext %x) nounwind {
+ store i132 %x, i132* @i132_s
+ ret void
+}
+
+define void @i133_ls(i133 zeroext %x) nounwind {
+ store i133 %x, i133* @i133_s
+ ret void
+}
+
+define void @i134_ls(i134 zeroext %x) nounwind {
+ store i134 %x, i134* @i134_s
+ ret void
+}
+
+define void @i135_ls(i135 zeroext %x) nounwind {
+ store i135 %x, i135* @i135_s
+ ret void
+}
+
+define void @i136_ls(i136 zeroext %x) nounwind {
+ store i136 %x, i136* @i136_s
+ ret void
+}
+
+define void @i137_ls(i137 zeroext %x) nounwind {
+ store i137 %x, i137* @i137_s
+ ret void
+}
+
+define void @i138_ls(i138 zeroext %x) nounwind {
+ store i138 %x, i138* @i138_s
+ ret void
+}
+
+define void @i139_ls(i139 zeroext %x) nounwind {
+ store i139 %x, i139* @i139_s
+ ret void
+}
+
+define void @i140_ls(i140 zeroext %x) nounwind {
+ store i140 %x, i140* @i140_s
+ ret void
+}
+
+define void @i141_ls(i141 zeroext %x) nounwind {
+ store i141 %x, i141* @i141_s
+ ret void
+}
+
+define void @i142_ls(i142 zeroext %x) nounwind {
+ store i142 %x, i142* @i142_s
+ ret void
+}
+
+define void @i143_ls(i143 zeroext %x) nounwind {
+ store i143 %x, i143* @i143_s
+ ret void
+}
+
+define void @i144_ls(i144 zeroext %x) nounwind {
+ store i144 %x, i144* @i144_s
+ ret void
+}
+
+define void @i145_ls(i145 zeroext %x) nounwind {
+ store i145 %x, i145* @i145_s
+ ret void
+}
+
+define void @i146_ls(i146 zeroext %x) nounwind {
+ store i146 %x, i146* @i146_s
+ ret void
+}
+
+define void @i147_ls(i147 zeroext %x) nounwind {
+ store i147 %x, i147* @i147_s
+ ret void
+}
+
+define void @i148_ls(i148 zeroext %x) nounwind {
+ store i148 %x, i148* @i148_s
+ ret void
+}
+
+define void @i149_ls(i149 zeroext %x) nounwind {
+ store i149 %x, i149* @i149_s
+ ret void
+}
+
+define void @i150_ls(i150 zeroext %x) nounwind {
+ store i150 %x, i150* @i150_s
+ ret void
+}
+
+define void @i151_ls(i151 zeroext %x) nounwind {
+ store i151 %x, i151* @i151_s
+ ret void
+}
+
+define void @i152_ls(i152 zeroext %x) nounwind {
+ store i152 %x, i152* @i152_s
+ ret void
+}
+
+define void @i153_ls(i153 zeroext %x) nounwind {
+ store i153 %x, i153* @i153_s
+ ret void
+}
+
+define void @i154_ls(i154 zeroext %x) nounwind {
+ store i154 %x, i154* @i154_s
+ ret void
+}
+
+define void @i155_ls(i155 zeroext %x) nounwind {
+ store i155 %x, i155* @i155_s
+ ret void
+}
+
+define void @i156_ls(i156 zeroext %x) nounwind {
+ store i156 %x, i156* @i156_s
+ ret void
+}
+
+define void @i157_ls(i157 zeroext %x) nounwind {
+ store i157 %x, i157* @i157_s
+ ret void
+}
+
+define void @i158_ls(i158 zeroext %x) nounwind {
+ store i158 %x, i158* @i158_s
+ ret void
+}
+
+define void @i159_ls(i159 zeroext %x) nounwind {
+ store i159 %x, i159* @i159_s
+ ret void
+}
+
+define void @i160_ls(i160 zeroext %x) nounwind {
+ store i160 %x, i160* @i160_s
+ ret void
+}
+
+define void @i161_ls(i161 zeroext %x) nounwind {
+ store i161 %x, i161* @i161_s
+ ret void
+}
+
+define void @i162_ls(i162 zeroext %x) nounwind {
+ store i162 %x, i162* @i162_s
+ ret void
+}
+
+define void @i163_ls(i163 zeroext %x) nounwind {
+ store i163 %x, i163* @i163_s
+ ret void
+}
+
+define void @i164_ls(i164 zeroext %x) nounwind {
+ store i164 %x, i164* @i164_s
+ ret void
+}
+
+define void @i165_ls(i165 zeroext %x) nounwind {
+ store i165 %x, i165* @i165_s
+ ret void
+}
+
+define void @i166_ls(i166 zeroext %x) nounwind {
+ store i166 %x, i166* @i166_s
+ ret void
+}
+
+define void @i167_ls(i167 zeroext %x) nounwind {
+ store i167 %x, i167* @i167_s
+ ret void
+}
+
+define void @i168_ls(i168 zeroext %x) nounwind {
+ store i168 %x, i168* @i168_s
+ ret void
+}
+
+define void @i169_ls(i169 zeroext %x) nounwind {
+ store i169 %x, i169* @i169_s
+ ret void
+}
+
+define void @i170_ls(i170 zeroext %x) nounwind {
+ store i170 %x, i170* @i170_s
+ ret void
+}
+
+define void @i171_ls(i171 zeroext %x) nounwind {
+ store i171 %x, i171* @i171_s
+ ret void
+}
+
+define void @i172_ls(i172 zeroext %x) nounwind {
+ store i172 %x, i172* @i172_s
+ ret void
+}
+
+define void @i173_ls(i173 zeroext %x) nounwind {
+ store i173 %x, i173* @i173_s
+ ret void
+}
+
+define void @i174_ls(i174 zeroext %x) nounwind {
+ store i174 %x, i174* @i174_s
+ ret void
+}
+
+define void @i175_ls(i175 zeroext %x) nounwind {
+ store i175 %x, i175* @i175_s
+ ret void
+}
+
+define void @i176_ls(i176 zeroext %x) nounwind {
+ store i176 %x, i176* @i176_s
+ ret void
+}
+
+define void @i177_ls(i177 zeroext %x) nounwind {
+ store i177 %x, i177* @i177_s
+ ret void
+}
+
+define void @i178_ls(i178 zeroext %x) nounwind {
+ store i178 %x, i178* @i178_s
+ ret void
+}
+
+define void @i179_ls(i179 zeroext %x) nounwind {
+ store i179 %x, i179* @i179_s
+ ret void
+}
+
+define void @i180_ls(i180 zeroext %x) nounwind {
+ store i180 %x, i180* @i180_s
+ ret void
+}
+
+define void @i181_ls(i181 zeroext %x) nounwind {
+ store i181 %x, i181* @i181_s
+ ret void
+}
+
+define void @i182_ls(i182 zeroext %x) nounwind {
+ store i182 %x, i182* @i182_s
+ ret void
+}
+
+define void @i183_ls(i183 zeroext %x) nounwind {
+ store i183 %x, i183* @i183_s
+ ret void
+}
+
+define void @i184_ls(i184 zeroext %x) nounwind {
+ store i184 %x, i184* @i184_s
+ ret void
+}
+
+define void @i185_ls(i185 zeroext %x) nounwind {
+ store i185 %x, i185* @i185_s
+ ret void
+}
+
+define void @i186_ls(i186 zeroext %x) nounwind {
+ store i186 %x, i186* @i186_s
+ ret void
+}
+
+define void @i187_ls(i187 zeroext %x) nounwind {
+ store i187 %x, i187* @i187_s
+ ret void
+}
+
+define void @i188_ls(i188 zeroext %x) nounwind {
+ store i188 %x, i188* @i188_s
+ ret void
+}
+
+define void @i189_ls(i189 zeroext %x) nounwind {
+ store i189 %x, i189* @i189_s
+ ret void
+}
+
+define void @i190_ls(i190 zeroext %x) nounwind {
+ store i190 %x, i190* @i190_s
+ ret void
+}
+
+define void @i191_ls(i191 zeroext %x) nounwind {
+ store i191 %x, i191* @i191_s
+ ret void
+}
+
+define void @i192_ls(i192 zeroext %x) nounwind {
+ store i192 %x, i192* @i192_s
+ ret void
+}
+
+define void @i193_ls(i193 zeroext %x) nounwind {
+ store i193 %x, i193* @i193_s
+ ret void
+}
+
+define void @i194_ls(i194 zeroext %x) nounwind {
+ store i194 %x, i194* @i194_s
+ ret void
+}
+
+define void @i195_ls(i195 zeroext %x) nounwind {
+ store i195 %x, i195* @i195_s
+ ret void
+}
+
+define void @i196_ls(i196 zeroext %x) nounwind {
+ store i196 %x, i196* @i196_s
+ ret void
+}
+
+define void @i197_ls(i197 zeroext %x) nounwind {
+ store i197 %x, i197* @i197_s
+ ret void
+}
+
+define void @i198_ls(i198 zeroext %x) nounwind {
+ store i198 %x, i198* @i198_s
+ ret void
+}
+
+define void @i199_ls(i199 zeroext %x) nounwind {
+ store i199 %x, i199* @i199_s
+ ret void
+}
+
+define void @i200_ls(i200 zeroext %x) nounwind {
+ store i200 %x, i200* @i200_s
+ ret void
+}
+
+define void @i201_ls(i201 zeroext %x) nounwind {
+ store i201 %x, i201* @i201_s
+ ret void
+}
+
+define void @i202_ls(i202 zeroext %x) nounwind {
+ store i202 %x, i202* @i202_s
+ ret void
+}
+
+define void @i203_ls(i203 zeroext %x) nounwind {
+ store i203 %x, i203* @i203_s
+ ret void
+}
+
+define void @i204_ls(i204 zeroext %x) nounwind {
+ store i204 %x, i204* @i204_s
+ ret void
+}
+
+define void @i205_ls(i205 zeroext %x) nounwind {
+ store i205 %x, i205* @i205_s
+ ret void
+}
+
+define void @i206_ls(i206 zeroext %x) nounwind {
+ store i206 %x, i206* @i206_s
+ ret void
+}
+
+define void @i207_ls(i207 zeroext %x) nounwind {
+ store i207 %x, i207* @i207_s
+ ret void
+}
+
+define void @i208_ls(i208 zeroext %x) nounwind {
+ store i208 %x, i208* @i208_s
+ ret void
+}
+
+define void @i209_ls(i209 zeroext %x) nounwind {
+ store i209 %x, i209* @i209_s
+ ret void
+}
+
+define void @i210_ls(i210 zeroext %x) nounwind {
+ store i210 %x, i210* @i210_s
+ ret void
+}
+
+define void @i211_ls(i211 zeroext %x) nounwind {
+ store i211 %x, i211* @i211_s
+ ret void
+}
+
+define void @i212_ls(i212 zeroext %x) nounwind {
+ store i212 %x, i212* @i212_s
+ ret void
+}
+
+define void @i213_ls(i213 zeroext %x) nounwind {
+ store i213 %x, i213* @i213_s
+ ret void
+}
+
+define void @i214_ls(i214 zeroext %x) nounwind {
+ store i214 %x, i214* @i214_s
+ ret void
+}
+
+define void @i215_ls(i215 zeroext %x) nounwind {
+ store i215 %x, i215* @i215_s
+ ret void
+}
+
+define void @i216_ls(i216 zeroext %x) nounwind {
+ store i216 %x, i216* @i216_s
+ ret void
+}
+
+define void @i217_ls(i217 zeroext %x) nounwind {
+ store i217 %x, i217* @i217_s
+ ret void
+}
+
+define void @i218_ls(i218 zeroext %x) nounwind {
+ store i218 %x, i218* @i218_s
+ ret void
+}
+
+define void @i219_ls(i219 zeroext %x) nounwind {
+ store i219 %x, i219* @i219_s
+ ret void
+}
+
+define void @i220_ls(i220 zeroext %x) nounwind {
+ store i220 %x, i220* @i220_s
+ ret void
+}
+
+define void @i221_ls(i221 zeroext %x) nounwind {
+ store i221 %x, i221* @i221_s
+ ret void
+}
+
+define void @i222_ls(i222 zeroext %x) nounwind {
+ store i222 %x, i222* @i222_s
+ ret void
+}
+
+define void @i223_ls(i223 zeroext %x) nounwind {
+ store i223 %x, i223* @i223_s
+ ret void
+}
+
+define void @i224_ls(i224 zeroext %x) nounwind {
+ store i224 %x, i224* @i224_s
+ ret void
+}
+
+define void @i225_ls(i225 zeroext %x) nounwind {
+ store i225 %x, i225* @i225_s
+ ret void
+}
+
+define void @i226_ls(i226 zeroext %x) nounwind {
+ store i226 %x, i226* @i226_s
+ ret void
+}
+
+define void @i227_ls(i227 zeroext %x) nounwind {
+ store i227 %x, i227* @i227_s
+ ret void
+}
+
+define void @i228_ls(i228 zeroext %x) nounwind {
+ store i228 %x, i228* @i228_s
+ ret void
+}
+
+define void @i229_ls(i229 zeroext %x) nounwind {
+ store i229 %x, i229* @i229_s
+ ret void
+}
+
+define void @i230_ls(i230 zeroext %x) nounwind {
+ store i230 %x, i230* @i230_s
+ ret void
+}
+
+define void @i231_ls(i231 zeroext %x) nounwind {
+ store i231 %x, i231* @i231_s
+ ret void
+}
+
+define void @i232_ls(i232 zeroext %x) nounwind {
+ store i232 %x, i232* @i232_s
+ ret void
+}
+
+define void @i233_ls(i233 zeroext %x) nounwind {
+ store i233 %x, i233* @i233_s
+ ret void
+}
+
+define void @i234_ls(i234 zeroext %x) nounwind {
+ store i234 %x, i234* @i234_s
+ ret void
+}
+
+define void @i235_ls(i235 zeroext %x) nounwind {
+ store i235 %x, i235* @i235_s
+ ret void
+}
+
+define void @i236_ls(i236 zeroext %x) nounwind {
+ store i236 %x, i236* @i236_s
+ ret void
+}
+
+define void @i237_ls(i237 zeroext %x) nounwind {
+ store i237 %x, i237* @i237_s
+ ret void
+}
+
+define void @i238_ls(i238 zeroext %x) nounwind {
+ store i238 %x, i238* @i238_s
+ ret void
+}
+
+define void @i239_ls(i239 zeroext %x) nounwind {
+ store i239 %x, i239* @i239_s
+ ret void
+}
+
+define void @i240_ls(i240 zeroext %x) nounwind {
+ store i240 %x, i240* @i240_s
+ ret void
+}
+
+define void @i241_ls(i241 zeroext %x) nounwind {
+ store i241 %x, i241* @i241_s
+ ret void
+}
+
+define void @i242_ls(i242 zeroext %x) nounwind {
+ store i242 %x, i242* @i242_s
+ ret void
+}
+
+define void @i243_ls(i243 zeroext %x) nounwind {
+ store i243 %x, i243* @i243_s
+ ret void
+}
+
+define void @i244_ls(i244 zeroext %x) nounwind {
+ store i244 %x, i244* @i244_s
+ ret void
+}
+
+define void @i245_ls(i245 zeroext %x) nounwind {
+ store i245 %x, i245* @i245_s
+ ret void
+}
+
+define void @i246_ls(i246 zeroext %x) nounwind {
+ store i246 %x, i246* @i246_s
+ ret void
+}
+
+define void @i247_ls(i247 zeroext %x) nounwind {
+ store i247 %x, i247* @i247_s
+ ret void
+}
+
+define void @i248_ls(i248 zeroext %x) nounwind {
+ store i248 %x, i248* @i248_s
+ ret void
+}
+
+define void @i249_ls(i249 zeroext %x) nounwind {
+ store i249 %x, i249* @i249_s
+ ret void
+}
+
+define void @i250_ls(i250 zeroext %x) nounwind {
+ store i250 %x, i250* @i250_s
+ ret void
+}
+
+define void @i251_ls(i251 zeroext %x) nounwind {
+ store i251 %x, i251* @i251_s
+ ret void
+}
+
+define void @i252_ls(i252 zeroext %x) nounwind {
+ store i252 %x, i252* @i252_s
+ ret void
+}
+
+define void @i253_ls(i253 zeroext %x) nounwind {
+ store i253 %x, i253* @i253_s
+ ret void
+}
+
+define void @i254_ls(i254 zeroext %x) nounwind {
+ store i254 %x, i254* @i254_s
+ ret void
+}
+
+define void @i255_ls(i255 zeroext %x) nounwind {
+ store i255 %x, i255* @i255_s
+ ret void
+}
+
+define void @i256_ls(i256 zeroext %x) nounwind {
+ store i256 %x, i256* @i256_s
+ ret void
+}
diff --git a/test/CodeGen/Generic/BasicInstrs.ll b/test/CodeGen/Generic/BasicInstrs.ll
new file mode 100644
index 0000000000000..e65cbf772fd9f
--- /dev/null
+++ b/test/CodeGen/Generic/BasicInstrs.ll
@@ -0,0 +1,54 @@
+; New testcase, this contains a bunch of simple instructions that should be
+; handled by a code generator.
+
+; RUN: llvm-as < %s | llc
+
+define i32 @add(i32 %A, i32 %B) {
+ %R = add i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @sub(i32 %A, i32 %B) {
+ %R = sub i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @mul(i32 %A, i32 %B) {
+ %R = mul i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @sdiv(i32 %A, i32 %B) {
+ %R = sdiv i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @udiv(i32 %A, i32 %B) {
+ %R = udiv i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @srem(i32 %A, i32 %B) {
+ %R = srem i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @urem(i32 %A, i32 %B) {
+ %R = urem i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @and(i32 %A, i32 %B) {
+ %R = and i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @or(i32 %A, i32 %B) {
+ %R = or i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
+
+define i32 @xor(i32 %A, i32 %B) {
+ %R = xor i32 %A, %B ; <i32> [#uses=1]
+ ret i32 %R
+}
diff --git a/test/CodeGen/Generic/BurgBadRegAlloc.ll b/test/CodeGen/Generic/BurgBadRegAlloc.ll
new file mode 100644
index 0000000000000..3ccc9a0aeb69f
--- /dev/null
+++ b/test/CodeGen/Generic/BurgBadRegAlloc.ll
@@ -0,0 +1,829 @@
+; RUN: llvm-as < %s | llc
+
+;; Register allocation is doing a very poor job on this routine from yyparse
+;; in Burg:
+;; -- at least two long-lived values are being allocated to %o? registers
+;; -- even worse, those registers are being saved and restored repeatedly
+;; at function calls, even though there are no intervening uses.
+;; -- outgoing args of some function calls have to be swapped, causing
+;; another write/read from stack to do the exchange (use -dregalloc=y).
+;;
+%Arity = type %struct.arity*
+ %Binding = type %struct.binding*
+ %DeltaCost = type [4 x i16]
+ %Dimension = type %struct.dimension*
+ %Index_Map = type { i32, %Item_Set* }
+ %IntList = type %struct.intlist*
+ %Item = type { %DeltaCost, %Rule }
+ %ItemArray = type %Item*
+ %Item_Set = type %struct.item_set*
+ %List = type %struct.list*
+ %Mapping = type %struct.mapping*
+ %NonTerminal = type %struct.nonterminal*
+ %Operator = type %struct.operator*
+ %Pattern = type %struct.pattern*
+ %PatternAST = type %struct.patternAST*
+ %Plank = type %struct.plank*
+ %PlankMap = type %struct.plankMap*
+ %ReadFn = type i32 ()*
+ %Rule = type %struct.rule*
+ %RuleAST = type %struct.ruleAST*
+ %StateMap = type %struct.stateMap*
+ %StrTableElement = type %struct.strTableElement*
+ %Symbol = type %struct.symbol*
+ %Table = type %struct.table*
+ %YYSTYPE = type { %IntList }
+ %struct.arity = type { i32, %List }
+ %struct.binding = type { i8*, i32 }
+ %struct.dimension = type { i16*, %Index_Map, %Mapping, i32, %PlankMap }
+ %struct.index_map = type { i32, %Item_Set* }
+ %struct.intlist = type { i32, %IntList }
+ %struct.item = type { %DeltaCost, %Rule }
+ %struct.item_set = type { i32, i32, %Operator, [2 x %Item_Set], %Item_Set, i16*, %ItemArray, %ItemArray }
+ %struct.list = type { i8*, %List }
+ %struct.mapping = type { %List*, i32, i32, i32, %Item_Set* }
+ %struct.nonterminal = type { i8*, i32, i32, i32, %PlankMap, %Rule }
+ %struct.operator = type { i8*, i32, i32, i32, i32, i32, %Table }
+ %struct.pattern = type { %NonTerminal, %Operator, [2 x %NonTerminal] }
+ %struct.patternAST = type { %Symbol, i8*, %List }
+ %struct.plank = type { i8*, %List, i32 }
+ %struct.plankMap = type { %List, i32, %StateMap }
+ %struct.rule = type { %DeltaCost, i32, i32, i32, %NonTerminal, %Pattern, i32 }
+ %struct.ruleAST = type { i8*, %PatternAST, i32, %IntList, %Rule, %StrTableElement, %StrTableElement }
+ %struct.stateMap = type { i8*, %Plank, i32, i16* }
+ %struct.strTableElement = type { i8*, %IntList, i8* }
+ %struct.symbol = type { i8*, i32, { %Operator } }
+ %struct.table = type { %Operator, %List, i16*, [2 x %Dimension], %Item_Set* }
+@yylval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
+@yylhs = external global [25 x i16] ; <[25 x i16]*> [#uses=1]
+@yylen = external global [25 x i16] ; <[25 x i16]*> [#uses=1]
+@yydefred = external global [43 x i16] ; <[43 x i16]*> [#uses=1]
+@yydgoto = external global [12 x i16] ; <[12 x i16]*> [#uses=1]
+@yysindex = external global [43 x i16] ; <[43 x i16]*> [#uses=2]
+@yyrindex = external global [43 x i16] ; <[43 x i16]*> [#uses=1]
+@yygindex = external global [12 x i16] ; <[12 x i16]*> [#uses=1]
+@yytable = external global [263 x i16] ; <[263 x i16]*> [#uses=4]
+@yycheck = external global [263 x i16] ; <[263 x i16]*> [#uses=4]
+@yynerrs = external global i32 ; <i32*> [#uses=3]
+@yyerrflag = external global i32 ; <i32*> [#uses=6]
+@yychar = external global i32 ; <i32*> [#uses=15]
+@yyssp = external global i16* ; <i16**> [#uses=15]
+@yyvsp = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=30]
+@yyval = external global %YYSTYPE ; <%YYSTYPE*> [#uses=1]
+@yyss = external global i16* ; <i16**> [#uses=3]
+@yysslim = external global i16* ; <i16**> [#uses=3]
+@yyvs = external global %YYSTYPE* ; <%YYSTYPE**> [#uses=1]
+@.LC01 = external global [13 x i8] ; <[13 x i8]*> [#uses=1]
+@.LC1 = external global [20 x i8] ; <[20 x i8]*> [#uses=1]
+
+define i32 @yyparse() {
+bb0:
+ store i32 0, i32* @yynerrs
+ store i32 0, i32* @yyerrflag
+ store i32 -1, i32* @yychar
+ %reg113 = load i16** @yyss ; <i16*> [#uses=1]
+ %cond581 = icmp ne i16* %reg113, null ; <i1> [#uses=1]
+ br i1 %cond581, label %bb3, label %bb2
+
+bb2: ; preds = %bb0
+ %reg584 = call i32 @yygrowstack( ) ; <i32> [#uses=1]
+ %cond584 = icmp ne i32 %reg584, 0 ; <i1> [#uses=1]
+ br i1 %cond584, label %bb113, label %bb3
+
+bb3: ; preds = %bb2, %bb0
+ %reg115 = load i16** @yyss ; <i16*> [#uses=1]
+ store i16* %reg115, i16** @yyssp
+ %reg116 = load %YYSTYPE** @yyvs ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg116, %YYSTYPE** @yyvsp
+ %reg117 = load i16** @yyssp ; <i16*> [#uses=1]
+ store i16 0, i16* %reg117
+ br label %bb4
+
+bb4: ; preds = %bb112, %bb102, %bb35, %bb31, %bb15, %bb14, %bb3
+ %reg458 = phi i32 [ %reg476, %bb112 ], [ 1, %bb102 ], [ %reg458, %bb35 ], [ %cast768, %bb31 ], [ %cast658, %bb15 ], [ %cast658, %bb14 ], [ 0, %bb3 ] ; <i32> [#uses=2]
+ %reg458-idxcast = zext i32 %reg458 to i64 ; <i64> [#uses=3]
+ %reg594 = getelementptr [43 x i16]* @yydefred, i64 0, i64 %reg458-idxcast ; <i16*> [#uses=1]
+ %reg125 = load i16* %reg594 ; <i16> [#uses=1]
+ %cast599 = sext i16 %reg125 to i32 ; <i32> [#uses=2]
+ %cond600 = icmp ne i32 %cast599, 0 ; <i1> [#uses=1]
+ br i1 %cond600, label %bb36, label %bb5
+
+bb5: ; preds = %bb4
+ %reg127 = load i32* @yychar ; <i32> [#uses=1]
+ %cond603 = icmp sge i32 %reg127, 0 ; <i1> [#uses=1]
+ br i1 %cond603, label %bb8, label %bb6
+
+bb6: ; preds = %bb5
+ %reg607 = call i32 @yylex( ) ; <i32> [#uses=1]
+ store i32 %reg607, i32* @yychar
+ %reg129 = load i32* @yychar ; <i32> [#uses=1]
+ %cond609 = icmp sge i32 %reg129, 0 ; <i1> [#uses=1]
+ br i1 %cond609, label %bb8, label %bb7
+
+bb7: ; preds = %bb6
+ store i32 0, i32* @yychar
+ br label %bb8
+
+bb8: ; preds = %bb7, %bb6, %bb5
+ %reg615 = getelementptr [43 x i16]* @yysindex, i64 0, i64 %reg458-idxcast ; <i16*> [#uses=1]
+ %reg137 = load i16* %reg615 ; <i16> [#uses=1]
+ %cast620 = sext i16 %reg137 to i32 ; <i32> [#uses=2]
+ %cond621 = icmp eq i32 %cast620, 0 ; <i1> [#uses=1]
+ br i1 %cond621, label %bb16, label %bb9
+
+bb9: ; preds = %bb8
+ %reg139 = load i32* @yychar ; <i32> [#uses=2]
+ %reg460 = add i32 %cast620, %reg139 ; <i32> [#uses=3]
+ %cond624 = icmp slt i32 %reg460, 0 ; <i1> [#uses=1]
+ br i1 %cond624, label %bb16, label %bb10
+
+bb10: ; preds = %bb9
+ %cond627 = icmp sgt i32 %reg460, 262 ; <i1> [#uses=1]
+ br i1 %cond627, label %bb16, label %bb11
+
+bb11: ; preds = %bb10
+ %reg460-idxcast = sext i32 %reg460 to i64 ; <i64> [#uses=2]
+ %reg632 = getelementptr [263 x i16]* @yycheck, i64 0, i64 %reg460-idxcast ; <i16*> [#uses=1]
+ %reg148 = load i16* %reg632 ; <i16> [#uses=1]
+ %cast637 = sext i16 %reg148 to i32 ; <i32> [#uses=1]
+ %cond639 = icmp ne i32 %cast637, %reg139 ; <i1> [#uses=1]
+ br i1 %cond639, label %bb16, label %bb12
+
+bb12: ; preds = %bb11
+ %reg150 = load i16** @yyssp ; <i16*> [#uses=1]
+ %cast640 = bitcast i16* %reg150 to i8* ; <i8*> [#uses=1]
+ %reg151 = load i16** @yysslim ; <i16*> [#uses=1]
+ %cast641 = bitcast i16* %reg151 to i8* ; <i8*> [#uses=1]
+ %cond642 = icmp ult i8* %cast640, %cast641 ; <i1> [#uses=1]
+ br i1 %cond642, label %bb14, label %bb13
+
+bb13: ; preds = %bb12
+ %reg644 = call i32 @yygrowstack( ) ; <i32> [#uses=1]
+ %cond644 = icmp ne i32 %reg644, 0 ; <i1> [#uses=1]
+ br i1 %cond644, label %bb113, label %bb14
+
+bb14: ; preds = %bb13, %bb12
+ %reg153 = load i16** @yyssp ; <i16*> [#uses=1]
+ %reg647 = getelementptr i16* %reg153, i64 1 ; <i16*> [#uses=2]
+ store i16* %reg647, i16** @yyssp
+ %reg653 = getelementptr [263 x i16]* @yytable, i64 0, i64 %reg460-idxcast ; <i16*> [#uses=1]
+ %reg162 = load i16* %reg653 ; <i16> [#uses=2]
+ %cast658 = sext i16 %reg162 to i32 ; <i32> [#uses=2]
+ store i16 %reg162, i16* %reg647
+ %reg164 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg661 = getelementptr %YYSTYPE* %reg164, i64 1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg661, %YYSTYPE** @yyvsp
+ %reg167 = load %IntList* getelementptr (%YYSTYPE* @yylval, i64 0, i32 0) ; <%IntList> [#uses=1]
+ %reg661.idx1 = getelementptr %YYSTYPE* %reg164, i64 1, i32 0 ; <%IntList*> [#uses=1]
+ store %IntList %reg167, %IntList* %reg661.idx1
+ store i32 -1, i32* @yychar
+ %reg169 = load i32* @yyerrflag ; <i32> [#uses=2]
+ %cond669 = icmp sle i32 %reg169, 0 ; <i1> [#uses=1]
+ br i1 %cond669, label %bb4, label %bb15
+
+bb15: ; preds = %bb14
+ %reg171 = add i32 %reg169, -1 ; <i32> [#uses=1]
+ store i32 %reg171, i32* @yyerrflag
+ br label %bb4
+
+bb16: ; preds = %bb11, %bb10, %bb9, %bb8
+ %reg677 = getelementptr [43 x i16]* @yyrindex, i64 0, i64 %reg458-idxcast ; <i16*> [#uses=1]
+ %reg178 = load i16* %reg677 ; <i16> [#uses=1]
+ %cast682 = sext i16 %reg178 to i32 ; <i32> [#uses=2]
+ %cond683 = icmp eq i32 %cast682, 0 ; <i1> [#uses=1]
+ br i1 %cond683, label %bb21, label %bb17
+
+bb17: ; preds = %bb16
+ %reg180 = load i32* @yychar ; <i32> [#uses=2]
+ %reg463 = add i32 %cast682, %reg180 ; <i32> [#uses=3]
+ %cond686 = icmp slt i32 %reg463, 0 ; <i1> [#uses=1]
+ br i1 %cond686, label %bb21, label %bb18
+
+bb18: ; preds = %bb17
+ %cond689 = icmp sgt i32 %reg463, 262 ; <i1> [#uses=1]
+ br i1 %cond689, label %bb21, label %bb19
+
+bb19: ; preds = %bb18
+ %reg463-idxcast = sext i32 %reg463 to i64 ; <i64> [#uses=2]
+ %reg694 = getelementptr [263 x i16]* @yycheck, i64 0, i64 %reg463-idxcast ; <i16*> [#uses=1]
+ %reg189 = load i16* %reg694 ; <i16> [#uses=1]
+ %cast699 = sext i16 %reg189 to i32 ; <i32> [#uses=1]
+ %cond701 = icmp ne i32 %cast699, %reg180 ; <i1> [#uses=1]
+ br i1 %cond701, label %bb21, label %bb20
+
+bb20: ; preds = %bb19
+ %reg704 = getelementptr [263 x i16]* @yytable, i64 0, i64 %reg463-idxcast ; <i16*> [#uses=1]
+ %reg197 = load i16* %reg704 ; <i16> [#uses=1]
+ %cast709 = sext i16 %reg197 to i32 ; <i32> [#uses=1]
+ br label %bb36
+
+bb21: ; preds = %bb19, %bb18, %bb17, %bb16
+ %reg198 = load i32* @yyerrflag ; <i32> [#uses=1]
+ %cond711 = icmp ne i32 %reg198, 0 ; <i1> [#uses=1]
+ br i1 %cond711, label %bb23, label %bb22
+
+bb22: ; preds = %bb21
+ call void @yyerror( i8* getelementptr ([13 x i8]* @.LC01, i64 0, i64 0) )
+ %reg200 = load i32* @yynerrs ; <i32> [#uses=1]
+ %reg201 = add i32 %reg200, 1 ; <i32> [#uses=1]
+ store i32 %reg201, i32* @yynerrs
+ br label %bb23
+
+bb23: ; preds = %bb22, %bb21
+ %reg202 = load i32* @yyerrflag ; <i32> [#uses=1]
+ %cond719 = icmp sgt i32 %reg202, 2 ; <i1> [#uses=1]
+ br i1 %cond719, label %bb34, label %bb24
+
+bb24: ; preds = %bb23
+ store i32 3, i32* @yyerrflag
+ %reg241 = load i16** @yyss ; <i16*> [#uses=1]
+ %cast778 = bitcast i16* %reg241 to i8* ; <i8*> [#uses=1]
+ br label %bb25
+
+bb25: ; preds = %bb33, %bb24
+ %reg204 = load i16** @yyssp ; <i16*> [#uses=4]
+ %reg206 = load i16* %reg204 ; <i16> [#uses=1]
+ %reg206-idxcast = sext i16 %reg206 to i64 ; <i64> [#uses=1]
+ %reg727 = getelementptr [43 x i16]* @yysindex, i64 0, i64 %reg206-idxcast ; <i16*> [#uses=1]
+ %reg212 = load i16* %reg727 ; <i16> [#uses=2]
+ %cast732 = sext i16 %reg212 to i32 ; <i32> [#uses=2]
+ %cond733 = icmp eq i32 %cast732, 0 ; <i1> [#uses=1]
+ br i1 %cond733, label %bb32, label %bb26
+
+bb26: ; preds = %bb25
+ %reg466 = add i32 %cast732, 256 ; <i32> [#uses=2]
+ %cond736 = icmp slt i32 %reg466, 0 ; <i1> [#uses=1]
+ br i1 %cond736, label %bb32, label %bb27
+
+bb27: ; preds = %bb26
+ %cond739 = icmp sgt i32 %reg466, 262 ; <i1> [#uses=1]
+ br i1 %cond739, label %bb32, label %bb28
+
+bb28: ; preds = %bb27
+ %reg212-idxcast = sext i16 %reg212 to i64 ; <i64> [#uses=1]
+ %reg212-idxcast-offset = add i64 %reg212-idxcast, 256 ; <i64> [#uses=2]
+ %reg744 = getelementptr [263 x i16]* @yycheck, i64 0, i64 %reg212-idxcast-offset ; <i16*> [#uses=1]
+ %reg221 = load i16* %reg744 ; <i16> [#uses=1]
+ %cond748 = icmp ne i16 %reg221, 256 ; <i1> [#uses=1]
+ br i1 %cond748, label %bb32, label %bb29
+
+bb29: ; preds = %bb28
+ %cast750 = bitcast i16* %reg204 to i8* ; <i8*> [#uses=1]
+ %reg223 = load i16** @yysslim ; <i16*> [#uses=1]
+ %cast751 = bitcast i16* %reg223 to i8* ; <i8*> [#uses=1]
+ %cond752 = icmp ult i8* %cast750, %cast751 ; <i1> [#uses=1]
+ br i1 %cond752, label %bb31, label %bb30
+
+bb30: ; preds = %bb29
+ %reg754 = call i32 @yygrowstack( ) ; <i32> [#uses=1]
+ %cond754 = icmp ne i32 %reg754, 0 ; <i1> [#uses=1]
+ br i1 %cond754, label %bb113, label %bb31
+
+bb31: ; preds = %bb30, %bb29
+ %reg225 = load i16** @yyssp ; <i16*> [#uses=1]
+ %reg757 = getelementptr i16* %reg225, i64 1 ; <i16*> [#uses=2]
+ store i16* %reg757, i16** @yyssp
+ %reg763 = getelementptr [263 x i16]* @yytable, i64 0, i64 %reg212-idxcast-offset ; <i16*> [#uses=1]
+ %reg234 = load i16* %reg763 ; <i16> [#uses=2]
+ %cast768 = sext i16 %reg234 to i32 ; <i32> [#uses=1]
+ store i16 %reg234, i16* %reg757
+ %reg236 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg771 = getelementptr %YYSTYPE* %reg236, i64 1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg771, %YYSTYPE** @yyvsp
+ %reg239 = load %IntList* getelementptr (%YYSTYPE* @yylval, i64 0, i32 0) ; <%IntList> [#uses=1]
+ %reg771.idx1 = getelementptr %YYSTYPE* %reg236, i64 1, i32 0 ; <%IntList*> [#uses=1]
+ store %IntList %reg239, %IntList* %reg771.idx1
+ br label %bb4
+
+bb32: ; preds = %bb28, %bb27, %bb26, %bb25
+ %cast777 = bitcast i16* %reg204 to i8* ; <i8*> [#uses=1]
+ %cond779 = icmp ule i8* %cast777, %cast778 ; <i1> [#uses=1]
+ br i1 %cond779, label %UnifiedExitNode, label %bb33
+
+bb33: ; preds = %bb32
+ %reg781 = getelementptr i16* %reg204, i64 -1 ; <i16*> [#uses=1]
+ store i16* %reg781, i16** @yyssp
+ %reg244 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %reg786 = getelementptr %YYSTYPE* %reg244, i64 -1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg786, %YYSTYPE** @yyvsp
+ br label %bb25
+
+bb34: ; preds = %bb23
+ %reg246 = load i32* @yychar ; <i32> [#uses=1]
+ %cond791 = icmp eq i32 %reg246, 0 ; <i1> [#uses=1]
+ br i1 %cond791, label %UnifiedExitNode, label %bb35
+
+bb35: ; preds = %bb34
+ store i32 -1, i32* @yychar
+ br label %bb4
+
+bb36: ; preds = %bb20, %bb4
+ %reg468 = phi i32 [ %cast709, %bb20 ], [ %cast599, %bb4 ] ; <i32> [#uses=31]
+ %reg468-idxcast = sext i32 %reg468 to i64 ; <i64> [#uses=2]
+ %reg796 = getelementptr [25 x i16]* @yylen, i64 0, i64 %reg468-idxcast ; <i16*> [#uses=1]
+ %reg254 = load i16* %reg796 ; <i16> [#uses=2]
+ %reg259 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %reg254-idxcast = sext i16 %reg254 to i64 ; <i64> [#uses=1]
+ %reg254-idxcast-scale = mul i64 %reg254-idxcast, -1 ; <i64> [#uses=1]
+ %reg254-idxcast-scale-offset = add i64 %reg254-idxcast-scale, 1 ; <i64> [#uses=1]
+ %reg261.idx1 = getelementptr %YYSTYPE* %reg259, i64 %reg254-idxcast-scale-offset, i32 0 ; <%IntList*> [#uses=1]
+ %reg261 = load %IntList* %reg261.idx1 ; <%IntList> [#uses=1]
+ store %IntList %reg261, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ %cond812 = icmp eq i32 %reg468, 13 ; <i1> [#uses=1]
+ br i1 %cond812, label %bb85, label %bb37
+
+bb37: ; preds = %bb36
+ %cond814 = icmp sgt i32 %reg468, 13 ; <i1> [#uses=1]
+ br i1 %cond814, label %bb56, label %bb38
+
+bb38: ; preds = %bb37
+ %cond817 = icmp eq i32 %reg468, 7 ; <i1> [#uses=1]
+ br i1 %cond817, label %bb79, label %bb39
+
+bb39: ; preds = %bb38
+ %cond819 = icmp sgt i32 %reg468, 7 ; <i1> [#uses=1]
+ br i1 %cond819, label %bb48, label %bb40
+
+bb40: ; preds = %bb39
+ %cond822 = icmp eq i32 %reg468, 4 ; <i1> [#uses=1]
+ br i1 %cond822, label %bb76, label %bb41
+
+bb41: ; preds = %bb40
+ %cond824 = icmp sgt i32 %reg468, 4 ; <i1> [#uses=1]
+ br i1 %cond824, label %bb45, label %bb42
+
+bb42: ; preds = %bb41
+ %cond827 = icmp eq i32 %reg468, 2 ; <i1> [#uses=1]
+ br i1 %cond827, label %bb74, label %bb43
+
+bb43: ; preds = %bb42
+ %cond829 = icmp eq i32 %reg468, 3 ; <i1> [#uses=1]
+ br i1 %cond829, label %bb75, label %bb97
+
+bb45: ; preds = %bb41
+ %cond831 = icmp eq i32 %reg468, 5 ; <i1> [#uses=1]
+ br i1 %cond831, label %bb77, label %bb46
+
+bb46: ; preds = %bb45
+ %cond833 = icmp eq i32 %reg468, 6 ; <i1> [#uses=1]
+ br i1 %cond833, label %bb78, label %bb97
+
+bb48: ; preds = %bb39
+ %cond835 = icmp eq i32 %reg468, 10 ; <i1> [#uses=1]
+ br i1 %cond835, label %bb82, label %bb49
+
+bb49: ; preds = %bb48
+ %cond837 = icmp sgt i32 %reg468, 10 ; <i1> [#uses=1]
+ br i1 %cond837, label %bb53, label %bb50
+
+bb50: ; preds = %bb49
+ %cond840 = icmp eq i32 %reg468, 8 ; <i1> [#uses=1]
+ br i1 %cond840, label %bb80, label %bb51
+
+bb51: ; preds = %bb50
+ %cond842 = icmp eq i32 %reg468, 9 ; <i1> [#uses=1]
+ br i1 %cond842, label %bb81, label %bb97
+
+bb53: ; preds = %bb49
+ %cond844 = icmp eq i32 %reg468, 11 ; <i1> [#uses=1]
+ br i1 %cond844, label %bb83, label %bb54
+
+bb54: ; preds = %bb53
+ %cond846 = icmp eq i32 %reg468, 12 ; <i1> [#uses=1]
+ br i1 %cond846, label %bb84, label %bb97
+
+bb56: ; preds = %bb37
+ %cond848 = icmp eq i32 %reg468, 19 ; <i1> [#uses=1]
+ br i1 %cond848, label %bb91, label %bb57
+
+bb57: ; preds = %bb56
+ %cond850 = icmp sgt i32 %reg468, 19 ; <i1> [#uses=1]
+ br i1 %cond850, label %bb66, label %bb58
+
+bb58: ; preds = %bb57
+ %cond853 = icmp eq i32 %reg468, 16 ; <i1> [#uses=1]
+ br i1 %cond853, label %bb88, label %bb59
+
+bb59: ; preds = %bb58
+ %cond855 = icmp sgt i32 %reg468, 16 ; <i1> [#uses=1]
+ br i1 %cond855, label %bb63, label %bb60
+
+bb60: ; preds = %bb59
+ %cond858 = icmp eq i32 %reg468, 14 ; <i1> [#uses=1]
+ br i1 %cond858, label %bb86, label %bb61
+
+bb61: ; preds = %bb60
+ %cond860 = icmp eq i32 %reg468, 15 ; <i1> [#uses=1]
+ br i1 %cond860, label %bb87, label %bb97
+
+bb63: ; preds = %bb59
+ %cond862 = icmp eq i32 %reg468, 17 ; <i1> [#uses=1]
+ br i1 %cond862, label %bb89, label %bb64
+
+bb64: ; preds = %bb63
+ %cond864 = icmp eq i32 %reg468, 18 ; <i1> [#uses=1]
+ br i1 %cond864, label %bb90, label %bb97
+
+bb66: ; preds = %bb57
+ %cond866 = icmp eq i32 %reg468, 22 ; <i1> [#uses=1]
+ br i1 %cond866, label %bb94, label %bb67
+
+bb67: ; preds = %bb66
+ %cond868 = icmp sgt i32 %reg468, 22 ; <i1> [#uses=1]
+ br i1 %cond868, label %bb71, label %bb68
+
+bb68: ; preds = %bb67
+ %cond871 = icmp eq i32 %reg468, 20 ; <i1> [#uses=1]
+ br i1 %cond871, label %bb92, label %bb69
+
+bb69: ; preds = %bb68
+ %cond873 = icmp eq i32 %reg468, 21 ; <i1> [#uses=1]
+ br i1 %cond873, label %bb93, label %bb97
+
+bb71: ; preds = %bb67
+ %cond875 = icmp eq i32 %reg468, 23 ; <i1> [#uses=1]
+ br i1 %cond875, label %bb95, label %bb72
+
+bb72: ; preds = %bb71
+ %cond877 = icmp eq i32 %reg468, 24 ; <i1> [#uses=1]
+ br i1 %cond877, label %bb96, label %bb97
+
+bb74: ; preds = %bb42
+ call void @yyfinished( )
+ br label %bb97
+
+bb75: ; preds = %bb43
+ %reg262 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg264.idx1 = getelementptr %YYSTYPE* %reg262, i64 -2, i32 0 ; <%IntList*> [#uses=1]
+ %reg264 = load %IntList* %reg264.idx1 ; <%IntList> [#uses=1]
+ %reg265.idx = getelementptr %YYSTYPE* %reg262, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg265 = load %IntList* %reg265.idx ; <%IntList> [#uses=1]
+ %cast889 = bitcast %IntList %reg265 to %List ; <%List> [#uses=1]
+ %cast890 = bitcast %IntList %reg264 to %List ; <%List> [#uses=1]
+ call void @doSpec( %List %cast890, %List %cast889 )
+ br label %bb97
+
+bb76: ; preds = %bb40
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb77: ; preds = %bb45
+ %reg269 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast894 = getelementptr %YYSTYPE* %reg269, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg271 = load %IntList* %cast894 ; <%IntList> [#uses=1]
+ %reg271.upgrd.1 = bitcast %IntList %reg271 to i8* ; <i8*> [#uses=1]
+ %reg272.idx1 = getelementptr %YYSTYPE* %reg269, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg272 = load %IntList* %reg272.idx1 ; <%IntList> [#uses=1]
+ %cast901 = bitcast %IntList %reg272 to %List ; <%List> [#uses=1]
+ %reg901 = call %List @newList( i8* %reg271.upgrd.1, %List %cast901 ) ; <%List> [#uses=1]
+ bitcast %List %reg901 to %IntList ; <%IntList>:0 [#uses=1]
+ store %IntList %0, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb78: ; preds = %bb46
+ %reg275 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %reg277.idx = getelementptr %YYSTYPE* %reg275, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg277 = load %IntList* %reg277.idx ; <%IntList> [#uses=1]
+ %cast907 = bitcast %IntList %reg277 to %List ; <%List> [#uses=1]
+ %reg907 = call %Arity @newArity( i32 -1, %List %cast907 ) ; <%Arity> [#uses=1]
+ bitcast %Arity %reg907 to %IntList ; <%IntList>:1 [#uses=1]
+ store %IntList %1, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb79: ; preds = %bb38
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ %reg281 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %cast912 = getelementptr %YYSTYPE* %reg281, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg282 = load %IntList* %cast912 ; <%IntList> [#uses=1]
+ %reg282.upgrd.2 = bitcast %IntList %reg282 to %List ; <%List> [#uses=1]
+ call void @doGram( %List %reg282.upgrd.2 )
+ br label %bb97
+
+bb80: ; preds = %bb50
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ %reg285 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %cast917 = getelementptr %YYSTYPE* %reg285, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg286 = load %IntList* %cast917 ; <%IntList> [#uses=1]
+ %reg286.upgrd.3 = bitcast %IntList %reg286 to i8* ; <i8*> [#uses=1]
+ call void @doStart( i8* %reg286.upgrd.3 )
+ br label %bb97
+
+bb81: ; preds = %bb51
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb82: ; preds = %bb48
+ %reg290 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast923 = getelementptr %YYSTYPE* %reg290, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg292 = load %IntList* %cast923 ; <%IntList> [#uses=1]
+ %reg292.upgrd.4 = bitcast %IntList %reg292 to i8* ; <i8*> [#uses=1]
+ %reg293.idx1 = getelementptr %YYSTYPE* %reg290, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg293 = load %IntList* %reg293.idx1 ; <%IntList> [#uses=1]
+ %cast930 = bitcast %IntList %reg293 to %List ; <%List> [#uses=1]
+ %reg930 = call %List @newList( i8* %reg292.upgrd.4, %List %cast930 ) ; <%List> [#uses=1]
+ bitcast %List %reg930 to %IntList ; <%IntList>:2 [#uses=1]
+ store %IntList %2, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb83: ; preds = %bb53
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb84: ; preds = %bb54
+ %reg298 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast936 = getelementptr %YYSTYPE* %reg298, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg300 = load %IntList* %cast936 ; <%IntList> [#uses=1]
+ %reg300.upgrd.5 = bitcast %IntList %reg300 to i8* ; <i8*> [#uses=1]
+ %reg301.idx1 = getelementptr %YYSTYPE* %reg298, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg301 = load %IntList* %reg301.idx1 ; <%IntList> [#uses=1]
+ %cast943 = bitcast %IntList %reg301 to %List ; <%List> [#uses=1]
+ %reg943 = call %List @newList( i8* %reg300.upgrd.5, %List %cast943 ) ; <%List> [#uses=1]
+ bitcast %List %reg943 to %IntList ; <%IntList>:3 [#uses=1]
+ store %IntList %3, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb85: ; preds = %bb36
+ %reg304 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast9521 = getelementptr %YYSTYPE* %reg304, i64 -2, i32 0 ; <%IntList*> [#uses=1]
+ %reg306 = load %IntList* %cast9521 ; <%IntList> [#uses=1]
+ %reg306.upgrd.6 = bitcast %IntList %reg306 to i8* ; <i8*> [#uses=1]
+ %cast953 = bitcast %YYSTYPE* %reg304 to i32* ; <i32*> [#uses=1]
+ %reg307 = load i32* %cast953 ; <i32> [#uses=1]
+ %reg955 = call %Binding @newBinding( i8* %reg306.upgrd.6, i32 %reg307 ) ; <%Binding> [#uses=1]
+ bitcast %Binding %reg955 to %IntList ; <%IntList>:4 [#uses=1]
+ store %IntList %4, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb86: ; preds = %bb60
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb87: ; preds = %bb61
+ %reg312 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast961 = getelementptr %YYSTYPE* %reg312, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg314 = load %IntList* %cast961 ; <%IntList> [#uses=1]
+ %reg314.upgrd.7 = bitcast %IntList %reg314 to i8* ; <i8*> [#uses=1]
+ %reg315.idx1 = getelementptr %YYSTYPE* %reg312, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg315 = load %IntList* %reg315.idx1 ; <%IntList> [#uses=1]
+ %cast968 = bitcast %IntList %reg315 to %List ; <%List> [#uses=1]
+ %reg968 = call %List @newList( i8* %reg314.upgrd.7, %List %cast968 ) ; <%List> [#uses=1]
+ bitcast %List %reg968 to %IntList ; <%IntList>:5 [#uses=1]
+ store %IntList %5, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb88: ; preds = %bb58
+ %reg318 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=4]
+ %cast9791 = getelementptr %YYSTYPE* %reg318, i64 -6, i32 0 ; <%IntList*> [#uses=1]
+ %reg322 = load %IntList* %cast9791 ; <%IntList> [#uses=1]
+ %reg322.upgrd.8 = bitcast %IntList %reg322 to i8* ; <i8*> [#uses=1]
+ %reg323.idx1 = getelementptr %YYSTYPE* %reg318, i64 -4, i32 0 ; <%IntList*> [#uses=1]
+ %reg323 = load %IntList* %reg323.idx1 ; <%IntList> [#uses=1]
+ %reg987 = getelementptr %YYSTYPE* %reg318, i64 -2 ; <%YYSTYPE*> [#uses=1]
+ %cast989 = bitcast %YYSTYPE* %reg987 to i32* ; <i32*> [#uses=1]
+ %reg324 = load i32* %cast989 ; <i32> [#uses=1]
+ %reg325.idx1 = getelementptr %YYSTYPE* %reg318, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg325 = load %IntList* %reg325.idx1 ; <%IntList> [#uses=1]
+ %cast998 = bitcast %IntList %reg323 to %PatternAST ; <%PatternAST> [#uses=1]
+ %reg996 = call %RuleAST @newRuleAST( i8* %reg322.upgrd.8, %PatternAST %cast998, i32 %reg324, %IntList %reg325 ) ; <%RuleAST> [#uses=1]
+ bitcast %RuleAST %reg996 to %IntList ; <%IntList>:6 [#uses=1]
+ store %IntList %6, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb89: ; preds = %bb63
+ %reg328 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %cast1002 = getelementptr %YYSTYPE* %reg328, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg329 = load %IntList* %cast1002 ; <%IntList> [#uses=1]
+ %reg329.upgrd.9 = bitcast %IntList %reg329 to i8* ; <i8*> [#uses=1]
+ %reg1004 = call %PatternAST @newPatternAST( i8* %reg329.upgrd.9, %List null ) ; <%PatternAST> [#uses=1]
+ bitcast %PatternAST %reg1004 to %IntList ; <%IntList>:7 [#uses=1]
+ store %IntList %7, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb90: ; preds = %bb64
+ %reg333 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %cast10131 = getelementptr %YYSTYPE* %reg333, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg335 = load %IntList* %cast10131 ; <%IntList> [#uses=1]
+ %reg335.upgrd.10 = bitcast %IntList %reg335 to i8* ; <i8*> [#uses=1]
+ %reg1015 = call %List @newList( i8* %reg335.upgrd.10, %List null ) ; <%List> [#uses=1]
+ %cast10211 = getelementptr %YYSTYPE* %reg333, i64 -3, i32 0 ; <%IntList*> [#uses=1]
+ %reg338 = load %IntList* %cast10211 ; <%IntList> [#uses=1]
+ %reg338.upgrd.11 = bitcast %IntList %reg338 to i8* ; <i8*> [#uses=1]
+ %reg1023 = call %PatternAST @newPatternAST( i8* %reg338.upgrd.11, %List %reg1015 ) ; <%PatternAST> [#uses=1]
+ bitcast %PatternAST %reg1023 to %IntList ; <%IntList>:8 [#uses=1]
+ store %IntList %8, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb91: ; preds = %bb56
+ %reg341 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=3]
+ %cast10331 = getelementptr %YYSTYPE* %reg341, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg344 = load %IntList* %cast10331 ; <%IntList> [#uses=1]
+ %reg344.upgrd.12 = bitcast %IntList %reg344 to i8* ; <i8*> [#uses=1]
+ %reg1035 = call %List @newList( i8* %reg344.upgrd.12, %List null ) ; <%List> [#uses=1]
+ %cast10411 = getelementptr %YYSTYPE* %reg341, i64 -3, i32 0 ; <%IntList*> [#uses=1]
+ %reg347 = load %IntList* %cast10411 ; <%IntList> [#uses=1]
+ %reg347.upgrd.13 = bitcast %IntList %reg347 to i8* ; <i8*> [#uses=1]
+ %reg1043 = call %List @newList( i8* %reg347.upgrd.13, %List %reg1035 ) ; <%List> [#uses=1]
+ %cast10491 = getelementptr %YYSTYPE* %reg341, i64 -5, i32 0 ; <%IntList*> [#uses=1]
+ %reg349 = load %IntList* %cast10491 ; <%IntList> [#uses=1]
+ %reg349.upgrd.14 = bitcast %IntList %reg349 to i8* ; <i8*> [#uses=1]
+ %reg1051 = call %PatternAST @newPatternAST( i8* %reg349.upgrd.14, %List %reg1043 ) ; <%PatternAST> [#uses=1]
+ bitcast %PatternAST %reg1051 to %IntList ; <%IntList>:9 [#uses=1]
+ store %IntList %9, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb92: ; preds = %bb68
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb93: ; preds = %bb69
+ %reg354 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1059 = getelementptr %YYSTYPE* %reg354, i64 -2 ; <%YYSTYPE*> [#uses=1]
+ %cast1061 = bitcast %YYSTYPE* %reg1059 to i32* ; <i32*> [#uses=1]
+ %reg356 = load i32* %cast1061 ; <i32> [#uses=1]
+ %reg357.idx1 = getelementptr %YYSTYPE* %reg354, i64 -1, i32 0 ; <%IntList*> [#uses=1]
+ %reg357 = load %IntList* %reg357.idx1 ; <%IntList> [#uses=1]
+ %reg1068 = call %IntList @newIntList( i32 %reg356, %IntList %reg357 ) ; <%IntList> [#uses=1]
+ store %IntList %reg1068, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb94: ; preds = %bb66
+ store %IntList null, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb95: ; preds = %bb71
+ %reg362 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1076 = getelementptr %YYSTYPE* %reg362, i64 -1 ; <%YYSTYPE*> [#uses=1]
+ %cast1078 = bitcast %YYSTYPE* %reg1076 to i32* ; <i32*> [#uses=1]
+ %reg364 = load i32* %cast1078 ; <i32> [#uses=1]
+ %reg365.idx = getelementptr %YYSTYPE* %reg362, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg365 = load %IntList* %reg365.idx ; <%IntList> [#uses=1]
+ %reg1081 = call %IntList @newIntList( i32 %reg364, %IntList %reg365 ) ; <%IntList> [#uses=1]
+ store %IntList %reg1081, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb96: ; preds = %bb72
+ %reg368 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1088 = getelementptr %YYSTYPE* %reg368, i64 -1 ; <%YYSTYPE*> [#uses=1]
+ %cast1090 = bitcast %YYSTYPE* %reg1088 to i32* ; <i32*> [#uses=1]
+ %reg370 = load i32* %cast1090 ; <i32> [#uses=1]
+ %reg371.idx = getelementptr %YYSTYPE* %reg368, i64 0, i32 0 ; <%IntList*> [#uses=1]
+ %reg371 = load %IntList* %reg371.idx ; <%IntList> [#uses=1]
+ %reg1093 = call %IntList @newIntList( i32 %reg370, %IntList %reg371 ) ; <%IntList> [#uses=1]
+ store %IntList %reg1093, %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0)
+ br label %bb97
+
+bb97: ; preds = %bb96, %bb95, %bb94, %bb93, %bb92, %bb91, %bb90, %bb89, %bb88, %bb87, %bb86, %bb85, %bb84, %bb83, %bb82, %bb81, %bb80, %bb79, %bb78, %bb77, %bb76, %bb75, %bb74, %bb72, %bb69, %bb64, %bb61, %bb54, %bb51, %bb46, %bb43
+ %cast1097 = sext i16 %reg254 to i64 ; <i64> [#uses=3]
+ %reg375 = add i64 %cast1097, %cast1097 ; <i64> [#uses=1]
+ %reg377 = load i16** @yyssp ; <i16*> [#uses=1]
+ %cast379 = ptrtoint i16* %reg377 to i64 ; <i64> [#uses=1]
+ %reg381 = sub i64 %cast379, %reg375 ; <i64> [#uses=1]
+ %cast1099 = inttoptr i64 %reg381 to i16* ; <i16*> [#uses=1]
+ store i16* %cast1099, i16** @yyssp
+ %reg382 = load i16** @yyssp ; <i16*> [#uses=3]
+ %reg383 = load i16* %reg382 ; <i16> [#uses=1]
+ %cast1103 = sext i16 %reg383 to i32 ; <i32> [#uses=3]
+ %reg385 = mul i64 %cast1097, 8 ; <i64> [#uses=1]
+ %reg387 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=1]
+ %cast389 = ptrtoint %YYSTYPE* %reg387 to i64 ; <i64> [#uses=1]
+ %reg391 = sub i64 %cast389, %reg385 ; <i64> [#uses=1]
+ %cast1108 = inttoptr i64 %reg391 to %YYSTYPE* ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %cast1108, %YYSTYPE** @yyvsp
+ %reg1111 = getelementptr [25 x i16]* @yylhs, i64 0, i64 %reg468-idxcast ; <i16*> [#uses=1]
+ %reg398 = load i16* %reg1111 ; <i16> [#uses=2]
+ %cast1116 = sext i16 %reg398 to i32 ; <i32> [#uses=1]
+ %cond1117 = icmp ne i32 %cast1103, 0 ; <i1> [#uses=1]
+ br i1 %cond1117, label %bb104, label %bb98
+
+bb98: ; preds = %bb97
+ %cond1119 = icmp ne i32 %cast1116, 0 ; <i1> [#uses=1]
+ br i1 %cond1119, label %bb104, label %bb99
+
+bb99: ; preds = %bb98
+ %reg1122 = getelementptr i16* %reg382, i64 1 ; <i16*> [#uses=2]
+ store i16* %reg1122, i16** @yyssp
+ store i16 1, i16* %reg1122
+ %reg403 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1128 = getelementptr %YYSTYPE* %reg403, i64 1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg1128, %YYSTYPE** @yyvsp
+ %reg406 = load %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0) ; <%IntList> [#uses=1]
+ %reg1128.idx1 = getelementptr %YYSTYPE* %reg403, i64 1, i32 0 ; <%IntList*> [#uses=1]
+ store %IntList %reg406, %IntList* %reg1128.idx1
+ %reg407 = load i32* @yychar ; <i32> [#uses=1]
+ %cond1135 = icmp sge i32 %reg407, 0 ; <i1> [#uses=1]
+ br i1 %cond1135, label %bb102, label %bb100
+
+bb100: ; preds = %bb99
+ %reg1139 = call i32 @yylex( ) ; <i32> [#uses=1]
+ store i32 %reg1139, i32* @yychar
+ %reg409 = load i32* @yychar ; <i32> [#uses=1]
+ %cond1141 = icmp sge i32 %reg409, 0 ; <i1> [#uses=1]
+ br i1 %cond1141, label %bb102, label %bb101
+
+bb101: ; preds = %bb100
+ store i32 0, i32* @yychar
+ br label %bb102
+
+bb102: ; preds = %bb101, %bb100, %bb99
+ %reg411 = load i32* @yychar ; <i32> [#uses=1]
+ %cond1146 = icmp ne i32 %reg411, 0 ; <i1> [#uses=1]
+ br i1 %cond1146, label %bb4, label %UnifiedExitNode
+
+bb104: ; preds = %bb98, %bb97
+ %reg398-idxcast = sext i16 %reg398 to i64 ; <i64> [#uses=2]
+ %reg1150 = getelementptr [12 x i16]* @yygindex, i64 0, i64 %reg398-idxcast ; <i16*> [#uses=1]
+ %reg418 = load i16* %reg1150 ; <i16> [#uses=1]
+ %cast1155 = sext i16 %reg418 to i32 ; <i32> [#uses=2]
+ %cond1156 = icmp eq i32 %cast1155, 0 ; <i1> [#uses=1]
+ br i1 %cond1156, label %bb109, label %bb105
+
+bb105: ; preds = %bb104
+ %reg473 = add i32 %cast1155, %cast1103 ; <i32> [#uses=3]
+ %cond1158 = icmp slt i32 %reg473, 0 ; <i1> [#uses=1]
+ br i1 %cond1158, label %bb109, label %bb106
+
+bb106: ; preds = %bb105
+ %cond1161 = icmp sgt i32 %reg473, 262 ; <i1> [#uses=1]
+ br i1 %cond1161, label %bb109, label %bb107
+
+bb107: ; preds = %bb106
+ %reg473-idxcast = sext i32 %reg473 to i64 ; <i64> [#uses=2]
+ %reg1166 = getelementptr [263 x i16]* @yycheck, i64 0, i64 %reg473-idxcast ; <i16*> [#uses=1]
+ %reg428 = load i16* %reg1166 ; <i16> [#uses=1]
+ %cast1171 = sext i16 %reg428 to i32 ; <i32> [#uses=1]
+ %cond1172 = icmp ne i32 %cast1171, %cast1103 ; <i1> [#uses=1]
+ br i1 %cond1172, label %bb109, label %bb108
+
+bb108: ; preds = %bb107
+ %reg1175 = getelementptr [263 x i16]* @yytable, i64 0, i64 %reg473-idxcast ; <i16*> [#uses=1]
+ %reg435 = load i16* %reg1175 ; <i16> [#uses=1]
+ %cast1180 = sext i16 %reg435 to i32 ; <i32> [#uses=1]
+ br label %bb110
+
+bb109: ; preds = %bb107, %bb106, %bb105, %bb104
+ %reg1183 = getelementptr [12 x i16]* @yydgoto, i64 0, i64 %reg398-idxcast ; <i16*> [#uses=1]
+ %reg442 = load i16* %reg1183 ; <i16> [#uses=1]
+ %cast1188 = sext i16 %reg442 to i32 ; <i32> [#uses=1]
+ br label %bb110
+
+bb110: ; preds = %bb109, %bb108
+ %reg476 = phi i32 [ %cast1188, %bb109 ], [ %cast1180, %bb108 ] ; <i32> [#uses=2]
+ %cast1189 = bitcast i16* %reg382 to i8* ; <i8*> [#uses=1]
+ %reg444 = load i16** @yysslim ; <i16*> [#uses=1]
+ %cast1190 = bitcast i16* %reg444 to i8* ; <i8*> [#uses=1]
+ %cond1191 = icmp ult i8* %cast1189, %cast1190 ; <i1> [#uses=1]
+ br i1 %cond1191, label %bb112, label %bb111
+
+bb111: ; preds = %bb110
+ %reg1193 = call i32 @yygrowstack( ) ; <i32> [#uses=1]
+ %cond1193 = icmp ne i32 %reg1193, 0 ; <i1> [#uses=1]
+ br i1 %cond1193, label %bb113, label %bb112
+
+bb112: ; preds = %bb111, %bb110
+ %reg446 = load i16** @yyssp ; <i16*> [#uses=1]
+ %reg1196 = getelementptr i16* %reg446, i64 1 ; <i16*> [#uses=2]
+ store i16* %reg1196, i16** @yyssp
+ %cast1357 = trunc i32 %reg476 to i16 ; <i16> [#uses=1]
+ store i16 %cast1357, i16* %reg1196
+ %reg449 = load %YYSTYPE** @yyvsp ; <%YYSTYPE*> [#uses=2]
+ %reg1202 = getelementptr %YYSTYPE* %reg449, i64 1 ; <%YYSTYPE*> [#uses=1]
+ store %YYSTYPE* %reg1202, %YYSTYPE** @yyvsp
+ %reg452 = load %IntList* getelementptr (%YYSTYPE* @yyval, i64 0, i32 0) ; <%IntList> [#uses=1]
+ %reg1202.idx1 = getelementptr %YYSTYPE* %reg449, i64 1, i32 0 ; <%IntList*> [#uses=1]
+ store %IntList %reg452, %IntList* %reg1202.idx1
+ br label %bb4
+
+bb113: ; preds = %bb111, %bb30, %bb13, %bb2
+ call void @yyerror( i8* getelementptr ([20 x i8]* @.LC1, i64 0, i64 0) )
+ br label %UnifiedExitNode
+
+UnifiedExitNode: ; preds = %bb113, %bb102, %bb34, %bb32
+ %UnifiedRetVal = phi i32 [ 1, %bb113 ], [ 1, %bb34 ], [ 1, %bb32 ], [ 0, %bb102 ] ; <i32> [#uses=1]
+ ret i32 %UnifiedRetVal
+}
+
+declare %List @newList(i8*, %List)
+
+declare %IntList @newIntList(i32, %IntList)
+
+declare void @doStart(i8*)
+
+declare void @yyerror(i8*)
+
+declare void @doSpec(%List, %List)
+
+declare %Arity @newArity(i32, %List)
+
+declare %Binding @newBinding(i8*, i32)
+
+declare %PatternAST @newPatternAST(i8*, %List)
+
+declare %RuleAST @newRuleAST(i8*, %PatternAST, i32, %IntList)
+
+declare void @yyfinished()
+
+declare i32 @yylex()
+
+declare void @doGram(%List)
+
+declare i32 @yygrowstack()
diff --git a/test/CodeGen/Generic/ConstantExprLowering.ll b/test/CodeGen/Generic/ConstantExprLowering.ll
new file mode 100644
index 0000000000000..d26541596da5b
--- /dev/null
+++ b/test/CodeGen/Generic/ConstantExprLowering.ll
@@ -0,0 +1,22 @@
+; RUN: llvm-as < %s | llc
+
+@.str_1 = internal constant [16 x i8] c"%d %d %d %d %d\0A\00" ; <[16 x i8]*> [#uses=1]
+@XA = external global i32 ; <i32*> [#uses=1]
+@XB = external global i32 ; <i32*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define void @test(i32 %A, i32 %B, i32 %C, i32 %D) {
+entry:
+ %t1 = icmp slt i32 %A, 0 ; <i1> [#uses=1]
+ br i1 %t1, label %less, label %not_less
+
+less: ; preds = %entry
+ br label %not_less
+
+not_less: ; preds = %less, %entry
+ %t2 = phi i32 [ sub (i32 ptrtoint (i32* @XA to i32), i32 ptrtoint (i32* @XB to i32)), %less ], [ sub (i32 ptrtoint (i32* @XA to i32), i32 ptrtoint (i32* @XB to i32)), %entry ] ; <i32> [#uses=1]
+ %tmp.39 = call i32 (i8*, ...)* @printf( i8* getelementptr ([16 x i8]* @.str_1, i64 0, i64 0), i32 %t2 ) ; <i32> [#uses=0]
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/GC/alloc_loop.ll b/test/CodeGen/Generic/GC/alloc_loop.ll
new file mode 100644
index 0000000000000..b1fee68abab8d
--- /dev/null
+++ b/test/CodeGen/Generic/GC/alloc_loop.ll
@@ -0,0 +1,53 @@
+; RUN: llvm-as < %s | llc
+
+
+declare i8* @llvm_gc_allocate(i32)
+declare void @llvm_gc_initialize(i32)
+
+declare void @llvm.gcroot(i8**, i8*)
+declare void @llvm.gcwrite(i8*, i8*, i8**)
+
+define i32 @main() gc "shadow-stack" {
+entry:
+ %A = alloca i8*
+ %B = alloca i8**
+
+ call void @llvm_gc_initialize(i32 1048576) ; Start with 1MB heap
+
+ ;; void *A;
+ call void @llvm.gcroot(i8** %A, i8* null)
+
+ ;; A = gcalloc(10);
+ %Aptr = call i8* @llvm_gc_allocate(i32 10)
+ store i8* %Aptr, i8** %A
+
+ ;; void **B;
+ %tmp.1 = bitcast i8*** %B to i8**
+ call void @llvm.gcroot(i8** %tmp.1, i8* null)
+
+ ;; B = gcalloc(4);
+ %B.upgrd.1 = call i8* @llvm_gc_allocate(i32 8)
+ %tmp.2 = bitcast i8* %B.upgrd.1 to i8**
+ store i8** %tmp.2, i8*** %B
+
+ ;; *B = A;
+ %B.1 = load i8*** %B
+ %A.1 = load i8** %A
+ call void @llvm.gcwrite(i8* %A.1, i8* %B.upgrd.1, i8** %B.1)
+
+ br label %AllocLoop
+
+AllocLoop:
+ %i = phi i32 [ 0, %entry ], [ %indvar.next, %AllocLoop ]
+ ;; Allocated mem: allocated memory is immediately dead.
+ call i8* @llvm_gc_allocate(i32 100)
+
+ %indvar.next = add i32 %i, 1
+ %exitcond = icmp eq i32 %indvar.next, 10000000
+ br i1 %exitcond, label %Exit, label %AllocLoop
+
+Exit:
+ ret i32 0
+}
+
+declare void @__main()
diff --git a/test/CodeGen/Generic/GC/argpromotion.ll b/test/CodeGen/Generic/GC/argpromotion.ll
new file mode 100644
index 0000000000000..5df947a9fb12a
--- /dev/null
+++ b/test/CodeGen/Generic/GC/argpromotion.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | opt -anders-aa -argpromotion
+
+declare void @llvm.gcroot(i8**, i8*)
+
+define i32 @g() {
+entry:
+ %var = alloca i32
+ store i32 1, i32* %var
+ %x = call i32 @f(i32* %var)
+ ret i32 %x
+}
+
+define internal i32 @f(i32* %xp) gc "example" {
+entry:
+ %var = alloca i8*
+ call void @llvm.gcroot(i8** %var, i8* null)
+ %x = load i32* %xp
+ ret i32 %x
+}
diff --git a/test/CodeGen/Generic/GC/badreadproto.ll b/test/CodeGen/Generic/GC/badreadproto.ll
new file mode 100644
index 0000000000000..4fe90b90833a1
--- /dev/null
+++ b/test/CodeGen/Generic/GC/badreadproto.ll
@@ -0,0 +1,13 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+ %list = type { i32, %list* }
+
+; This usage is invalid now; instead, objects must be bitcast to i8* for input
+; to the gc intrinsics.
+declare %list* @llvm.gcread(%list*, %list**)
+
+define %list* @tl(%list* %l) gc "example" {
+ %hd.ptr = getelementptr %list* %l, i32 0, i32 0
+ %hd = call %list* @llvm.gcread(%list* %l, %list** %hd.ptr)
+ ret i32 %tmp
+}
diff --git a/test/CodeGen/Generic/GC/badrootproto.ll b/test/CodeGen/Generic/GC/badrootproto.ll
new file mode 100644
index 0000000000000..ff86d03c646a2
--- /dev/null
+++ b/test/CodeGen/Generic/GC/badrootproto.ll
@@ -0,0 +1,13 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+ %list = type { i32, %list* }
+ %meta = type opaque
+
+; This usage is invalid now; instead, objects must be bitcast to i8* for input
+; to the gc intrinsics.
+declare void @llvm.gcroot(%list*, %meta*)
+
+define void @root() gc "example" {
+ %x.var = alloca i8*
+ call void @llvm.gcroot(i8** %x.var, %meta* null)
+}
diff --git a/test/CodeGen/Generic/GC/badwriteproto.ll b/test/CodeGen/Generic/GC/badwriteproto.ll
new file mode 100644
index 0000000000000..be81f842672e1
--- /dev/null
+++ b/test/CodeGen/Generic/GC/badwriteproto.ll
@@ -0,0 +1,22 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+ %list = type { i32, %list* }
+
+; This usage is invalid now; instead, objects must be bitcast to i8* for input
+; to the gc intrinsics.
+declare void @llvm.gcwrite(%list*, %list*, %list**)
+
+define %list* @cons(i32 %hd, %list* %tl) gc "example" {
+ %tmp = call i8* @gcalloc(i32 bitcast(%list* getelementptr(%list* null, i32 1) to i32))
+ %cell = bitcast i8* %tmp to %list*
+
+ %hd.ptr = getelementptr %list* %cell, i32 0, i32 0
+ store i32 %hd, i32* %hd.ptr
+
+ %tl.ptr = getelementptr %list* %cell, i32 0, i32 0
+ call void @llvm.gcwrite(%list* %tl, %list* %cell, %list** %tl.ptr)
+
+ ret %cell.2
+}
+
+declare i8* @gcalloc(i32)
diff --git a/test/CodeGen/Generic/GC/deadargelim.ll b/test/CodeGen/Generic/GC/deadargelim.ll
new file mode 100644
index 0000000000000..c5a56f600dd0e
--- /dev/null
+++ b/test/CodeGen/Generic/GC/deadargelim.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as < %s | opt -deadargelim
+
+declare void @llvm.gcroot(i8**, i8*)
+
+define void @g() {
+entry:
+ call void @f(i32 0)
+ ret void
+}
+
+define internal void @f(i32 %unused) gc "example" {
+entry:
+ %var = alloca i8*
+ call void @llvm.gcroot(i8** %var, i8* null)
+ ret void
+}
diff --git a/test/CodeGen/Generic/GC/dg.exp b/test/CodeGen/Generic/GC/dg.exp
new file mode 100644
index 0000000000000..f2005891a59a8
--- /dev/null
+++ b/test/CodeGen/Generic/GC/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]
diff --git a/test/CodeGen/Generic/GC/fat.ll b/test/CodeGen/Generic/GC/fat.ll
new file mode 100644
index 0000000000000..d05ca3da8195a
--- /dev/null
+++ b/test/CodeGen/Generic/GC/fat.ll
@@ -0,0 +1,10 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+declare void @llvm.gcroot(i8**, i8*) nounwind
+
+define void @f() gc "x" {
+ %st = alloca { i8*, i1 } ; <{ i8*, i1 }*> [#uses=1]
+ %st_ptr = bitcast { i8*, i1 }* %st to i8** ; <i8**> [#uses=1]
+ call void @llvm.gcroot(i8** %st_ptr, i8* null)
+ ret void
+}
diff --git a/test/CodeGen/Generic/GC/frame_size.ll b/test/CodeGen/Generic/GC/frame_size.ll
new file mode 100644
index 0000000000000..75626c18c5b17
--- /dev/null
+++ b/test/CodeGen/Generic/GC/frame_size.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | llc -asm-verbose | grep {frame size} | grep -v 0x0
+
+declare void @llvm.gcroot(i8** %value, i8* %tag)
+declare void @g() gc "ocaml"
+
+define void @f(i8* %arg.0, void()* %arg.1) gc "ocaml" {
+entry:
+ %gcroot.0 = alloca i8*
+ call void @llvm.gcroot(i8** %gcroot.0, i8* null)
+ store i8* %arg.0, i8** %gcroot.0
+ call void @g()
+ call void %arg.1()
+ ret void
+}
diff --git a/test/CodeGen/Generic/GC/inline.ll b/test/CodeGen/Generic/GC/inline.ll
new file mode 100644
index 0000000000000..157e19d2d9297
--- /dev/null
+++ b/test/CodeGen/Generic/GC/inline.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-as < %s | opt -inline | llvm-dis | grep example
+
+ %IntArray = type { i32, [0 x i32*] }
+
+declare void @llvm.gcroot(i8**, i8*) nounwind
+
+define i32 @f() {
+ %x = call i32 @g( ) ; <i32> [#uses=1]
+ ret i32 %x
+}
+
+define internal i32 @g() gc "example" {
+ %root = alloca i8* ; <i8**> [#uses=2]
+ call void @llvm.gcroot( i8** %root, i8* null )
+ %obj = call %IntArray* @h( ) ; <%IntArray*> [#uses=2]
+ %obj.2 = bitcast %IntArray* %obj to i8* ; <i8*> [#uses=1]
+ store i8* %obj.2, i8** %root
+ %Length.ptr = getelementptr %IntArray* %obj, i32 0, i32 0 ; <i32*> [#uses=1]
+ %Length = load i32* %Length.ptr ; <i32> [#uses=1]
+ ret i32 %Length
+}
+
+declare %IntArray* @h()
diff --git a/test/CodeGen/Generic/GC/inline2.ll b/test/CodeGen/Generic/GC/inline2.ll
new file mode 100644
index 0000000000000..b45ef7c47f526
--- /dev/null
+++ b/test/CodeGen/Generic/GC/inline2.ll
@@ -0,0 +1,24 @@
+; RUN: llvm-as < %s | opt -inline | llvm-dis | grep sample
+; RUN: llvm-as < %s | opt -inline | llvm-dis | grep example
+
+ %IntArray = type { i32, [0 x i32*] }
+
+declare void @llvm.gcroot(i8**, i8*) nounwind
+
+define i32 @f() gc "sample" {
+ %x = call i32 @g( ) ; <i32> [#uses=1]
+ ret i32 %x
+}
+
+define internal i32 @g() gc "example" {
+ %root = alloca i8* ; <i8**> [#uses=2]
+ call void @llvm.gcroot( i8** %root, i8* null )
+ %obj = call %IntArray* @h( ) ; <%IntArray*> [#uses=2]
+ %obj.2 = bitcast %IntArray* %obj to i8* ; <i8*> [#uses=1]
+ store i8* %obj.2, i8** %root
+ %Length.ptr = getelementptr %IntArray* %obj, i32 0, i32 0 ; <i32*> [#uses=1]
+ %Length = load i32* %Length.ptr ; <i32> [#uses=1]
+ ret i32 %Length
+}
+
+declare %IntArray* @h()
diff --git a/test/CodeGen/Generic/GC/lower_gcroot.ll b/test/CodeGen/Generic/GC/lower_gcroot.ll
new file mode 100644
index 0000000000000..bd5a2bd14b4e6
--- /dev/null
+++ b/test/CodeGen/Generic/GC/lower_gcroot.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc
+
+ %Env = type i8*
+
+define void @.main(%Env) gc "shadow-stack" {
+ %Root = alloca %Env
+ call void @llvm.gcroot( %Env* %Root, %Env null )
+ unreachable
+}
+
+declare void @llvm.gcroot(%Env*, %Env)
diff --git a/test/CodeGen/Generic/GC/outside.ll b/test/CodeGen/Generic/GC/outside.ll
new file mode 100644
index 0000000000000..2968c6917ce14
--- /dev/null
+++ b/test/CodeGen/Generic/GC/outside.ll
@@ -0,0 +1,10 @@
+; RUN: not llvm-as < %s >& /dev/null
+
+declare void @llvm.gcroot(i8**, i8*)
+
+define void @f(i8* %x) {
+ %root = alloca i8*
+ call void @llvm.gcroot(i8** %root, i8* null)
+ store i8* %x, i8** %root
+ ret void
+}
diff --git a/test/CodeGen/Generic/GC/redundant_init.ll b/test/CodeGen/Generic/GC/redundant_init.ll
new file mode 100644
index 0000000000000..44996034748bd
--- /dev/null
+++ b/test/CodeGen/Generic/GC/redundant_init.ll
@@ -0,0 +1,17 @@
+; RUN: llvm-as < %s | llc -march=x86 | \
+; RUN: ignore grep {movl..0} | count 0
+
+%struct.obj = type { i8*, %struct.obj* }
+
+declare void @g() gc "shadow-stack"
+
+define void @f(i8* %o) gc "shadow-stack" {
+entry:
+ %root = alloca i8*
+ call void @llvm.gcroot(i8** %root, i8* null)
+ store i8* %o, i8** %root
+ call void @g()
+ ret void
+}
+
+declare void @llvm.gcroot(i8**, i8*)
diff --git a/test/CodeGen/Generic/GC/simple_ocaml.ll b/test/CodeGen/Generic/GC/simple_ocaml.ll
new file mode 100644
index 0000000000000..a33e0351f7fd8
--- /dev/null
+++ b/test/CodeGen/Generic/GC/simple_ocaml.ll
@@ -0,0 +1,42 @@
+; RUN: llvm-as < %s | llc | grep caml.*__frametable
+; RUN: llvm-as < %s | llc -march=x86 | grep {movl .0}
+
+%struct.obj = type { i8*, %struct.obj* }
+
+define %struct.obj* @fun(%struct.obj* %head) gc "ocaml" {
+entry:
+ %gcroot.0 = alloca i8*
+ %gcroot.1 = alloca i8*
+
+ call void @llvm.gcroot(i8** %gcroot.0, i8* null)
+ call void @llvm.gcroot(i8** %gcroot.1, i8* null)
+
+ %local.0 = bitcast i8** %gcroot.0 to %struct.obj**
+ %local.1 = bitcast i8** %gcroot.1 to %struct.obj**
+
+ store %struct.obj* %head, %struct.obj** %local.0
+ br label %bb.loop
+bb.loop:
+ %t0 = load %struct.obj** %local.0
+ %t1 = getelementptr %struct.obj* %t0, i32 0, i32 1
+ %t2 = bitcast %struct.obj* %t0 to i8*
+ %t3 = bitcast %struct.obj** %t1 to i8**
+ %t4 = call i8* @llvm.gcread(i8* %t2, i8** %t3)
+ %t5 = bitcast i8* %t4 to %struct.obj*
+ %t6 = icmp eq %struct.obj* %t5, null
+ br i1 %t6, label %bb.loop, label %bb.end
+bb.end:
+ %t7 = malloc %struct.obj
+ store %struct.obj* %t7, %struct.obj** %local.1
+ %t8 = bitcast %struct.obj* %t7 to i8*
+ %t9 = load %struct.obj** %local.0
+ %t10 = getelementptr %struct.obj* %t9, i32 0, i32 1
+ %t11 = bitcast %struct.obj* %t9 to i8*
+ %t12 = bitcast %struct.obj** %t10 to i8**
+ call void @llvm.gcwrite(i8* %t8, i8* %t11, i8** %t12)
+ ret %struct.obj* %t7
+}
+
+declare void @llvm.gcroot(i8** %value, i8* %tag)
+declare void @llvm.gcwrite(i8* %value, i8* %obj, i8** %field)
+declare i8* @llvm.gcread(i8* %obj, i8** %field)
diff --git a/test/CodeGen/Generic/Makefile b/test/CodeGen/Generic/Makefile
new file mode 100644
index 0000000000000..d228f69a85661
--- /dev/null
+++ b/test/CodeGen/Generic/Makefile
@@ -0,0 +1,23 @@
+# Makefile for running ad-hoc custom LLVM tests
+#
+%.bc: %.ll
+ llvm-as -f $<
+
+%.llc.s: %.bc
+ llc -f $< -o $@
+
+%.gcc.s: %.c
+ gcc -O0 -S $< -o $@
+
+%.nat: %.s
+ gcc -O0 -lm $< -o $@
+
+%.cbe.out: %.cbe.nat
+ ./$< > $@
+
+%.out: %.nat
+ ./$< > $@
+
+%.clean:
+ rm -f $(patsubst %.clean,%.bc,$@) $(patsubst %.clean,%.*.s,$@) \
+ $(patsubst %.clean,%.*.nat,$@) $(patsubst %.clean,%.*.out,$@)
diff --git a/test/CodeGen/Generic/SwitchLowering.ll b/test/CodeGen/Generic/SwitchLowering.ll
new file mode 100644
index 0000000000000..9fdfd8d5f63e9
--- /dev/null
+++ b/test/CodeGen/Generic/SwitchLowering.ll
@@ -0,0 +1,28 @@
+; RUN: llvm-as < %s | llc -march=x86 | grep cmp | count 1
+; PR964
+
+define i8* @FindChar(i8* %CurPtr) {
+entry:
+ br label %bb
+
+bb: ; preds = %bb, %entry
+ %indvar = phi i32 [ 0, %entry ], [ %indvar.next, %bb ] ; <i32> [#uses=3]
+ %CurPtr_addr.0.rec = bitcast i32 %indvar to i32 ; <i32> [#uses=1]
+ %gep.upgrd.1 = zext i32 %indvar to i64 ; <i64> [#uses=1]
+ %CurPtr_addr.0 = getelementptr i8* %CurPtr, i64 %gep.upgrd.1 ; <i8*> [#uses=1]
+ %tmp = load i8* %CurPtr_addr.0 ; <i8> [#uses=3]
+ %tmp2.rec = add i32 %CurPtr_addr.0.rec, 1 ; <i32> [#uses=1]
+ %tmp2 = getelementptr i8* %CurPtr, i32 %tmp2.rec ; <i8*> [#uses=1]
+ %indvar.next = add i32 %indvar, 1 ; <i32> [#uses=1]
+ switch i8 %tmp, label %bb [
+ i8 0, label %bb7
+ i8 120, label %bb7
+ ]
+
+bb7: ; preds = %bb, %bb
+ tail call void @foo( i8 %tmp )
+ ret i8* %tmp2
+}
+
+declare void @foo(i8)
+
diff --git a/test/CodeGen/Generic/add-with-overflow-24.ll b/test/CodeGen/Generic/add-with-overflow-24.ll
new file mode 100644
index 0000000000000..debdeb25af07e
--- /dev/null
+++ b/test/CodeGen/Generic/add-with-overflow-24.ll
@@ -0,0 +1,42 @@
+; RUN: llvm-as < %s | llc
+
+@ok = internal constant [4 x i8] c"%d\0A\00"
+@no = internal constant [4 x i8] c"no\0A\00"
+
+define i1 @func1(i24 signext %v1, i24 signext %v2) nounwind {
+entry:
+ %t = call {i24, i1} @llvm.sadd.with.overflow.i24(i24 %v1, i24 %v2)
+ %sum = extractvalue {i24, i1} %t, 0
+ %sum32 = sext i24 %sum to i32
+ %obit = extractvalue {i24, i1} %t, 1
+ br i1 %obit, label %overflow, label %normal
+
+normal:
+ %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum32 ) nounwind
+ ret i1 true
+
+overflow:
+ %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
+ ret i1 false
+}
+
+define i1 @func2(i24 zeroext %v1, i24 zeroext %v2) nounwind {
+entry:
+ %t = call {i24, i1} @llvm.uadd.with.overflow.i24(i24 %v1, i24 %v2)
+ %sum = extractvalue {i24, i1} %t, 0
+ %sum32 = zext i24 %sum to i32
+ %obit = extractvalue {i24, i1} %t, 1
+ br i1 %obit, label %carry, label %normal
+
+normal:
+ %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum32 ) nounwind
+ ret i1 true
+
+carry:
+ %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
+ ret i1 false
+}
+
+declare i32 @printf(i8*, ...) nounwind
+declare {i24, i1} @llvm.sadd.with.overflow.i24(i24, i24)
+declare {i24, i1} @llvm.uadd.with.overflow.i24(i24, i24)
diff --git a/test/CodeGen/Generic/add-with-overflow.ll b/test/CodeGen/Generic/add-with-overflow.ll
new file mode 100644
index 0000000000000..5c3d540c5cc29
--- /dev/null
+++ b/test/CodeGen/Generic/add-with-overflow.ll
@@ -0,0 +1,41 @@
+; RUN: llvm-as < %s | llc
+; RUN: llvm-as < %s | llc -fast-isel
+
+@ok = internal constant [4 x i8] c"%d\0A\00"
+@no = internal constant [4 x i8] c"no\0A\00"
+
+define i1 @func1(i32 %v1, i32 %v2) nounwind {
+entry:
+ %t = call {i32, i1} @llvm.sadd.with.overflow.i32(i32 %v1, i32 %v2)
+ %sum = extractvalue {i32, i1} %t, 0
+ %obit = extractvalue {i32, i1} %t, 1
+ br i1 %obit, label %overflow, label %normal
+
+normal:
+ %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum ) nounwind
+ ret i1 true
+
+overflow:
+ %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
+ ret i1 false
+}
+
+define i1 @func2(i32 %v1, i32 %v2) nounwind {
+entry:
+ %t = call {i32, i1} @llvm.uadd.with.overflow.i32(i32 %v1, i32 %v2)
+ %sum = extractvalue {i32, i1} %t, 0
+ %obit = extractvalue {i32, i1} %t, 1
+ br i1 %obit, label %overflow, label %normal
+
+normal:
+ %t1 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @ok, i32 0, i32 0), i32 %sum ) nounwind
+ ret i1 true
+
+overflow:
+ %t2 = tail call i32 (i8*, ...)* @printf( i8* getelementptr ([4 x i8]* @no, i32 0, i32 0) ) nounwind
+ ret i1 false
+}
+
+declare i32 @printf(i8*, ...) nounwind
+declare {i32, i1} @llvm.sadd.with.overflow.i32(i32, i32)
+declare {i32, i1} @llvm.uadd.with.overflow.i32(i32, i32)
diff --git a/test/CodeGen/Generic/addc-fold2.ll b/test/CodeGen/Generic/addc-fold2.ll
new file mode 100644
index 0000000000000..8f3cdd0793d4b
--- /dev/null
+++ b/test/CodeGen/Generic/addc-fold2.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc -march=x86 | grep add
+; RUN: llvm-as < %s | llc -march=x86 | not grep adc
+
+define i64 @test(i64 %A, i32 %B) {
+ %tmp12 = zext i32 %B to i64 ; <i64> [#uses=1]
+ %tmp3 = shl i64 %tmp12, 32 ; <i64> [#uses=1]
+ %tmp5 = add i64 %tmp3, %A ; <i64> [#uses=1]
+ ret i64 %tmp5
+}
+
diff --git a/test/CodeGen/Generic/asm-large-immediate.ll b/test/CodeGen/Generic/asm-large-immediate.ll
new file mode 100644
index 0000000000000..70649133712c0
--- /dev/null
+++ b/test/CodeGen/Generic/asm-large-immediate.ll
@@ -0,0 +1,8 @@
+; RUN: llvm-as < %s | llc | grep 68719476738
+
+define void @test() {
+entry:
+ tail call void asm sideeffect "/* result: ${0:c} */", "i,~{dirflag},~{fpsr},~{flags}"( i64 68719476738 )
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/badCallArgLRLLVM.ll b/test/CodeGen/Generic/badCallArgLRLLVM.ll
new file mode 100644
index 0000000000000..56384748ac05b
--- /dev/null
+++ b/test/CodeGen/Generic/badCallArgLRLLVM.ll
@@ -0,0 +1,31 @@
+; RUN: llvm-as < %s | llc
+
+; This caused a problem because the argument of a call was defined by
+; the return value of another call that appears later in the code.
+; When processing the first call, the second call has not yet been processed
+; so no LiveRange has been created for its return value.
+;
+; llc dies in UltraSparcRegInfo::suggestRegs4CallArgs() with:
+; ERROR: In call instr, no LR for arg: 0x1009e0740
+;
+
+declare i32 @getInt(i32)
+
+define i32 @main(i32 %argc, i8** %argv) {
+bb0:
+ br label %bb2
+
+bb1: ; preds = %bb2
+ %reg222 = call i32 @getInt( i32 %reg218 ) ; <i32> [#uses=1]
+ %reg110 = add i32 %reg222, 1 ; <i32> [#uses=2]
+ %b = icmp sle i32 %reg110, 0 ; <i1> [#uses=1]
+ br i1 %b, label %bb2, label %bb3
+
+bb2: ; preds = %bb1, %bb0
+ %reg218 = call i32 @getInt( i32 %argc ) ; <i32> [#uses=1]
+ br label %bb1
+
+bb3: ; preds = %bb1
+ ret i32 %reg110
+}
+
diff --git a/test/CodeGen/Generic/badFoldGEP.ll b/test/CodeGen/Generic/badFoldGEP.ll
new file mode 100644
index 0000000000000..8de12512d1451
--- /dev/null
+++ b/test/CodeGen/Generic/badFoldGEP.ll
@@ -0,0 +1,27 @@
+; RUN: llvm-as < %s | llc
+
+;; GetMemInstArgs() folded the two getElementPtr instructions together,
+;; producing an illegal getElementPtr. That's because the type generated
+;; by the last index for the first one is a structure field, not an array
+;; element, and the second one indexes off that structure field.
+;; The code is legal but not type-safe and the two GEPs should not be folded.
+;;
+;; This code fragment is from Spec/CINT2000/197.parser/197.parser.bc,
+;; file post_process.c, function build_domain().
+;; (Modified to replace store with load and return load value.)
+;;
+ %Domain = type { i8*, i32, i32*, i32, i32, i32*, %Domain* }
+@domain_array = external global [497 x %Domain] ; <[497 x %Domain]*> [#uses=2]
+
+declare void @opaque([497 x %Domain]*)
+
+define i32 @main(i32 %argc, i8** %argv) {
+bb0:
+ call void @opaque( [497 x %Domain]* @domain_array )
+ %cann-indvar-idxcast = sext i32 %argc to i64 ; <i64> [#uses=1]
+ %reg841 = getelementptr [497 x %Domain]* @domain_array, i64 0, i64 %cann-indvar-idxcast, i32 3 ; <i32*> [#uses=1]
+ %reg846 = getelementptr i32* %reg841, i64 1 ; <i32*> [#uses=1]
+ %reg820 = load i32* %reg846 ; <i32> [#uses=1]
+ ret i32 %reg820
+}
+
diff --git a/test/CodeGen/Generic/badarg6.ll b/test/CodeGen/Generic/badarg6.ll
new file mode 100644
index 0000000000000..1ff7df42a3484
--- /dev/null
+++ b/test/CodeGen/Generic/badarg6.ll
@@ -0,0 +1,32 @@
+; RUN: llvm-as < %s | llc
+
+; On this code, llc did not pass the sixth argument (%reg321) to printf.
+; It passed the first five in %o0 - %o4, but never initialized %o5.
+@.LC12 = internal global [44 x i8] c"\09\09M = %g, I = %g, V = %g\0A\09\09O = %g, E = %g\0A\0A\00" ; <[44 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+declare double @opaque(double)
+
+define i32 @main(i32 %argc, i8** %argv) {
+bb25:
+ %b = icmp sle i32 %argc, 2 ; <i1> [#uses=1]
+ br i1 %b, label %bb42, label %bb43
+
+bb42: ; preds = %bb25
+ %reg315 = call double @opaque( double 3.000000e+00 ) ; <double> [#uses=1]
+ %reg316 = call double @opaque( double 3.100000e+00 ) ; <double> [#uses=1]
+ %reg317 = call double @opaque( double 3.200000e+00 ) ; <double> [#uses=1]
+ %reg318 = call double @opaque( double 3.300000e+00 ) ; <double> [#uses=1]
+ %reg319 = call double @opaque( double 3.400000e+00 ) ; <double> [#uses=1]
+ br label %bb43
+
+bb43: ; preds = %bb42, %bb25
+ %reg321 = phi double [ 2.000000e-01, %bb25 ], [ %reg315, %bb42 ] ; <double> [#uses=1]
+ %reg322 = phi double [ 6.000000e+00, %bb25 ], [ %reg316, %bb42 ] ; <double> [#uses=1]
+ %reg323 = phi double [ -1.000000e+00, %bb25 ], [ %reg317, %bb42 ] ; <double> [#uses=1]
+ %reg324 = phi double [ -1.000000e+00, %bb25 ], [ %reg318, %bb42 ] ; <double> [#uses=1]
+ %reg325 = phi double [ 1.000000e+00, %bb25 ], [ %reg319, %bb42 ] ; <double> [#uses=1]
+ %reg609 = call i32 (i8*, ...)* @printf( i8* getelementptr ([44 x i8]* @.LC12, i64 0, i64 0), double %reg325, double %reg324, double %reg323, double %reg322, double %reg321 ) ; <i32> [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/badlive.ll b/test/CodeGen/Generic/badlive.ll
new file mode 100644
index 0000000000000..0114fb0fa0603
--- /dev/null
+++ b/test/CodeGen/Generic/badlive.ll
@@ -0,0 +1,28 @@
+; RUN: llvm-as < %s | llc
+
+define i32 @main() {
+bb0:
+ %reg109 = malloc i32, i32 100 ; <i32*> [#uses=2]
+ br label %bb2
+
+bb2: ; preds = %bb2, %bb0
+ %cann-indvar1 = phi i32 [ 0, %bb0 ], [ %add1-indvar1, %bb2 ] ; <i32> [#uses=2]
+ %reg127 = mul i32 %cann-indvar1, 2 ; <i32> [#uses=1]
+ %add1-indvar1 = add i32 %cann-indvar1, 1 ; <i32> [#uses=1]
+ store i32 999, i32* %reg109
+ %cond1015 = icmp sle i32 1, 99 ; <i1> [#uses=1]
+ %reg128 = add i32 %reg127, 2 ; <i32> [#uses=0]
+ br i1 %cond1015, label %bb2, label %bb4
+
+bb4: ; preds = %bb4, %bb2
+ %cann-indvar = phi i32 [ %add1-indvar, %bb4 ], [ 0, %bb2 ] ; <i32> [#uses=1]
+ %add1-indvar = add i32 %cann-indvar, 1 ; <i32> [#uses=2]
+ store i32 333, i32* %reg109
+ %reg131 = add i32 %add1-indvar, 3 ; <i32> [#uses=1]
+ %cond1017 = icmp ule i32 %reg131, 99 ; <i1> [#uses=1]
+ br i1 %cond1017, label %bb4, label %bb5
+
+bb5: ; preds = %bb4
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/bit-intrinsics.ll b/test/CodeGen/Generic/bit-intrinsics.ll
new file mode 100644
index 0000000000000..95410114bf57d
--- /dev/null
+++ b/test/CodeGen/Generic/bit-intrinsics.ll
@@ -0,0 +1,32 @@
+; Make sure this testcase is supported by all code generators. Either the
+; intrinsic is supported natively or IntrinsicLowering provides it.
+; RUN: llvm-as < %s > %t.bc
+; RUN: lli --force-interpreter=true %t.bc
+
+declare i32 @llvm.part.set.i32.i32(i32 %x, i32 %rep, i32 %hi, i32 %lo)
+declare i16 @llvm.part.set.i16.i16(i16 %x, i16 %rep, i32 %hi, i32 %lo)
+define i32 @test_part_set(i32 %A, i16 %B) {
+ %a = call i32 @llvm.part.set.i32.i32(i32 %A, i32 27, i32 8, i32 0)
+ %b = call i16 @llvm.part.set.i16.i16(i16 %B, i16 27, i32 8, i32 0)
+ %c = zext i16 %b to i32
+ %d = add i32 %a, %c
+ ret i32 %d
+}
+
+declare i32 @llvm.part.select.i32(i32 %x, i32 %hi, i32 %lo)
+declare i16 @llvm.part.select.i16(i16 %x, i32 %hi, i32 %lo)
+define i32 @test_part_select(i32 %A, i16 %B) {
+ %a = call i32 @llvm.part.select.i32(i32 %A, i32 8, i32 0)
+ %b = call i16 @llvm.part.select.i16(i16 %B, i32 8, i32 0)
+ %c = zext i16 %b to i32
+ %d = add i32 %a, %c
+ ret i32 %d
+}
+
+define i32 @main(i32 %argc, i8** %argv) {
+ %a = call i32 @test_part_set(i32 23, i16 57)
+ %b = call i32 @test_part_select(i32 23, i16 57)
+ %c = add i32 %a, %b
+ %d = urem i32 %c, 1
+ ret i32 %d
+}
diff --git a/test/CodeGen/Generic/bool-to-double.ll b/test/CodeGen/Generic/bool-to-double.ll
new file mode 100644
index 0000000000000..d6c9e52395164
--- /dev/null
+++ b/test/CodeGen/Generic/bool-to-double.ll
@@ -0,0 +1,6 @@
+; RUN: llvm-as < %s | llc
+define double @test(i1 %X) {
+ %Y = uitofp i1 %X to double ; <double> [#uses=1]
+ ret double %Y
+}
+
diff --git a/test/CodeGen/Generic/bool-vector.ll b/test/CodeGen/Generic/bool-vector.ll
new file mode 100644
index 0000000000000..e0f2a70886a77
--- /dev/null
+++ b/test/CodeGen/Generic/bool-vector.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc
+; PR1845
+
+define void @boolVectorSelect(<4 x i1>* %boolVectorPtr) {
+Body:
+ %castPtr = bitcast <4 x i1>* %boolVectorPtr to <4 x i1>*
+ %someBools = load <4 x i1>* %castPtr, align 1 ; <<4 x i1>>
+ %internal = alloca <4 x i1>, align 16 ; <<4 x i1>*> [#uses=1]
+ store <4 x i1> %someBools, <4 x i1>* %internal, align 1
+ ret void
+}
diff --git a/test/CodeGen/Generic/call-ret0.ll b/test/CodeGen/Generic/call-ret0.ll
new file mode 100644
index 0000000000000..7ab966ba90701
--- /dev/null
+++ b/test/CodeGen/Generic/call-ret0.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc
+define i32 @foo(i32 %x) {
+ ret i32 %x
+}
+
+define i32 @main() {
+ %r = call i32 @foo( i32 0 ) ; <i32> [#uses=1]
+ ret i32 %r
+}
+
diff --git a/test/CodeGen/Generic/call-ret42.ll b/test/CodeGen/Generic/call-ret42.ll
new file mode 100644
index 0000000000000..ac9bd9235794e
--- /dev/null
+++ b/test/CodeGen/Generic/call-ret42.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc
+
+define i32 @foo(i32 %x) {
+ ret i32 42
+}
+
+define i32 @main() {
+ %r = call i32 @foo( i32 15 ) ; <i32> [#uses=1]
+ ret i32 %r
+}
diff --git a/test/CodeGen/Generic/call-void.ll b/test/CodeGen/Generic/call-void.ll
new file mode 100644
index 0000000000000..b882689923968
--- /dev/null
+++ b/test/CodeGen/Generic/call-void.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc
+
+define void @foo() {
+ ret void
+}
+
+define i32 @main() {
+ call void @foo( )
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/call2-ret0.ll b/test/CodeGen/Generic/call2-ret0.ll
new file mode 100644
index 0000000000000..8c7e8920f2598
--- /dev/null
+++ b/test/CodeGen/Generic/call2-ret0.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-as < %s | llc
+
+define i32 @bar(i32 %x) {
+ ret i32 0
+}
+
+define i32 @foo(i32 %x) {
+ %q = call i32 @bar( i32 1 ) ; <i32> [#uses=1]
+ ret i32 %q
+}
+
+define i32 @main() {
+ %r = call i32 @foo( i32 2 ) ; <i32> [#uses=1]
+ ret i32 %r
+}
+
diff --git a/test/CodeGen/Generic/cast-fp.ll b/test/CodeGen/Generic/cast-fp.ll
new file mode 100644
index 0000000000000..5f05d85ea8543
--- /dev/null
+++ b/test/CodeGen/Generic/cast-fp.ll
@@ -0,0 +1,33 @@
+; RUN: llvm-as < %s | llc
+@a_fstr = internal constant [8 x i8] c"a = %f\0A\00" ; <[8 x i8]*> [#uses=1]
+@a_lstr = internal constant [10 x i8] c"a = %lld\0A\00" ; <[10 x i8]*> [#uses=1]
+@a_dstr = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@b_dstr = internal constant [8 x i8] c"b = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@b_fstr = internal constant [8 x i8] c"b = %f\0A\00" ; <[8 x i8]*> [#uses=1]
+@A = global double 2.000000e+00 ; <double*> [#uses=1]
+@B = global i32 2 ; <i32*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %a = load double* @A ; <double> [#uses=4]
+ %a_fs = getelementptr [8 x i8]* @a_fstr, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_fs, double %a ) ; <i32>:1 [#uses=0]
+ %a_d2l = fptosi double %a to i64 ; <i64> [#uses=1]
+ %a_ls = getelementptr [10 x i8]* @a_lstr, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_ls, i64 %a_d2l ) ; <i32>:2 [#uses=0]
+ %a_d2i = fptosi double %a to i32 ; <i32> [#uses=2]
+ %a_ds = getelementptr [8 x i8]* @a_dstr, i64 0, i64 0 ; <i8*> [#uses=3]
+ call i32 (i8*, ...)* @printf( i8* %a_ds, i32 %a_d2i ) ; <i32>:3 [#uses=0]
+ %a_d2sb = fptosi double %a to i8 ; <i8> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_ds, i8 %a_d2sb ) ; <i32>:4 [#uses=0]
+ %a_d2i2sb = trunc i32 %a_d2i to i8 ; <i8> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_ds, i8 %a_d2i2sb ) ; <i32>:5 [#uses=0]
+ %b = load i32* @B ; <i32> [#uses=2]
+ %b_ds = getelementptr [8 x i8]* @b_dstr, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %b_ds, i32 %b ) ; <i32>:6 [#uses=0]
+ %b_i2d = sitofp i32 %b to double ; <double> [#uses=1]
+ %b_fs = getelementptr [8 x i8]* @b_fstr, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %b_fs, double %b_i2d ) ; <i32>:7 [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/constindices.ll b/test/CodeGen/Generic/constindices.ll
new file mode 100644
index 0000000000000..6366fd59598fa
--- /dev/null
+++ b/test/CodeGen/Generic/constindices.ll
@@ -0,0 +1,44 @@
+; RUN: llvm-as < %s | llc
+
+; Test that a sequence of constant indices are folded correctly
+; into the equivalent offset at compile-time.
+
+ %MixedA = type { float, [15 x i32], i8, float }
+ %MixedB = type { float, %MixedA, float }
+@fmtArg = internal global [44 x i8] c"sqrt(2) = %g\0Aexp(1) = %g\0Api = %g\0Afive = %g\0A\00" ; <[44 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %ScalarA = alloca %MixedA ; <%MixedA*> [#uses=1]
+ %ScalarB = alloca %MixedB ; <%MixedB*> [#uses=1]
+ %ArrayA = alloca %MixedA, i32 4 ; <%MixedA*> [#uses=3]
+ %ArrayB = alloca %MixedB, i32 3 ; <%MixedB*> [#uses=2]
+ %I1 = getelementptr %MixedA* %ScalarA, i64 0, i32 0 ; <float*> [#uses=2]
+ store float 0x3FF6A09020000000, float* %I1
+ %I2 = getelementptr %MixedB* %ScalarB, i64 0, i32 1, i32 0 ; <float*> [#uses=2]
+ store float 0x4005BF1420000000, float* %I2
+ %fptrA = getelementptr %MixedA* %ArrayA, i64 1, i32 0 ; <float*> [#uses=1]
+ %fptrB = getelementptr %MixedB* %ArrayB, i64 2, i32 1, i32 0 ; <float*> [#uses=1]
+ store float 0x400921CAC0000000, float* %fptrA
+ store float 5.000000e+00, float* %fptrB
+
+ ;; Test that a sequence of GEPs with constant indices are folded right
+ %fptrA1 = getelementptr %MixedA* %ArrayA, i64 3 ; <%MixedA*> [#uses=1]
+ %fptrA2 = getelementptr %MixedA* %fptrA1, i64 0, i32 1 ; <[15 x i32]*> [#uses=1]
+ %fptrA3 = getelementptr [15 x i32]* %fptrA2, i64 0, i64 8 ; <i32*> [#uses=1]
+ store i32 5, i32* %fptrA3
+ %sqrtTwo = load float* %I1 ; <float> [#uses=1]
+ %exp = load float* %I2 ; <float> [#uses=1]
+ %I3 = getelementptr %MixedA* %ArrayA, i64 1, i32 0 ; <float*> [#uses=1]
+ %pi = load float* %I3 ; <float> [#uses=1]
+ %I4 = getelementptr %MixedB* %ArrayB, i64 2, i32 1, i32 0 ; <float*> [#uses=1]
+ %five = load float* %I4 ; <float> [#uses=1]
+ %dsqrtTwo = fpext float %sqrtTwo to double ; <double> [#uses=1]
+ %dexp = fpext float %exp to double ; <double> [#uses=1]
+ %dpi = fpext float %pi to double ; <double> [#uses=1]
+ %dfive = fpext float %five to double ; <double> [#uses=1]
+ %castFmt = getelementptr [44 x i8]* @fmtArg, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %castFmt, double %dsqrtTwo, double %dexp, double %dpi, double %dfive ) ; <i32>:1 [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/debug-info.ll b/test/CodeGen/Generic/debug-info.ll
new file mode 100644
index 0000000000000..d1bb66d1529de
--- /dev/null
+++ b/test/CodeGen/Generic/debug-info.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | llc
+
+ %lldb.compile_unit = type { i32, i16, i16, i8*, i8*, i8*, { }* }
+@d.compile_unit7 = external global %lldb.compile_unit ; <%lldb.compile_unit*> [#uses=1]
+
+declare void @llvm.dbg.stoppoint(i32, i32, %lldb.compile_unit*)
+
+define void @rb_raise(i32, ...) {
+entry:
+ br i1 false, label %strlen.exit, label %no_exit.i
+
+no_exit.i: ; preds = %entry
+ ret void
+
+strlen.exit: ; preds = %entry
+ call void @llvm.dbg.stoppoint( i32 4358, i32 0, %lldb.compile_unit* @d.compile_unit7 )
+ unreachable
+}
+
diff --git a/test/CodeGen/Generic/dg.exp b/test/CodeGen/Generic/dg.exp
new file mode 100644
index 0000000000000..f2005891a59a8
--- /dev/null
+++ b/test/CodeGen/Generic/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,c,cpp}]]
diff --git a/test/CodeGen/Generic/div-neg-power-2.ll b/test/CodeGen/Generic/div-neg-power-2.ll
new file mode 100644
index 0000000000000..3bc4899d8fddf
--- /dev/null
+++ b/test/CodeGen/Generic/div-neg-power-2.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-as < %s | llc
+
+define i32 @test(i32 %X) {
+ %Y = sdiv i32 %X, -2 ; <i32> [#uses=1]
+ ret i32 %Y
+}
+
diff --git a/test/CodeGen/Generic/empty-load-store.ll b/test/CodeGen/Generic/empty-load-store.ll
new file mode 100644
index 0000000000000..d7bb37194e49f
--- /dev/null
+++ b/test/CodeGen/Generic/empty-load-store.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llc
+; PR2612
+
+@current_foo = internal global { } zeroinitializer
+
+define i32 @foo() {
+entry:
+ %retval = alloca i32
+ store i32 0, i32* %retval
+ %local_foo = alloca { }
+ load { }* @current_foo
+ store { } %0, { }* %local_foo
+ br label %return
+
+return:
+ load i32* %retval
+ ret i32 %1
+}
diff --git a/test/CodeGen/Generic/externally_available.ll b/test/CodeGen/Generic/externally_available.ll
new file mode 100644
index 0000000000000..73b6b9825d2ca
--- /dev/null
+++ b/test/CodeGen/Generic/externally_available.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc | not grep test_
+
+; test_function should not be emitted to the .s file.
+define available_externally i32 @test_function() {
+ ret i32 4
+}
+
+; test_global should not be emitted to the .s file.
+@test_global = available_externally global i32 4
+
diff --git a/test/CodeGen/Generic/fastcall.ll b/test/CodeGen/Generic/fastcall.ll
new file mode 100644
index 0000000000000..65e66c7ef0610
--- /dev/null
+++ b/test/CodeGen/Generic/fastcall.ll
@@ -0,0 +1,14 @@
+; Test fastcc works. Test from bug 2770.
+; RUN: llvm-as < %s | llc -relocation-model=pic
+
+
+%struct.__gcov_var = type { i32 }
+@__gcov_var = external global %struct.__gcov_var
+
+define fastcc void @gcov_read_words(i32 %words) {
+entry:
+ store i32 %words, i32* getelementptr (%struct.__gcov_var*
+@__gcov_var,
+i32 0, i32 0)
+ ret void
+}
diff --git a/test/CodeGen/Generic/fneg-fabs.ll b/test/CodeGen/Generic/fneg-fabs.ll
new file mode 100644
index 0000000000000..f9580b1f309b7
--- /dev/null
+++ b/test/CodeGen/Generic/fneg-fabs.ll
@@ -0,0 +1,26 @@
+; RUN: llvm-as < %s | llc
+
+define double @fneg(double %X) {
+ %Y = sub double -0.000000e+00, %X ; <double> [#uses=1]
+ ret double %Y
+}
+
+define float @fnegf(float %X) {
+ %Y = sub float -0.000000e+00, %X ; <float> [#uses=1]
+ ret float %Y
+}
+
+declare double @fabs(double)
+
+declare float @fabsf(float)
+
+define double @fabstest(double %X) {
+ %Y = call double @fabs( double %X ) ; <double> [#uses=1]
+ ret double %Y
+}
+
+define float @fabsftest(float %X) {
+ %Y = call float @fabsf( float %X ) ; <float> [#uses=1]
+ ret float %Y
+}
+
diff --git a/test/CodeGen/Generic/fp-to-int-invalid.ll b/test/CodeGen/Generic/fp-to-int-invalid.ll
new file mode 100644
index 0000000000000..73176b14391e1
--- /dev/null
+++ b/test/CodeGen/Generic/fp-to-int-invalid.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llc
+; PR4057
+define void @test_cast_float_to_char(i8* %result) nounwind {
+entry:
+ %result_addr = alloca i8* ; <i8**> [#uses=2]
+ %test = alloca float ; <float*> [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
+ store i8* %result, i8** %result_addr
+ store float 0x40B2AFA160000000, float* %test, align 4
+ %0 = load float* %test, align 4 ; <float> [#uses=1]
+ %1 = fptosi float %0 to i8 ; <i8> [#uses=1]
+ %2 = load i8** %result_addr, align 4 ; <i8*> [#uses=1]
+ store i8 %1, i8* %2, align 1
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
diff --git a/test/CodeGen/Generic/fp_to_int.ll b/test/CodeGen/Generic/fp_to_int.ll
new file mode 100644
index 0000000000000..609de6546cfdd
--- /dev/null
+++ b/test/CodeGen/Generic/fp_to_int.ll
@@ -0,0 +1,81 @@
+; RUN: llvm-as < %s | llc
+
+define i8 @test1(double %X) {
+ %tmp.1 = fptosi double %X to i8 ; <i8> [#uses=1]
+ ret i8 %tmp.1
+}
+
+define i16 @test2(double %X) {
+ %tmp.1 = fptosi double %X to i16 ; <i16> [#uses=1]
+ ret i16 %tmp.1
+}
+
+define i32 @test3(double %X) {
+ %tmp.1 = fptosi double %X to i32 ; <i32> [#uses=1]
+ ret i32 %tmp.1
+}
+
+define i64 @test4(double %X) {
+ %tmp.1 = fptosi double %X to i64 ; <i64> [#uses=1]
+ ret i64 %tmp.1
+}
+
+define i8 @test1u(double %X) {
+ %tmp.1 = fptoui double %X to i8 ; <i8> [#uses=1]
+ ret i8 %tmp.1
+}
+
+define i16 @test2u(double %X) {
+ %tmp.1 = fptoui double %X to i16 ; <i16> [#uses=1]
+ ret i16 %tmp.1
+}
+
+define i32 @test3u(double %X) {
+ %tmp.1 = fptoui double %X to i32 ; <i32> [#uses=1]
+ ret i32 %tmp.1
+}
+
+define i64 @test4u(double %X) {
+ %tmp.1 = fptoui double %X to i64 ; <i64> [#uses=1]
+ ret i64 %tmp.1
+}
+
+define i8 @test1f(float %X) {
+ %tmp.1 = fptosi float %X to i8 ; <i8> [#uses=1]
+ ret i8 %tmp.1
+}
+
+define i16 @test2f(float %X) {
+ %tmp.1 = fptosi float %X to i16 ; <i16> [#uses=1]
+ ret i16 %tmp.1
+}
+
+define i32 @test3f(float %X) {
+ %tmp.1 = fptosi float %X to i32 ; <i32> [#uses=1]
+ ret i32 %tmp.1
+}
+
+define i64 @test4f(float %X) {
+ %tmp.1 = fptosi float %X to i64 ; <i64> [#uses=1]
+ ret i64 %tmp.1
+}
+
+define i8 @test1uf(float %X) {
+ %tmp.1 = fptoui float %X to i8 ; <i8> [#uses=1]
+ ret i8 %tmp.1
+}
+
+define i16 @test2uf(float %X) {
+ %tmp.1 = fptoui float %X to i16 ; <i16> [#uses=1]
+ ret i16 %tmp.1
+}
+
+define i32 @test3uf(float %X) {
+ %tmp.1 = fptoui float %X to i32 ; <i32> [#uses=1]
+ ret i32 %tmp.1
+}
+
+define i64 @test4uf(float %X) {
+ %tmp.1 = fptoui float %X to i64 ; <i64> [#uses=1]
+ ret i64 %tmp.1
+}
diff --git a/test/CodeGen/Generic/fpowi-promote.ll b/test/CodeGen/Generic/fpowi-promote.ll
new file mode 100644
index 0000000000000..55c2d2ad0c6fb
--- /dev/null
+++ b/test/CodeGen/Generic/fpowi-promote.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc
+; RUN: llvm-as < %s | llc -march=x86 -mcpu=i386
+
+; PR1239
+
+define float @test(float %tmp23302331, i32 %tmp23282329 ) {
+
+%tmp2339 = call float @llvm.powi.f32( float %tmp23302331, i32 %tmp23282329 )
+ ret float %tmp2339
+}
+
+declare float @llvm.powi.f32(float,i32)
diff --git a/test/CodeGen/Generic/fwdtwice.ll b/test/CodeGen/Generic/fwdtwice.ll
new file mode 100644
index 0000000000000..05e831af6be2c
--- /dev/null
+++ b/test/CodeGen/Generic/fwdtwice.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-as < %s | llc
+
+;;
+;; Test the sequence:
+;; cast -> setle 0, %cast -> br %cond
+;; This sequence should cause the cast value to be forwarded twice,
+;; i.e., cast is forwarded to the setle and the setle is forwarded
+;; to the branch.
+;; register argument of the "branch-on-register" instruction, i.e.,
+;;
+;; This produces the bogus output instruction:
+;; brlez <NULL VALUE>, .L_SumArray_bb3.
+;; This came from %bb1 of sumarrray.ll generated from sumarray.c.
+
+define i32 @SumArray(i32 %Num) {
+ %Num.upgrd.1 = alloca i32 ; <i32*> [#uses=2]
+ br label %Top
+
+Top: ; preds = %Top, %0
+ store i32 %Num, i32* %Num.upgrd.1
+ %reg108 = load i32* %Num.upgrd.1 ; <i32> [#uses=1]
+ %cast1006 = bitcast i32 %reg108 to i32 ; <i32> [#uses=1]
+ %cond1001 = icmp ule i32 %cast1006, 0 ; <i1> [#uses=1]
+ br i1 %cond1001, label %bb6, label %Top
+
+bb6: ; preds = %Top
+ ret i32 42
+}
+
diff --git a/test/CodeGen/Generic/getresult-undef.ll b/test/CodeGen/Generic/getresult-undef.ll
new file mode 100644
index 0000000000000..7905ff52ef613
--- /dev/null
+++ b/test/CodeGen/Generic/getresult-undef.ll
@@ -0,0 +1,6 @@
+; RUN: llvm-as < %s | llc
+
+define double @foo() {
+ %t = getresult {double, double} undef, 1
+ ret double %t
+}
diff --git a/test/CodeGen/Generic/global-ret0.ll b/test/CodeGen/Generic/global-ret0.ll
new file mode 100644
index 0000000000000..8fcef33a34d70
--- /dev/null
+++ b/test/CodeGen/Generic/global-ret0.ll
@@ -0,0 +1,8 @@
+; RUN: llvm-as < %s | llc
+
+@g = global i32 0 ; <i32*> [#uses=1]
+
+define i32 @main() {
+ %h = load i32* @g ; <i32> [#uses=1]
+ ret i32 %h
+}
diff --git a/test/CodeGen/Generic/hello.ll b/test/CodeGen/Generic/hello.ll
new file mode 100644
index 0000000000000..705423f973cfb
--- /dev/null
+++ b/test/CodeGen/Generic/hello.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc
+
+@.str_1 = internal constant [7 x i8] c"hello\0A\00" ; <[7 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %s = getelementptr [7 x i8]* @.str_1, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %s ) ; <i32>:1 [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/i128-addsub.ll b/test/CodeGen/Generic/i128-addsub.ll
new file mode 100644
index 0000000000000..10f0acc363089
--- /dev/null
+++ b/test/CodeGen/Generic/i128-addsub.ll
@@ -0,0 +1,39 @@
+; RUN: llvm-as < %s | llc
+
+define void @test_add(i64 %AL, i64 %AH, i64 %BL, i64 %BH, i64* %RL, i64* %RH) {
+entry:
+ %tmp1 = zext i64 %AL to i128 ; <i128> [#uses=1]
+ %tmp23 = zext i64 %AH to i128 ; <i128> [#uses=1]
+ %tmp4 = shl i128 %tmp23, 64 ; <i128> [#uses=1]
+ %tmp5 = or i128 %tmp4, %tmp1 ; <i128> [#uses=1]
+ %tmp67 = zext i64 %BL to i128 ; <i128> [#uses=1]
+ %tmp89 = zext i64 %BH to i128 ; <i128> [#uses=1]
+ %tmp11 = shl i128 %tmp89, 64 ; <i128> [#uses=1]
+ %tmp12 = or i128 %tmp11, %tmp67 ; <i128> [#uses=1]
+ %tmp15 = add i128 %tmp12, %tmp5 ; <i128> [#uses=2]
+ %tmp1617 = trunc i128 %tmp15 to i64 ; <i64> [#uses=1]
+ store i64 %tmp1617, i64* %RL
+ %tmp21 = lshr i128 %tmp15, 64 ; <i128> [#uses=1]
+ %tmp2122 = trunc i128 %tmp21 to i64 ; <i64> [#uses=1]
+ store i64 %tmp2122, i64* %RH
+ ret void
+}
+
+define void @test_sub(i64 %AL, i64 %AH, i64 %BL, i64 %BH, i64* %RL, i64* %RH) {
+entry:
+ %tmp1 = zext i64 %AL to i128 ; <i128> [#uses=1]
+ %tmp23 = zext i64 %AH to i128 ; <i128> [#uses=1]
+ %tmp4 = shl i128 %tmp23, 64 ; <i128> [#uses=1]
+ %tmp5 = or i128 %tmp4, %tmp1 ; <i128> [#uses=1]
+ %tmp67 = zext i64 %BL to i128 ; <i128> [#uses=1]
+ %tmp89 = zext i64 %BH to i128 ; <i128> [#uses=1]
+ %tmp11 = shl i128 %tmp89, 64 ; <i128> [#uses=1]
+ %tmp12 = or i128 %tmp11, %tmp67 ; <i128> [#uses=1]
+ %tmp15 = sub i128 %tmp5, %tmp12 ; <i128> [#uses=2]
+ %tmp1617 = trunc i128 %tmp15 to i64 ; <i64> [#uses=1]
+ store i64 %tmp1617, i64* %RL
+ %tmp21 = lshr i128 %tmp15, 64 ; <i128> [#uses=1]
+ %tmp2122 = trunc i128 %tmp21 to i64 ; <i64> [#uses=1]
+ store i64 %tmp2122, i64* %RH
+ ret void
+}
diff --git a/test/CodeGen/Generic/i128-arith.ll b/test/CodeGen/Generic/i128-arith.ll
new file mode 100644
index 0000000000000..9a670847b575f
--- /dev/null
+++ b/test/CodeGen/Generic/i128-arith.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc
+
+define i64 @foo(i64 %x, i64 %y, i32 %amt) {
+ %tmp0 = zext i64 %x to i128
+ %tmp1 = sext i64 %y to i128
+ %tmp2 = or i128 %tmp0, %tmp1
+ %tmp7 = zext i32 13 to i128
+ %tmp3 = lshr i128 %tmp2, %tmp7
+ %tmp4 = trunc i128 %tmp3 to i64
+ ret i64 %tmp4
+}
diff --git a/test/CodeGen/Generic/inline-asm-special-strings.ll b/test/CodeGen/Generic/inline-asm-special-strings.ll
new file mode 100644
index 0000000000000..e52e0be74bc3a
--- /dev/null
+++ b/test/CodeGen/Generic/inline-asm-special-strings.ll
@@ -0,0 +1,6 @@
+; RUN: llvm-as < %s | llc | grep "foo 0 0"
+
+define void @bar() nounwind {
+ tail call void asm sideeffect "foo ${:uid} ${:uid}", ""() nounwind
+ ret void
+}
diff --git a/test/CodeGen/Generic/intrinsics.ll b/test/CodeGen/Generic/intrinsics.ll
new file mode 100644
index 0000000000000..373bec9adc05f
--- /dev/null
+++ b/test/CodeGen/Generic/intrinsics.ll
@@ -0,0 +1,40 @@
+; RUN: llvm-as < %s | llc
+
+;; SQRT
+declare float @llvm.sqrt.f32(float)
+
+declare double @llvm.sqrt.f64(double)
+
+define double @test_sqrt(float %F) {
+ %G = call float @llvm.sqrt.f32( float %F ) ; <float> [#uses=1]
+ %H = fpext float %G to double ; <double> [#uses=1]
+ %I = call double @llvm.sqrt.f64( double %H ) ; <double> [#uses=1]
+ ret double %I
+}
+
+
+; SIN
+declare float @sinf(float)
+
+declare double @sin(double)
+
+define double @test_sin(float %F) {
+ %G = call float @sinf( float %F ) ; <float> [#uses=1]
+ %H = fpext float %G to double ; <double> [#uses=1]
+ %I = call double @sin( double %H ) ; <double> [#uses=1]
+ ret double %I
+}
+
+
+; COS
+declare float @cosf(float)
+
+declare double @cos(double)
+
+define double @test_cos(float %F) {
+ %G = call float @cosf( float %F ) ; <float> [#uses=1]
+ %H = fpext float %G to double ; <double> [#uses=1]
+ %I = call double @cos( double %H ) ; <double> [#uses=1]
+ ret double %I
+}
+
diff --git a/test/CodeGen/Generic/invalid-memcpy.ll b/test/CodeGen/Generic/invalid-memcpy.ll
new file mode 100644
index 0000000000000..e3acf0c2be13e
--- /dev/null
+++ b/test/CodeGen/Generic/invalid-memcpy.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | llc
+
+; This testcase is invalid (the alignment specified for memcpy is
+; greater than the alignment guaranteed for Qux or C.0.1173), but it
+; should compile, not crash the code generator.
+
+@C.0.1173 = external constant [33 x i8] ; <[33 x i8]*> [#uses=1]
+
+define void @Bork() {
+entry:
+ %Qux = alloca [33 x i8] ; <[33 x i8]*> [#uses=1]
+ %Qux1 = bitcast [33 x i8]* %Qux to i8* ; <i8*> [#uses=1]
+ call void @llvm.memcpy.i64( i8* %Qux1, i8* getelementptr ([33 x i8]* @C.0.1173, i32 0, i32 0), i64 33, i32 8 )
+ ret void
+}
+
+declare void @llvm.memcpy.i64(i8*, i8*, i64, i32)
+
+
diff --git a/test/CodeGen/Generic/isunord.ll b/test/CodeGen/Generic/isunord.ll
new file mode 100644
index 0000000000000..589f49611791e
--- /dev/null
+++ b/test/CodeGen/Generic/isunord.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc
+; XFAIL: ia64
+
+declare i1 @llvm.isunordered.f64(double, double)
+
+define i1 @test(double %X, double %Y) {
+ %tmp27 = fcmp uno double %X, %Y ; <i1> [#uses=1]
+ ret i1 %tmp27
+}
+
diff --git a/test/CodeGen/Generic/llvm-ct-intrinsics.ll b/test/CodeGen/Generic/llvm-ct-intrinsics.ll
new file mode 100644
index 0000000000000..66f409ed27d57
--- /dev/null
+++ b/test/CodeGen/Generic/llvm-ct-intrinsics.ll
@@ -0,0 +1,62 @@
+; Make sure this testcase is supported by all code generators
+; RUN: llvm-as < %s | llc
+
+declare i64 @llvm.ctpop.i64(i64)
+
+declare i32 @llvm.ctpop.i32(i32)
+
+declare i16 @llvm.ctpop.i16(i16)
+
+declare i8 @llvm.ctpop.i8(i8)
+
+define void @ctpoptest(i8 %A, i16 %B, i32 %C, i64 %D, i8* %AP, i16* %BP, i32* %CP, i64* %DP) {
+ %a = call i8 @llvm.ctpop.i8( i8 %A ) ; <i8> [#uses=1]
+ %b = call i16 @llvm.ctpop.i16( i16 %B ) ; <i16> [#uses=1]
+ %c = call i32 @llvm.ctpop.i32( i32 %C ) ; <i32> [#uses=1]
+ %d = call i64 @llvm.ctpop.i64( i64 %D ) ; <i64> [#uses=1]
+ store i8 %a, i8* %AP
+ store i16 %b, i16* %BP
+ store i32 %c, i32* %CP
+ store i64 %d, i64* %DP
+ ret void
+}
+
+declare i64 @llvm.ctlz.i64(i64)
+
+declare i32 @llvm.ctlz.i32(i32)
+
+declare i16 @llvm.ctlz.i16(i16)
+
+declare i8 @llvm.ctlz.i8(i8)
+
+define void @ctlztest(i8 %A, i16 %B, i32 %C, i64 %D, i8* %AP, i16* %BP, i32* %CP, i64* %DP) {
+ %a = call i8 @llvm.ctlz.i8( i8 %A ) ; <i8> [#uses=1]
+ %b = call i16 @llvm.ctlz.i16( i16 %B ) ; <i16> [#uses=1]
+ %c = call i32 @llvm.ctlz.i32( i32 %C ) ; <i32> [#uses=1]
+ %d = call i64 @llvm.ctlz.i64( i64 %D ) ; <i64> [#uses=1]
+ store i8 %a, i8* %AP
+ store i16 %b, i16* %BP
+ store i32 %c, i32* %CP
+ store i64 %d, i64* %DP
+ ret void
+}
+
+declare i64 @llvm.cttz.i64(i64)
+
+declare i32 @llvm.cttz.i32(i32)
+
+declare i16 @llvm.cttz.i16(i16)
+
+declare i8 @llvm.cttz.i8(i8)
+
+define void @cttztest(i8 %A, i16 %B, i32 %C, i64 %D, i8* %AP, i16* %BP, i32* %CP, i64* %DP) {
+ %a = call i8 @llvm.cttz.i8( i8 %A ) ; <i8> [#uses=1]
+ %b = call i16 @llvm.cttz.i16( i16 %B ) ; <i16> [#uses=1]
+ %c = call i32 @llvm.cttz.i32( i32 %C ) ; <i32> [#uses=1]
+ %d = call i64 @llvm.cttz.i64( i64 %D ) ; <i64> [#uses=1]
+ store i8 %a, i8* %AP
+ store i16 %b, i16* %BP
+ store i32 %c, i32* %CP
+ store i64 %d, i64* %DP
+ ret void
+}
diff --git a/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll b/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll
new file mode 100644
index 0000000000000..f21b645615ad0
--- /dev/null
+++ b/test/CodeGen/Generic/multiple-return-values-cross-block-with-invoke.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llc
+
+declare { i64, double } @wild()
+
+define void @foo(i64* %p, double* %q) nounwind {
+ %t = invoke { i64, double } @wild() to label %normal unwind label %handler
+
+normal:
+ %mrv_gr = getresult { i64, double } %t, 0
+ store i64 %mrv_gr, i64* %p
+ %mrv_gr12681 = getresult { i64, double } %t, 1
+ store double %mrv_gr12681, double* %q
+ ret void
+
+handler:
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/negintconst.ll b/test/CodeGen/Generic/negintconst.ll
new file mode 100644
index 0000000000000..a2b3d69ee555b
--- /dev/null
+++ b/test/CodeGen/Generic/negintconst.ll
@@ -0,0 +1,47 @@
+; RUN: llvm-as < %s | llc
+
+; Test that a negative constant smaller than 64 bits (e.g., int)
+; is correctly implemented with sign-extension.
+; In particular, the current code generated is:
+;
+; main:
+; .L_main_LL_0:
+; save %o6, -224, %o6
+; setx .G_fmtArg_1, %o1, %o0
+; setuw 1, %o1 ! i = 1
+; setuw 4294967295, %o3 ! THE BUG: 0x00000000ffffffff
+; setsw 0, %i0
+; add %i6, 1999, %o2 ! fval
+; add %o1, %g0, %o1
+; add %o0, 0, %o0
+; mulx %o1, %o3, %o1 ! ERROR: 0xffffffff; should be -1
+; add %o1, 3, %o1 ! ERROR: 0x100000002; should be 0x2
+; mulx %o1, 12, %o3 !
+; add %o2, %o3, %o3 ! produces bad address!
+; call printf
+; nop
+; jmpl %i7+8, %g0
+; restore %g0, 0, %g0
+;
+; llc produces:
+; ioff = 2 fval = 0xffffffff7fffec90 &fval[2] = 0xb7fffeca8
+; instead of:
+; ioff = 2 fval = 0xffffffff7fffec90 &fval[2] = 0xffffffff7fffeca8
+;
+ %Results = type { float, float, float }
+@fmtArg = internal global [39 x i8] c"ioff = %u\09fval = 0x%p\09&fval[2] = 0x%p\0A\00" ; <[39 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %fval = alloca %Results, i32 4 ; <%Results*> [#uses=2]
+ %i = add i32 1, 0 ; <i32> [#uses=1]
+ %iscale = mul i32 %i, -1 ; <i32> [#uses=1]
+ %ioff = add i32 %iscale, 3 ; <i32> [#uses=2]
+ %ioff.upgrd.1 = zext i32 %ioff to i64 ; <i64> [#uses=1]
+ %fptr = getelementptr %Results* %fval, i64 %ioff.upgrd.1 ; <%Results*> [#uses=1]
+ %castFmt = getelementptr [39 x i8]* @fmtArg, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %castFmt, i32 %ioff, %Results* %fval, %Results* %fptr ) ; <i32>:1 [#uses=0]
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/nested-select.ll b/test/CodeGen/Generic/nested-select.ll
new file mode 100644
index 0000000000000..a723a4d74268a
--- /dev/null
+++ b/test/CodeGen/Generic/nested-select.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-as < %s | llc -o /dev/null -f
+
+; Test that select of a select works
+
+%typedef.tree = type opaque
+
+define i32 @ic_test(double %p.0.2.0.val, double %p.0.2.1.val, double %p.0.2.2.val, %typedef.tree* %t) {
+ %result.1.0 = zext i1 false to i32 ; <i32> [#uses=1]
+ %tmp.55 = fcmp oge double 0.000000e+00, 1.000000e+00 ; <i1> [#uses=1]
+ %tmp.66 = fdiv double 0.000000e+00, 0.000000e+00 ; <double> [#uses=1]
+ br label %N
+
+N: ; preds = %0
+ %result.1.1 = select i1 %tmp.55, i32 0, i32 %result.1.0 ; <i32> [#uses=1]
+ %tmp.75 = fcmp oge double %tmp.66, 1.000000e+00 ; <i1> [#uses=1]
+ %retval1 = select i1 %tmp.75, i32 0, i32 %result.1.1 ; <i32> [#uses=1]
+ ret i32 %retval1
+}
+
diff --git a/test/CodeGen/Generic/phi-immediate-factoring.ll b/test/CodeGen/Generic/phi-immediate-factoring.ll
new file mode 100644
index 0000000000000..e0f675976d913
--- /dev/null
+++ b/test/CodeGen/Generic/phi-immediate-factoring.ll
@@ -0,0 +1,54 @@
+; PR1296
+; RUN: llvm-as < %s | llc -march=x86 | grep {movl \$1} | count 1
+
+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"
+target triple = "i686-apple-darwin8"
+
+define i32 @foo(i32 %A, i32 %B, i32 %C) {
+entry:
+ switch i32 %A, label %out [
+ i32 1, label %bb
+ i32 0, label %bb13
+ i32 2, label %bb35
+ ]
+
+bb: ; preds = %cond_next, %entry
+ %i.144.1 = phi i32 [ 0, %entry ], [ %tmp7, %cond_next ] ; <i32> [#uses=2]
+ %tmp4 = and i32 %i.144.1, %B ; <i32> [#uses=1]
+ icmp eq i32 %tmp4, 0 ; <i1>:0 [#uses=1]
+ br i1 %0, label %cond_next, label %out
+
+cond_next: ; preds = %bb
+ %tmp7 = add i32 %i.144.1, 1 ; <i32> [#uses=2]
+ icmp slt i32 %tmp7, 1000 ; <i1>:1 [#uses=1]
+ br i1 %1, label %bb, label %out
+
+bb13: ; preds = %cond_next18, %entry
+ %i.248.1 = phi i32 [ 0, %entry ], [ %tmp20, %cond_next18 ] ; <i32> [#uses=2]
+ %tmp16 = and i32 %i.248.1, %C ; <i32> [#uses=1]
+ icmp eq i32 %tmp16, 0 ; <i1>:2 [#uses=1]
+ br i1 %2, label %cond_next18, label %out
+
+cond_next18: ; preds = %bb13
+ %tmp20 = add i32 %i.248.1, 1 ; <i32> [#uses=2]
+ icmp slt i32 %tmp20, 1000 ; <i1>:3 [#uses=1]
+ br i1 %3, label %bb13, label %out
+
+bb27: ; preds = %bb35
+ %tmp30 = and i32 %i.3, %C ; <i32> [#uses=1]
+ icmp eq i32 %tmp30, 0 ; <i1>:4 [#uses=1]
+ br i1 %4, label %cond_next32, label %out
+
+cond_next32: ; preds = %bb27
+ %indvar.next = add i32 %i.3, 1 ; <i32> [#uses=1]
+ br label %bb35
+
+bb35: ; preds = %entry, %cond_next32
+ %i.3 = phi i32 [ %indvar.next, %cond_next32 ], [ 0, %entry ] ; <i32> [#uses=3]
+ icmp slt i32 %i.3, 1000 ; <i1>:5 [#uses=1]
+ br i1 %5, label %bb27, label %out
+
+out: ; preds = %bb27, %bb35, %bb13, %cond_next18, %bb, %cond_next, %entry
+ %result.0 = phi i32 [ 0, %entry ], [ 1, %bb ], [ 0, %cond_next ], [ 1, %bb13 ], [ 0, %cond_next18 ], [ 1, %bb27 ], [ 0, %bb35 ] ; <i32> [#uses=1]
+ ret i32 %result.0
+}
diff --git a/test/CodeGen/Generic/pr2625.ll b/test/CodeGen/Generic/pr2625.ll
new file mode 100644
index 0000000000000..c1f585de73767
--- /dev/null
+++ b/test/CodeGen/Generic/pr2625.ll
@@ -0,0 +1,17 @@
+; RUN: llvm-as < %s | llc
+; PR2625
+
+define i32 @main({ i32, { i32 } }*) {
+entry:
+ %state = alloca { i32, { i32 } }* ; <{ i32, { i32 } }**> [#uses=2]
+ store { i32, { i32 } }* %0, { i32, { i32 } }** %state
+ %retval = alloca i32 ; <i32*> [#uses=2]
+ store i32 0, i32* %retval
+ load { i32, { i32 } }** %state ; <{ i32, { i32 } }*>:1 [#uses=1]
+ store { i32, { i32 } } zeroinitializer, { i32, { i32 } }* %1
+ br label %return
+
+return: ; preds = %entry
+ load i32* %retval ; <i32>:2 [#uses=1]
+ ret i32 %2
+}
diff --git a/test/CodeGen/Generic/pr3288.ll b/test/CodeGen/Generic/pr3288.ll
new file mode 100644
index 0000000000000..ff0384db6db5f
--- /dev/null
+++ b/test/CodeGen/Generic/pr3288.ll
@@ -0,0 +1,67 @@
+; RUN: llvm-as < %s | llc
+; PR3288
+
+define void @a() {
+ %i = insertvalue [2 x [2 x i32]] undef, [2 x i32] undef, 1
+ ret void
+}
+define void @b() {
+ %i = insertvalue {{i32,float},{i16,double}} undef, {i16,double} undef, 1
+ ret void
+}
+define void @c() {
+ %i = insertvalue [2 x [2 x i32]] zeroinitializer, [2 x i32] zeroinitializer, 1
+ ret void
+}
+define void @d() {
+ %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, {i16,double} zeroinitializer, 1
+ ret void
+}
+define void @e() {
+ %i = insertvalue [2 x [2 x i32]] undef, [2 x i32] undef, 0
+ ret void
+}
+define void @f() {
+ %i = insertvalue {{i32,float},{i16,double}} undef, {i32,float} undef, 0
+ ret void
+}
+define void @g() {
+ %i = insertvalue [2 x [2 x i32]] zeroinitializer, [2 x i32] zeroinitializer, 0
+ ret void
+}
+define void @h() {
+ %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, {i32,float} zeroinitializer, 0
+ ret void
+}
+define void @ax() {
+ %i = insertvalue [2 x [2 x i32]] undef, i32 undef, 1, 1
+ ret void
+}
+define void @bx() {
+ %i = insertvalue {{i32,float},{i16,double}} undef, double undef, 1, 1
+ ret void
+}
+define void @cx() {
+ %i = insertvalue [2 x [2 x i32]] zeroinitializer, i32 zeroinitializer, 1, 1
+ ret void
+}
+define void @dx() {
+ %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, double zeroinitializer, 1, 1
+ ret void
+}
+define void @ex() {
+ %i = insertvalue [2 x [2 x i32]] undef, i32 undef, 0, 1
+ ret void
+}
+define void @fx() {
+ %i = insertvalue {{i32,float},{i16,double}} undef, float undef, 0, 1
+ ret void
+}
+define void @gx() {
+ %i = insertvalue [2 x [2 x i32]] zeroinitializer, i32 zeroinitializer, 0, 1
+ ret void
+}
+define void @hx() {
+ %i = insertvalue {{i32,float},{i16,double}} zeroinitializer, float zeroinitializer, 0, 1
+ ret void
+}
diff --git a/test/CodeGen/Generic/print-add.ll b/test/CodeGen/Generic/print-add.ll
new file mode 100644
index 0000000000000..4f1cb5e736afb
--- /dev/null
+++ b/test/CodeGen/Generic/print-add.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llc
+
+@.str_1 = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %f = getelementptr [4 x i8]* @.str_1, i64 0, i64 0 ; <i8*> [#uses=3]
+ %d = add i32 1, 0 ; <i32> [#uses=3]
+ call i32 (i8*, ...)* @printf( i8* %f, i32 %d ) ; <i32>:1 [#uses=0]
+ %e = add i32 38, 2 ; <i32> [#uses=2]
+ call i32 (i8*, ...)* @printf( i8* %f, i32 %e ) ; <i32>:2 [#uses=0]
+ %g = add i32 %d, %d ; <i32> [#uses=1]
+ %h = add i32 %e, %g ; <i32> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %f, i32 %h ) ; <i32>:3 [#uses=0]
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/print-arith-fp.ll b/test/CodeGen/Generic/print-arith-fp.ll
new file mode 100644
index 0000000000000..87aa1a0ba9f7c
--- /dev/null
+++ b/test/CodeGen/Generic/print-arith-fp.ll
@@ -0,0 +1,61 @@
+; RUN: llvm-as < %s | llc
+@a_str = internal constant [8 x i8] c"a = %f\0A\00" ; <[8 x i8]*> [#uses=1]
+@b_str = internal constant [8 x i8] c"b = %f\0A\00" ; <[8 x i8]*> [#uses=1]
+@add_str = internal constant [12 x i8] c"a + b = %f\0A\00" ; <[12 x i8]*> [#uses=1]
+@sub_str = internal constant [12 x i8] c"a - b = %f\0A\00" ; <[12 x i8]*> [#uses=1]
+@mul_str = internal constant [12 x i8] c"a * b = %f\0A\00" ; <[12 x i8]*> [#uses=1]
+@div_str = internal constant [12 x i8] c"b / a = %f\0A\00" ; <[12 x i8]*> [#uses=1]
+@rem_str = internal constant [13 x i8] c"b %% a = %f\0A\00" ; <[13 x i8]*> [#uses=1]
+@lt_str = internal constant [12 x i8] c"a < b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@le_str = internal constant [13 x i8] c"a <= b = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@gt_str = internal constant [12 x i8] c"a > b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@ge_str = internal constant [13 x i8] c"a >= b = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@eq_str = internal constant [13 x i8] c"a == b = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@ne_str = internal constant [13 x i8] c"a != b = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@A = global double 2.000000e+00 ; <double*> [#uses=1]
+@B = global double 5.000000e+00 ; <double*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %a = load double* @A ; <double> [#uses=12]
+ %b = load double* @B ; <double> [#uses=12]
+ %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %b_s = getelementptr [8 x i8]* @b_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_s, double %a ) ; <i32>:1 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %b_s, double %b ) ; <i32>:2 [#uses=0]
+ %add_r = add double %a, %b ; <double> [#uses=1]
+ %sub_r = sub double %a, %b ; <double> [#uses=1]
+ %mul_r = mul double %a, %b ; <double> [#uses=1]
+ %div_r = fdiv double %b, %a ; <double> [#uses=1]
+ %rem_r = frem double %b, %a ; <double> [#uses=1]
+ %add_s = getelementptr [12 x i8]* @add_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %sub_s = getelementptr [12 x i8]* @sub_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %mul_s = getelementptr [12 x i8]* @mul_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %div_s = getelementptr [12 x i8]* @div_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %rem_s = getelementptr [13 x i8]* @rem_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %add_s, double %add_r ) ; <i32>:3 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %sub_s, double %sub_r ) ; <i32>:4 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %mul_s, double %mul_r ) ; <i32>:5 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %div_s, double %div_r ) ; <i32>:6 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %rem_s, double %rem_r ) ; <i32>:7 [#uses=0]
+ %lt_r = fcmp olt double %a, %b ; <i1> [#uses=1]
+ %le_r = fcmp ole double %a, %b ; <i1> [#uses=1]
+ %gt_r = fcmp ogt double %a, %b ; <i1> [#uses=1]
+ %ge_r = fcmp oge double %a, %b ; <i1> [#uses=1]
+ %eq_r = fcmp oeq double %a, %b ; <i1> [#uses=1]
+ %ne_r = fcmp une double %a, %b ; <i1> [#uses=1]
+ %lt_s = getelementptr [12 x i8]* @lt_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %le_s = getelementptr [13 x i8]* @le_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %gt_s = getelementptr [12 x i8]* @gt_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %ge_s = getelementptr [13 x i8]* @ge_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %eq_s = getelementptr [13 x i8]* @eq_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %ne_s = getelementptr [13 x i8]* @ne_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %lt_s, i1 %lt_r ) ; <i32>:8 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %le_s, i1 %le_r ) ; <i32>:9 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %gt_s, i1 %gt_r ) ; <i32>:10 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %ge_s, i1 %ge_r ) ; <i32>:11 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %eq_s, i1 %eq_r ) ; <i32>:12 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %ne_s, i1 %ne_r ) ; <i32>:13 [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/print-arith-int.ll b/test/CodeGen/Generic/print-arith-int.ll
new file mode 100644
index 0000000000000..cf275151571ec
--- /dev/null
+++ b/test/CodeGen/Generic/print-arith-int.ll
@@ -0,0 +1,84 @@
+; RUN: llvm-as < %s | llc
+@a_str = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@b_str = internal constant [8 x i8] c"b = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@add_str = internal constant [12 x i8] c"a + b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@sub_str = internal constant [12 x i8] c"a - b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@mul_str = internal constant [12 x i8] c"a * b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@div_str = internal constant [12 x i8] c"b / a = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@rem_str = internal constant [13 x i8] c"b \5C% a = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@lt_str = internal constant [12 x i8] c"a < b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@le_str = internal constant [13 x i8] c"a <= b = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@gt_str = internal constant [12 x i8] c"a > b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@ge_str = internal constant [13 x i8] c"a >= b = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@eq_str = internal constant [13 x i8] c"a == b = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@ne_str = internal constant [13 x i8] c"a != b = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@and_str = internal constant [12 x i8] c"a & b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@or_str = internal constant [12 x i8] c"a | b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@xor_str = internal constant [12 x i8] c"a ^ b = %d\0A\00" ; <[12 x i8]*> [#uses=1]
+@shl_str = internal constant [13 x i8] c"b << a = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@shr_str = internal constant [13 x i8] c"b >> a = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@A = global i32 2 ; <i32*> [#uses=1]
+@B = global i32 5 ; <i32*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %a = load i32* @A ; <i32> [#uses=16]
+ %b = load i32* @B ; <i32> [#uses=17]
+ %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %b_s = getelementptr [8 x i8]* @b_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_s, i32 %a ) ; <i32>:1 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %b_s, i32 %b ) ; <i32>:2 [#uses=0]
+ %add_r = add i32 %a, %b ; <i32> [#uses=1]
+ %sub_r = sub i32 %a, %b ; <i32> [#uses=1]
+ %mul_r = mul i32 %a, %b ; <i32> [#uses=1]
+ %div_r = sdiv i32 %b, %a ; <i32> [#uses=1]
+ %rem_r = srem i32 %b, %a ; <i32> [#uses=1]
+ %add_s = getelementptr [12 x i8]* @add_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %sub_s = getelementptr [12 x i8]* @sub_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %mul_s = getelementptr [12 x i8]* @mul_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %div_s = getelementptr [12 x i8]* @div_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %rem_s = getelementptr [13 x i8]* @rem_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %add_s, i32 %add_r ) ; <i32>:3 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %sub_s, i32 %sub_r ) ; <i32>:4 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %mul_s, i32 %mul_r ) ; <i32>:5 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %div_s, i32 %div_r ) ; <i32>:6 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %rem_s, i32 %rem_r ) ; <i32>:7 [#uses=0]
+ %lt_r = icmp slt i32 %a, %b ; <i1> [#uses=1]
+ %le_r = icmp sle i32 %a, %b ; <i1> [#uses=1]
+ %gt_r = icmp sgt i32 %a, %b ; <i1> [#uses=1]
+ %ge_r = icmp sge i32 %a, %b ; <i1> [#uses=1]
+ %eq_r = icmp eq i32 %a, %b ; <i1> [#uses=1]
+ %ne_r = icmp ne i32 %a, %b ; <i1> [#uses=1]
+ %lt_s = getelementptr [12 x i8]* @lt_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %le_s = getelementptr [13 x i8]* @le_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %gt_s = getelementptr [12 x i8]* @gt_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %ge_s = getelementptr [13 x i8]* @ge_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %eq_s = getelementptr [13 x i8]* @eq_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %ne_s = getelementptr [13 x i8]* @ne_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %lt_s, i1 %lt_r ) ; <i32>:8 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %le_s, i1 %le_r ) ; <i32>:9 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %gt_s, i1 %gt_r ) ; <i32>:10 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %ge_s, i1 %ge_r ) ; <i32>:11 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %eq_s, i1 %eq_r ) ; <i32>:12 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %ne_s, i1 %ne_r ) ; <i32>:13 [#uses=0]
+ %and_r = and i32 %a, %b ; <i32> [#uses=1]
+ %or_r = or i32 %a, %b ; <i32> [#uses=1]
+ %xor_r = xor i32 %a, %b ; <i32> [#uses=1]
+ %u = trunc i32 %a to i8 ; <i8> [#uses=2]
+ %shift.upgrd.1 = zext i8 %u to i32 ; <i32> [#uses=1]
+ %shl_r = shl i32 %b, %shift.upgrd.1 ; <i32> [#uses=1]
+ %shift.upgrd.2 = zext i8 %u to i32 ; <i32> [#uses=1]
+ %shr_r = ashr i32 %b, %shift.upgrd.2 ; <i32> [#uses=1]
+ %and_s = getelementptr [12 x i8]* @and_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %or_s = getelementptr [12 x i8]* @or_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %xor_s = getelementptr [12 x i8]* @xor_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %shl_s = getelementptr [13 x i8]* @shl_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %shr_s = getelementptr [13 x i8]* @shr_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %and_s, i32 %and_r ) ; <i32>:14 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %or_s, i32 %or_r ) ; <i32>:15 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %xor_s, i32 %xor_r ) ; <i32>:16 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %shl_s, i32 %shl_r ) ; <i32>:17 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %shr_s, i32 %shr_r ) ; <i32>:18 [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/print-int.ll b/test/CodeGen/Generic/print-int.ll
new file mode 100644
index 0000000000000..58f5047ceb798
--- /dev/null
+++ b/test/CodeGen/Generic/print-int.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-as < %s | llc
+
+@.str_1 = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %f = getelementptr [4 x i8]* @.str_1, i64 0, i64 0 ; <i8*> [#uses=1]
+ %d = add i32 0, 0 ; <i32> [#uses=1]
+ %tmp.0 = call i32 (i8*, ...)* @printf( i8* %f, i32 %d ) ; <i32> [#uses=0]
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/print-mul-exp.ll b/test/CodeGen/Generic/print-mul-exp.ll
new file mode 100644
index 0000000000000..06667754a3235
--- /dev/null
+++ b/test/CodeGen/Generic/print-mul-exp.ll
@@ -0,0 +1,55 @@
+; RUN: llvm-as < %s | llc
+
+@a_str = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@a_mul_str = internal constant [13 x i8] c"a * %d = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@A = global i32 2 ; <i32*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+ %a = load i32* @A ; <i32> [#uses=21]
+ %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %a_mul_s = getelementptr [13 x i8]* @a_mul_str, i64 0, i64 0 ; <i8*> [#uses=20]
+ call i32 (i8*, ...)* @printf( i8* %a_s, i32 %a ) ; <i32>:1 [#uses=0]
+ %r_0 = mul i32 %a, 0 ; <i32> [#uses=1]
+ %r_1 = mul i32 %a, 1 ; <i32> [#uses=1]
+ %r_2 = mul i32 %a, 2 ; <i32> [#uses=1]
+ %r_3 = mul i32 %a, 3 ; <i32> [#uses=1]
+ %r_4 = mul i32 %a, 4 ; <i32> [#uses=1]
+ %r_5 = mul i32 %a, 5 ; <i32> [#uses=1]
+ %r_6 = mul i32 %a, 6 ; <i32> [#uses=1]
+ %r_7 = mul i32 %a, 7 ; <i32> [#uses=1]
+ %r_8 = mul i32 %a, 8 ; <i32> [#uses=1]
+ %r_9 = mul i32 %a, 9 ; <i32> [#uses=1]
+ %r_10 = mul i32 %a, 10 ; <i32> [#uses=1]
+ %r_11 = mul i32 %a, 11 ; <i32> [#uses=1]
+ %r_12 = mul i32 %a, 12 ; <i32> [#uses=1]
+ %r_13 = mul i32 %a, 13 ; <i32> [#uses=1]
+ %r_14 = mul i32 %a, 14 ; <i32> [#uses=1]
+ %r_15 = mul i32 %a, 15 ; <i32> [#uses=1]
+ %r_16 = mul i32 %a, 16 ; <i32> [#uses=1]
+ %r_17 = mul i32 %a, 17 ; <i32> [#uses=1]
+ %r_18 = mul i32 %a, 18 ; <i32> [#uses=1]
+ %r_19 = mul i32 %a, 19 ; <i32> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 0, i32 %r_0 ) ; <i32>:2 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 1, i32 %r_1 ) ; <i32>:3 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 2, i32 %r_2 ) ; <i32>:4 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 3, i32 %r_3 ) ; <i32>:5 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 4, i32 %r_4 ) ; <i32>:6 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 5, i32 %r_5 ) ; <i32>:7 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 6, i32 %r_6 ) ; <i32>:8 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 7, i32 %r_7 ) ; <i32>:9 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 8, i32 %r_8 ) ; <i32>:10 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 9, i32 %r_9 ) ; <i32>:11 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 10, i32 %r_10 ) ; <i32>:12 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 11, i32 %r_11 ) ; <i32>:13 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 12, i32 %r_12 ) ; <i32>:14 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 13, i32 %r_13 ) ; <i32>:15 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 14, i32 %r_14 ) ; <i32>:16 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 15, i32 %r_15 ) ; <i32>:17 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 16, i32 %r_16 ) ; <i32>:18 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 17, i32 %r_17 ) ; <i32>:19 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 18, i32 %r_18 ) ; <i32>:20 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 19, i32 %r_19 ) ; <i32>:21 [#uses=0]
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/print-mul.ll b/test/CodeGen/Generic/print-mul.ll
new file mode 100644
index 0000000000000..1d9452a58434b
--- /dev/null
+++ b/test/CodeGen/Generic/print-mul.ll
@@ -0,0 +1,32 @@
+; RUN: llvm-as < %s | llc
+
+@a_str = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@b_str = internal constant [8 x i8] c"b = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@a_mul_str = internal constant [13 x i8] c"a * %d = %d\0A\00" ; <[13 x i8]*> [#uses=1]
+@A = global i32 2 ; <i32*> [#uses=1]
+@B = global i32 5 ; <i32*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+entry:
+ %a = load i32* @A ; <i32> [#uses=2]
+ %b = load i32* @B ; <i32> [#uses=1]
+ %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %b_s = getelementptr [8 x i8]* @b_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %a_mul_s = getelementptr [13 x i8]* @a_mul_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_s, i32 %a ) ; <i32>:0 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %b_s, i32 %b ) ; <i32>:1 [#uses=0]
+ br label %shl_test
+
+shl_test: ; preds = %shl_test, %entry
+ %s = phi i32 [ 0, %entry ], [ %s_inc, %shl_test ] ; <i32> [#uses=4]
+ %result = mul i32 %a, %s ; <i32> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_mul_s, i32 %s, i32 %result ) ; <i32>:2 [#uses=0]
+ %s_inc = add i32 %s, 1 ; <i32> [#uses=1]
+ %done = icmp eq i32 %s, 256 ; <i1> [#uses=1]
+ br i1 %done, label %fini, label %shl_test
+
+fini: ; preds = %shl_test
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/print-shift.ll b/test/CodeGen/Generic/print-shift.ll
new file mode 100644
index 0000000000000..8992e8df0c014
--- /dev/null
+++ b/test/CodeGen/Generic/print-shift.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-as < %s | llc
+
+@a_str = internal constant [8 x i8] c"a = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@b_str = internal constant [8 x i8] c"b = %d\0A\00" ; <[8 x i8]*> [#uses=1]
+@a_shl_str = internal constant [14 x i8] c"a << %d = %d\0A\00" ; <[14 x i8]*> [#uses=1]
+@A = global i32 2 ; <i32*> [#uses=1]
+@B = global i32 5 ; <i32*> [#uses=1]
+
+declare i32 @printf(i8*, ...)
+
+define i32 @main() {
+entry:
+ %a = load i32* @A ; <i32> [#uses=2]
+ %b = load i32* @B ; <i32> [#uses=1]
+ %a_s = getelementptr [8 x i8]* @a_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %b_s = getelementptr [8 x i8]* @b_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ %a_shl_s = getelementptr [14 x i8]* @a_shl_str, i64 0, i64 0 ; <i8*> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_s, i32 %a ) ; <i32>:0 [#uses=0]
+ call i32 (i8*, ...)* @printf( i8* %b_s, i32 %b ) ; <i32>:1 [#uses=0]
+ br label %shl_test
+
+shl_test: ; preds = %shl_test, %entry
+ %s = phi i8 [ 0, %entry ], [ %s_inc, %shl_test ] ; <i8> [#uses=4]
+ %shift.upgrd.1 = zext i8 %s to i32 ; <i32> [#uses=1]
+ %result = shl i32 %a, %shift.upgrd.1 ; <i32> [#uses=1]
+ call i32 (i8*, ...)* @printf( i8* %a_shl_s, i8 %s, i32 %result ) ; <i32>:2 [#uses=0]
+ %s_inc = add i8 %s, 1 ; <i8> [#uses=1]
+ %done = icmp eq i8 %s, 32 ; <i1> [#uses=1]
+ br i1 %done, label %fini, label %shl_test
+
+fini: ; preds = %shl_test
+ ret i32 0
+}
+
diff --git a/test/CodeGen/Generic/ret0.ll b/test/CodeGen/Generic/ret0.ll
new file mode 100644
index 0000000000000..489f31c3730d6
--- /dev/null
+++ b/test/CodeGen/Generic/ret0.ll
@@ -0,0 +1,5 @@
+; RUN: llvm-as < %s | llc
+
+define i32 @main() {
+ ret i32 0
+}
diff --git a/test/CodeGen/Generic/ret42.ll b/test/CodeGen/Generic/ret42.ll
new file mode 100644
index 0000000000000..0cbe1763faadf
--- /dev/null
+++ b/test/CodeGen/Generic/ret42.ll
@@ -0,0 +1,5 @@
+; RUN: llvm-as < %s | llc
+
+define i32 @main() {
+ ret i32 42
+}
diff --git a/test/CodeGen/Generic/select-cc.ll b/test/CodeGen/Generic/select-cc.ll
new file mode 100644
index 0000000000000..85e68d19c45a8
--- /dev/null
+++ b/test/CodeGen/Generic/select-cc.ll
@@ -0,0 +1,9 @@
+; RUN: llvm-as < %s | llc
+; PR2504
+
+define <2 x double> @vector_select(<2 x double> %x, <2 x double> %y) nounwind {
+ %x.lo = extractelement <2 x double> %x, i32 0 ; <double> [#uses=1]
+ %x.lo.ge = fcmp oge double %x.lo, 0.000000e+00 ; <i1> [#uses=1]
+ %a.d = select i1 %x.lo.ge, <2 x double> %y, <2 x double> %x ; <<2 x double>> [#uses=1]
+ ret <2 x double> %a.d
+}
diff --git a/test/CodeGen/Generic/select.ll b/test/CodeGen/Generic/select.ll
new file mode 100644
index 0000000000000..fc573f3282cef
--- /dev/null
+++ b/test/CodeGen/Generic/select.ll
@@ -0,0 +1,187 @@
+; RUN: llvm-as < %s | llc
+
+%Domain = type { i8*, i32, i32*, i32, i32, i32*, %Domain* }
+@AConst = constant i32 123 ; <i32*> [#uses=1]
+
+; Test setting values of different constants in registers.
+;
+define void @testConsts(i32 %N, float %X) {
+ %a = add i32 %N, 1 ; <i32> [#uses=0]
+ %i = add i32 %N, 12345678 ; <i32> [#uses=0]
+ %b = add i16 4, 3 ; <i16> [#uses=0]
+ %c = add float %X, 0.000000e+00 ; <float> [#uses=0]
+ %d = add float %X, 0x400921CAC0000000 ; <float> [#uses=0]
+ %f = add i32 -1, 10 ; <i32> [#uses=0]
+ %g = add i16 20, -1 ; <i16> [#uses=0]
+ %j = add i16 -1, 30 ; <i16> [#uses=0]
+ %h = add i8 40, -1 ; <i8> [#uses=0]
+ %k = add i8 -1, 50 ; <i8> [#uses=0]
+ ret void
+}
+
+; A SetCC whose result is used should produce instructions to
+; compute the boolean value in a register. One whose result
+; is unused will only generate the condition code but not
+; the boolean result.
+;
+define void @unusedBool(i32* %x, i32* %y) {
+ icmp eq i32* %x, %y ; <i1>:1 [#uses=1]
+ xor i1 %1, true ; <i1>:2 [#uses=0]
+ icmp ne i32* %x, %y ; <i1>:3 [#uses=0]
+ ret void
+}
+
+; A constant argument to a Phi produces a Cast instruction in the
+; corresponding predecessor basic block. This checks a few things:
+; -- phi arguments coming from the bottom of the same basic block
+; (they should not be forward substituted in the machine code!)
+; -- code generation for casts of various types
+; -- use of immediate fields for integral constants of different sizes
+; -- branch on a constant condition
+;
+define void @mergeConstants(i32* %x, i32* %y) {
+; <label>:0
+ br label %Top
+
+Top: ; preds = %Next, %Top, %0
+ phi i32 [ 0, %0 ], [ 1, %Top ], [ 524288, %Next ] ; <i32>:1 [#uses=0]
+ phi float [ 0.000000e+00, %0 ], [ 1.000000e+00, %Top ], [ 2.000000e+00, %Next ] ; <float>:2 [#uses=0]
+ phi double [ 5.000000e-01, %0 ], [ 1.500000e+00, %Top ], [ 2.500000e+00, %Next ]
+ phi i1 [ true, %0 ], [ false, %Top ], [ true, %Next ] ; <i1>:4 [#uses=0]
+ br i1 true, label %Top, label %Next
+
+Next: ; preds = %Top
+ br label %Top
+}
+
+
+
+; A constant argument to a cast used only once should be forward substituted
+; and loaded where needed, which happens is:
+; -- User of cast has no immediate field
+; -- User of cast has immediate field but constant is too large to fit
+; or constant is not resolved until later (e.g., global address)
+; -- User of cast uses it as a call arg. or return value so it is an implicit
+; use but has to be loaded into a virtual register so that the reg.
+; allocator can allocate the appropriate phys. reg. for it
+;
+define i32* @castconst(float) {
+ %castbig = trunc i64 99999999 to i32 ; <i32> [#uses=1]
+ %castsmall = trunc i64 1 to i32 ; <i32> [#uses=1]
+ %usebig = add i32 %castbig, %castsmall ; <i32> [#uses=0]
+ %castglob = bitcast i32* @AConst to i64* ; <i64*> [#uses=1]
+ %dummyl = load i64* %castglob ; <i64> [#uses=0]
+ %castnull = inttoptr i64 0 to i32* ; <i32*> [#uses=1]
+ ret i32* %castnull
+}
+
+; Test branch-on-comparison-with-zero, in two ways:
+; 1. can be folded
+; 2. cannot be folded because result of comparison is used twice
+;
+define void @testbool(i32 %A, i32 %B) {
+ br label %Top
+
+Top: ; preds = %loop, %0
+ %D = add i32 %A, %B ; <i32> [#uses=2]
+ %E = sub i32 %D, -4 ; <i32> [#uses=1]
+ %C = icmp sle i32 %E, 0 ; <i1> [#uses=1]
+ br i1 %C, label %retlbl, label %loop
+
+loop: ; preds = %loop, %Top
+ %F = add i32 %A, %B ; <i32> [#uses=0]
+ %G = sub i32 %D, -4 ; <i32> [#uses=1]
+ %D.upgrd.1 = icmp sle i32 %G, 0 ; <i1> [#uses=1]
+ %E.upgrd.2 = xor i1 %D.upgrd.1, true ; <i1> [#uses=1]
+ br i1 %E.upgrd.2, label %loop, label %Top
+
+retlbl: ; preds = %Top
+ ret void
+}
+
+
+;; Test use of a boolean result in cast operations.
+;; Requires converting a condition code result into a 0/1 value in a reg.
+;;
+define i32 @castbool(i32 %A, i32 %B) {
+bb0:
+ %cond213 = icmp slt i32 %A, %B ; <i1> [#uses=1]
+ %cast110 = zext i1 %cond213 to i8 ; <i8> [#uses=1]
+ %cast109 = zext i8 %cast110 to i32 ; <i32> [#uses=1]
+ ret i32 %cast109
+}
+
+;; Test use of a boolean result in arithmetic and logical operations.
+;; Requires converting a condition code result into a 0/1 value in a reg.
+;;
+define i1 @boolexpr(i1 %b, i32 %N) {
+ %b2 = icmp sge i32 %N, 0 ; <i1> [#uses=1]
+ %b3 = and i1 %b, %b2 ; <i1> [#uses=1]
+ ret i1 %b3
+}
+
+; Test branch on floating point comparison
+;
+define void @testfloatbool(float %x, float %y) {
+ br label %Top
+
+Top: ; preds = %Top, %0
+ %p = add float %x, %y ; <float> [#uses=1]
+ %z = sub float %x, %y ; <float> [#uses=1]
+ %b = fcmp ole float %p, %z ; <i1> [#uses=2]
+ %c = xor i1 %b, true ; <i1> [#uses=0]
+ br i1 %b, label %Top, label %goon
+
+goon: ; preds = %Top
+ ret void
+}
+
+
+; Test cases where an LLVM instruction requires no machine
+; instructions (e.g., cast int* to long). But there are 2 cases:
+; 1. If the result register has only a single use and the use is in the
+; same basic block, the operand will be copy-propagated during
+; instruction selection.
+; 2. If the result register has multiple uses or is in a different
+; basic block, it cannot (or will not) be copy propagated during
+; instruction selection. It will generate a
+; copy instruction (add-with-0), but this copy should get coalesced
+; away by the register allocator.
+;
+define i32 @checkForward(i32 %N, i32* %A) {
+bb2:
+ %reg114 = shl i32 %N, 2 ; <i32> [#uses=1]
+ %cast115 = sext i32 %reg114 to i64 ; <i64> [#uses=1]
+ %cast116 = ptrtoint i32* %A to i64 ; <i64> [#uses=1]
+ %reg116 = add i64 %cast116, %cast115 ; <i64> [#uses=1]
+ %castPtr = inttoptr i64 %reg116 to i32* ; <i32*> [#uses=1]
+ %reg118 = load i32* %castPtr ; <i32> [#uses=1]
+ %cast117 = sext i32 %reg118 to i64 ; <i64> [#uses=2]
+ %reg159 = add i64 1234567, %cast117 ; <i64> [#uses=0]
+ %reg160 = add i64 7654321, %cast117 ; <i64> [#uses=0]
+ ret i32 0
+}
+
+
+; Test case for unary NOT operation constructed from XOR.
+;
+define void @checkNot(i1 %b, i32 %i) {
+ %notB = xor i1 %b, true ; <i1> [#uses=1]
+ %notI = xor i32 %i, -1 ; <i32> [#uses=2]
+ %F = icmp sge i32 %notI, 100 ; <i1> [#uses=1]
+ %J = add i32 %i, %i ; <i32> [#uses=1]
+ %andNotB = and i1 %F, %notB ; <i1> [#uses=0]
+ %andNotI = and i32 %J, %notI ; <i32> [#uses=0]
+ %notB2 = xor i1 true, %b ; <i1> [#uses=0]
+ %notI2 = xor i32 -1, %i ; <i32> [#uses=0]
+ ret void
+}
+
+; Test case for folding getelementptr into a load/store
+;
+define i32 @checkFoldGEP(%Domain* %D, i64 %idx) {
+ %reg841 = getelementptr %Domain* %D, i64 0, i32 1 ; <i32*> [#uses=1]
+ %reg820 = load i32* %reg841 ; <i32> [#uses=1]
+ ret i32 %reg820
+}
+
diff --git a/test/CodeGen/Generic/shift-int64.ll b/test/CodeGen/Generic/shift-int64.ll
new file mode 100644
index 0000000000000..31be2d634e998
--- /dev/null
+++ b/test/CodeGen/Generic/shift-int64.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc
+
+define i64 @test_imm(i64 %X) {
+ %Y = ashr i64 %X, 17 ; <i64> [#uses=1]
+ ret i64 %Y
+}
+
+define i64 @test_variable(i64 %X, i8 %Amt) {
+ %shift.upgrd.1 = zext i8 %Amt to i64 ; <i64> [#uses=1]
+ %Y = ashr i64 %X, %shift.upgrd.1 ; <i64> [#uses=1]
+ ret i64 %Y
+}
diff --git a/test/CodeGen/Generic/spillccr.ll b/test/CodeGen/Generic/spillccr.ll
new file mode 100644
index 0000000000000..8545133317420
--- /dev/null
+++ b/test/CodeGen/Generic/spillccr.ll
@@ -0,0 +1,49 @@
+; RUN: llvm-as %s -o - | llc
+
+; July 6, 2002 -- LLC Regression test
+; This test case checks if the integer CC register %xcc (or %ccr)
+; is correctly spilled. The code fragment came from function
+; MakeGraph in Olden-mst.
+; The original code made all comparisons with 0, so that the %xcc
+; register is not needed for the branch in the first basic block.
+; Replace 0 with 1 in the first comparson so that the
+; branch-on-register instruction cannot be used directly, i.e.,
+; the %xcc register is needed for the first branch.
+;
+
+ %Graph = type %struct.graph_st*
+ %Hash = type %struct.hash*
+ %HashEntry = type %struct.hash_entry*
+ %Vertex = type %struct.vert_st*
+ %struct.graph_st = type { [1 x %Vertex] }
+ %struct.hash = type { %HashEntry*, i32 (i32)*, i32 }
+ %struct.hash_entry = type { i32, i8*, %HashEntry }
+ %struct.vert_st = type { i32, %Vertex, %Hash }
+@HashRange = external global i32 ; <i32*> [#uses=0]
+@.LC0 = internal global [13 x i8] c"Make phase 2\00" ; <[13 x i8]*> [#uses=0]
+@.LC1 = internal global [13 x i8] c"Make phase 3\00" ; <[13 x i8]*> [#uses=0]
+@.LC2 = internal global [13 x i8] c"Make phase 4\00" ; <[13 x i8]*> [#uses=0]
+@.LC3 = internal global [15 x i8] c"Make returning\00" ; <[15 x i8]*> [#uses=0]
+
+define %Graph @MakeGraph(i32 %numvert, i32 %numproc) {
+bb1:
+ %reg111 = add i32 %numproc, -1 ; <i32> [#uses=2]
+ %cond275 = icmp slt i32 %reg111, 1 ; <i1> [#uses=1]
+ %cond276 = icmp sle i32 %reg111, 0 ; <i1> [#uses=1]
+ %cond277 = icmp sge i32 %numvert, 0 ; <i1> [#uses=1]
+ %reg162 = add i32 %numvert, 3 ; <i32> [#uses=0]
+ br i1 %cond275, label %bb7, label %bb4
+
+bb4: ; preds = %bb1
+ br i1 %cond276, label %bb7, label %bb5
+
+bb5: ; preds = %bb4
+ br i1 %cond277, label %bb7, label %bb6
+
+bb6: ; preds = %bb5
+ ret %Graph null
+
+bb7: ; preds = %bb5, %bb4, %bb1
+ ret %Graph null
+}
+
diff --git a/test/CodeGen/Generic/stack-protector.ll b/test/CodeGen/Generic/stack-protector.ll
new file mode 100644
index 0000000000000..a11a7149a36c0
--- /dev/null
+++ b/test/CodeGen/Generic/stack-protector.ll
@@ -0,0 +1,25 @@
+; RUN: llvm-as < %s | llc -o - | grep {__stack_chk_guard}
+; RUN: llvm-as < %s | llc -o - | grep {__stack_chk_fail}
+
+@"\01LC" = internal constant [11 x i8] c"buf == %s\0A\00" ; <[11 x i8]*> [#uses=1]
+
+define void @test(i8* %a) nounwind ssp {
+entry:
+ %a_addr = alloca i8* ; <i8**> [#uses=2]
+ %buf = alloca [8 x i8] ; <[8 x i8]*> [#uses=2]
+ %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0]
+ store i8* %a, i8** %a_addr
+ %buf1 = bitcast [8 x i8]* %buf to i8* ; <i8*> [#uses=1]
+ %0 = load i8** %a_addr, align 4 ; <i8*> [#uses=1]
+ %1 = call i8* @strcpy(i8* %buf1, i8* %0) nounwind ; <i8*> [#uses=0]
+ %buf2 = bitcast [8 x i8]* %buf to i8* ; <i8*> [#uses=1]
+ %2 = call i32 (i8*, ...)* @printf(i8* getelementptr ([11 x i8]* @"\01LC", i32 0, i32 0), i8* %buf2) nounwind ; <i32> [#uses=0]
+ br label %return
+
+return: ; preds = %entry
+ ret void
+}
+
+declare i8* @strcpy(i8*, i8*) nounwind
+
+declare i32 @printf(i8*, ...) nounwind
diff --git a/test/CodeGen/Generic/stacksave-restore.ll b/test/CodeGen/Generic/stacksave-restore.ll
new file mode 100644
index 0000000000000..fd3dd67298ed6
--- /dev/null
+++ b/test/CodeGen/Generic/stacksave-restore.ll
@@ -0,0 +1,14 @@
+; RUN: llvm-as < %s | llc
+
+declare i8* @llvm.stacksave()
+
+declare void @llvm.stackrestore(i8*)
+
+define i32* @test(i32 %N) {
+ %tmp = call i8* @llvm.stacksave( ) ; <i8*> [#uses=1]
+ %P = alloca i32, i32 %N ; <i32*> [#uses=1]
+ call void @llvm.stackrestore( i8* %tmp )
+ %Q = alloca i32, i32 %N ; <i32*> [#uses=0]
+ ret i32* %P
+}
+
diff --git a/test/CodeGen/Generic/storetrunc-fp.ll b/test/CodeGen/Generic/storetrunc-fp.ll
new file mode 100644
index 0000000000000..710a9907e0183
--- /dev/null
+++ b/test/CodeGen/Generic/storetrunc-fp.ll
@@ -0,0 +1,8 @@
+; RUN: llvm-as < %s | llc
+
+define void @foo(double %a, double %b, float* %fp) {
+ %c = add double %a, %b
+ %d = fptrunc double %c to float
+ store float %d, float* %fp
+ ret void
+}
diff --git a/test/CodeGen/Generic/switch-crit-edge-constant.ll b/test/CodeGen/Generic/switch-crit-edge-constant.ll
new file mode 100644
index 0000000000000..d71fe56eb49d0
--- /dev/null
+++ b/test/CodeGen/Generic/switch-crit-edge-constant.ll
@@ -0,0 +1,52 @@
+; PR925
+; RUN: llvm-as < %s | llc -march=x86 | \
+; RUN: grep mov.*str1 | count 1
+
+target datalayout = "e-p:32:32"
+target triple = "i686-apple-darwin8.7.2"
+@str1 = internal constant [5 x i8] c"bonk\00" ; <[5 x i8]*> [#uses=1]
+@str2 = internal constant [5 x i8] c"bork\00" ; <[5 x i8]*> [#uses=1]
+@str = internal constant [8 x i8] c"perfwap\00" ; <[8 x i8]*> [#uses=1]
+
+define void @foo(i32 %C) {
+entry:
+ switch i32 %C, label %bb2 [
+ i32 1, label %blahaha
+ i32 2, label %blahaha
+ i32 3, label %blahaha
+ i32 4, label %blahaha
+ i32 5, label %blahaha
+ i32 6, label %blahaha
+ i32 7, label %blahaha
+ i32 8, label %blahaha
+ i32 9, label %blahaha
+ i32 10, label %blahaha
+ ]
+
+bb2: ; preds = %entry
+ %tmp5 = and i32 %C, 123 ; <i32> [#uses=1]
+ %tmp = icmp eq i32 %tmp5, 0 ; <i1> [#uses=1]
+ br i1 %tmp, label %blahaha, label %cond_true
+
+cond_true: ; preds = %bb2
+ br label %blahaha
+
+blahaha: ; preds = %cond_true, %bb2, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry, %entry
+ %s.0 = phi i8* [ getelementptr ([8 x i8]* @str, i32 0, i64 0), %cond_true ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str1, i32 0, i64 0), %entry ], [ getelementptr ([5 x i8]* @str2, i32 0, i64 0), %bb2 ] ; <i8*> [#uses=13]
+ %tmp8 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp10 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp12 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp14 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp16 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp18 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp20 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp22 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp24 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp26 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp28 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp30 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ %tmp32 = tail call i32 (i8*, ...)* @printf( i8* %s.0 ) ; <i32> [#uses=0]
+ ret void
+}
+
+declare i32 @printf(i8*, ...)
diff --git a/test/CodeGen/Generic/switch-lower-feature-2.ll b/test/CodeGen/Generic/switch-lower-feature-2.ll
new file mode 100644
index 0000000000000..5e532a8db3ed0
--- /dev/null
+++ b/test/CodeGen/Generic/switch-lower-feature-2.ll
@@ -0,0 +1,50 @@
+; RUN: llvm-as < %s | llc -march=x86 -o %t -f
+; RUN: grep jb %t | count 1
+; RUN: grep \\\$6 %t | count 2
+; RUN: grep 1024 %t | count 1
+; RUN: grep 1023 %t | count 1
+; RUN: grep 119 %t | count 1
+; RUN: grep JTI %t | count 2
+; RUN: grep jg %t | count 1
+; RUN: grep ja %t | count 1
+; RUN: grep js %t | count 1
+
+target triple = "i686-pc-linux-gnu"
+
+define i32 @main(i32 %tmp158) {
+entry:
+ switch i32 %tmp158, label %bb336 [
+ i32 -2147483648, label %bb338
+ i32 -2147483647, label %bb338
+ i32 -2147483646, label %bb338
+ i32 120, label %bb338
+ i32 121, label %bb339
+ i32 122, label %bb340
+ i32 123, label %bb341
+ i32 124, label %bb342
+ i32 125, label %bb343
+ i32 126, label %bb336
+ i32 1024, label %bb338
+ i32 0, label %bb338
+ i32 1, label %bb338
+ i32 2, label %bb338
+ i32 3, label %bb338
+ i32 4, label %bb338
+ i32 5, label %bb338
+ ]
+bb336:
+ ret i32 10
+bb338:
+ ret i32 11
+bb339:
+ ret i32 12
+bb340:
+ ret i32 13
+bb341:
+ ret i32 14
+bb342:
+ ret i32 15
+bb343:
+ ret i32 18
+
+}
diff --git a/test/CodeGen/Generic/switch-lower-feature.ll b/test/CodeGen/Generic/switch-lower-feature.ll
new file mode 100644
index 0000000000000..05234012547c1
--- /dev/null
+++ b/test/CodeGen/Generic/switch-lower-feature.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep {\$7} | count 1
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep {\$6} | count 1
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep 1024 | count 1
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep jb | count 2
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep je | count 1
+
+define i32 @main(i32 %tmp158) {
+entry:
+ switch i32 %tmp158, label %bb336 [
+ i32 120, label %bb338
+ i32 121, label %bb338
+ i32 122, label %bb338
+ i32 123, label %bb338
+ i32 124, label %bb338
+ i32 125, label %bb338
+ i32 126, label %bb338
+ i32 1024, label %bb338
+ i32 0, label %bb338
+ i32 1, label %bb338
+ i32 2, label %bb338
+ i32 3, label %bb338
+ i32 4, label %bb338
+ i32 5, label %bb338
+ ]
+bb336:
+ ret i32 10
+bb338:
+ ret i32 11
+}
diff --git a/test/CodeGen/Generic/switch-lower.ll b/test/CodeGen/Generic/switch-lower.ll
new file mode 100644
index 0000000000000..b1aad3f45140f
--- /dev/null
+++ b/test/CodeGen/Generic/switch-lower.ll
@@ -0,0 +1,334 @@
+; RUN: llvm-as < %s | llc
+; PR1197
+
+
+define void @exp_attr__expand_n_attribute_reference() {
+entry:
+ br i1 false, label %cond_next954, label %cond_true924
+
+cond_true924: ; preds = %entry
+ ret void
+
+cond_next954: ; preds = %entry
+ switch i8 0, label %cleanup7419 [
+ i8 1, label %bb956
+ i8 2, label %bb1069
+ i8 4, label %bb7328
+ i8 5, label %bb1267
+ i8 8, label %bb1348
+ i8 9, label %bb7328
+ i8 11, label %bb1439
+ i8 12, label %bb1484
+ i8 13, label %bb1706
+ i8 14, label %bb1783
+ i8 17, label %bb1925
+ i8 18, label %bb1929
+ i8 19, label %bb2240
+ i8 25, label %bb2447
+ i8 27, label %bb2480
+ i8 29, label %bb2590
+ i8 30, label %bb2594
+ i8 31, label %bb2621
+ i8 32, label %bb2664
+ i8 33, label %bb2697
+ i8 34, label %bb2735
+ i8 37, label %bb2786
+ i8 38, label %bb2849
+ i8 39, label %bb3269
+ i8 41, label %bb3303
+ i8 42, label %bb3346
+ i8 43, label %bb3391
+ i8 44, label %bb3395
+ i8 50, label %bb3673
+ i8 52, label %bb3677
+ i8 53, label %bb3693
+ i8 54, label %bb7328
+ i8 56, label %bb3758
+ i8 57, label %bb3787
+ i8 64, label %bb5019
+ i8 68, label %cond_true4235
+ i8 69, label %bb4325
+ i8 70, label %bb4526
+ i8 72, label %bb4618
+ i8 73, label %bb4991
+ i8 80, label %bb5012
+ i8 82, label %bb5019
+ i8 84, label %bb5518
+ i8 86, label %bb5752
+ i8 87, label %bb5953
+ i8 89, label %bb6040
+ i8 90, label %bb6132
+ i8 92, label %bb6186
+ i8 93, label %bb6151
+ i8 94, label %bb6155
+ i8 97, label %bb6355
+ i8 98, label %bb5019
+ i8 99, label %bb6401
+ i8 101, label %bb5019
+ i8 102, label %bb1484
+ i8 104, label %bb7064
+ i8 105, label %bb7068
+ i8 106, label %bb7072
+ i8 108, label %bb1065
+ i8 109, label %bb1702
+ i8 110, label %bb2200
+ i8 111, label %bb2731
+ i8 112, label %bb2782
+ i8 113, label %bb2845
+ i8 114, label %bb2875
+ i8 115, label %bb3669
+ i8 116, label %bb7316
+ i8 117, label %bb7316
+ i8 118, label %bb3875
+ i8 119, label %bb4359
+ i8 120, label %bb4987
+ i8 121, label %bb5008
+ i8 122, label %bb5786
+ i8 123, label %bb6147
+ i8 124, label %bb6916
+ i8 125, label %bb6920
+ i8 126, label %bb6955
+ i8 127, label %bb6990
+ i8 -128, label %bb7027
+ i8 -127, label %bb3879
+ i8 -126, label %bb4700
+ i8 -125, label %bb7076
+ i8 -124, label %bb2366
+ i8 -123, label %bb2366
+ i8 -122, label %bb5490
+ ]
+
+bb956: ; preds = %cond_next954
+ ret void
+
+bb1065: ; preds = %cond_next954
+ ret void
+
+bb1069: ; preds = %cond_next954
+ ret void
+
+bb1267: ; preds = %cond_next954
+ ret void
+
+bb1348: ; preds = %cond_next954
+ ret void
+
+bb1439: ; preds = %cond_next954
+ ret void
+
+bb1484: ; preds = %cond_next954, %cond_next954
+ ret void
+
+bb1702: ; preds = %cond_next954
+ ret void
+
+bb1706: ; preds = %cond_next954
+ ret void
+
+bb1783: ; preds = %cond_next954
+ ret void
+
+bb1925: ; preds = %cond_next954
+ ret void
+
+bb1929: ; preds = %cond_next954
+ ret void
+
+bb2200: ; preds = %cond_next954
+ ret void
+
+bb2240: ; preds = %cond_next954
+ ret void
+
+bb2366: ; preds = %cond_next954, %cond_next954
+ ret void
+
+bb2447: ; preds = %cond_next954
+ ret void
+
+bb2480: ; preds = %cond_next954
+ ret void
+
+bb2590: ; preds = %cond_next954
+ ret void
+
+bb2594: ; preds = %cond_next954
+ ret void
+
+bb2621: ; preds = %cond_next954
+ ret void
+
+bb2664: ; preds = %cond_next954
+ ret void
+
+bb2697: ; preds = %cond_next954
+ ret void
+
+bb2731: ; preds = %cond_next954
+ ret void
+
+bb2735: ; preds = %cond_next954
+ ret void
+
+bb2782: ; preds = %cond_next954
+ ret void
+
+bb2786: ; preds = %cond_next954
+ ret void
+
+bb2845: ; preds = %cond_next954
+ ret void
+
+bb2849: ; preds = %cond_next954
+ ret void
+
+bb2875: ; preds = %cond_next954
+ ret void
+
+bb3269: ; preds = %cond_next954
+ ret void
+
+bb3303: ; preds = %cond_next954
+ ret void
+
+bb3346: ; preds = %cond_next954
+ ret void
+
+bb3391: ; preds = %cond_next954
+ ret void
+
+bb3395: ; preds = %cond_next954
+ ret void
+
+bb3669: ; preds = %cond_next954
+ ret void
+
+bb3673: ; preds = %cond_next954
+ ret void
+
+bb3677: ; preds = %cond_next954
+ ret void
+
+bb3693: ; preds = %cond_next954
+ ret void
+
+bb3758: ; preds = %cond_next954
+ ret void
+
+bb3787: ; preds = %cond_next954
+ ret void
+
+bb3875: ; preds = %cond_next954
+ ret void
+
+bb3879: ; preds = %cond_next954
+ ret void
+
+cond_true4235: ; preds = %cond_next954
+ ret void
+
+bb4325: ; preds = %cond_next954
+ ret void
+
+bb4359: ; preds = %cond_next954
+ ret void
+
+bb4526: ; preds = %cond_next954
+ ret void
+
+bb4618: ; preds = %cond_next954
+ ret void
+
+bb4700: ; preds = %cond_next954
+ ret void
+
+bb4987: ; preds = %cond_next954
+ ret void
+
+bb4991: ; preds = %cond_next954
+ ret void
+
+bb5008: ; preds = %cond_next954
+ ret void
+
+bb5012: ; preds = %cond_next954
+ ret void
+
+bb5019: ; preds = %cond_next954, %cond_next954, %cond_next954, %cond_next954
+ ret void
+
+bb5490: ; preds = %cond_next954
+ ret void
+
+bb5518: ; preds = %cond_next954
+ ret void
+
+bb5752: ; preds = %cond_next954
+ ret void
+
+bb5786: ; preds = %cond_next954
+ ret void
+
+bb5953: ; preds = %cond_next954
+ ret void
+
+bb6040: ; preds = %cond_next954
+ ret void
+
+bb6132: ; preds = %cond_next954
+ ret void
+
+bb6147: ; preds = %cond_next954
+ ret void
+
+bb6151: ; preds = %cond_next954
+ ret void
+
+bb6155: ; preds = %cond_next954
+ ret void
+
+bb6186: ; preds = %cond_next954
+ ret void
+
+bb6355: ; preds = %cond_next954
+ ret void
+
+bb6401: ; preds = %cond_next954
+ ret void
+
+bb6916: ; preds = %cond_next954
+ ret void
+
+bb6920: ; preds = %cond_next954
+ ret void
+
+bb6955: ; preds = %cond_next954
+ ret void
+
+bb6990: ; preds = %cond_next954
+ ret void
+
+bb7027: ; preds = %cond_next954
+ ret void
+
+bb7064: ; preds = %cond_next954
+ ret void
+
+bb7068: ; preds = %cond_next954
+ ret void
+
+bb7072: ; preds = %cond_next954
+ ret void
+
+bb7076: ; preds = %cond_next954
+ ret void
+
+bb7316: ; preds = %cond_next954, %cond_next954
+ ret void
+
+bb7328: ; preds = %cond_next954, %cond_next954, %cond_next954
+ ret void
+
+cleanup7419: ; preds = %cond_next954
+ ret void
+}
diff --git a/test/CodeGen/Generic/trap.ll b/test/CodeGen/Generic/trap.ll
new file mode 100644
index 0000000000000..4dfc1a6450b93
--- /dev/null
+++ b/test/CodeGen/Generic/trap.ll
@@ -0,0 +1,9 @@
+; RUN: llvm-as < %s | llc
+define i32 @test() noreturn nounwind {
+entry:
+ tail call void @llvm.trap( )
+ unreachable
+}
+
+declare void @llvm.trap() nounwind
+
diff --git a/test/CodeGen/Generic/v-split.ll b/test/CodeGen/Generic/v-split.ll
new file mode 100644
index 0000000000000..a3124924638f3
--- /dev/null
+++ b/test/CodeGen/Generic/v-split.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-as < %s | llc
+%f8 = type <8 x float>
+
+define void @test_f8(%f8 *%P, %f8* %Q, %f8 *%S) {
+ %p = load %f8* %P
+ %q = load %f8* %Q
+ %R = add %f8 %p, %q
+ store %f8 %R, %f8 *%S
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/vector-casts.ll b/test/CodeGen/Generic/vector-casts.ll
new file mode 100644
index 0000000000000..12104a32eecd6
--- /dev/null
+++ b/test/CodeGen/Generic/vector-casts.ll
@@ -0,0 +1,45 @@
+; RUN: llvm-as < %s | llc
+; PR2671
+
+define void @a(<2 x double>* %p, <2 x i8>* %q) {
+ %t = load <2 x double>* %p
+ %r = fptosi <2 x double> %t to <2 x i8>
+ store <2 x i8> %r, <2 x i8>* %q
+ ret void
+}
+define void @b(<2 x double>* %p, <2 x i8>* %q) {
+ %t = load <2 x double>* %p
+ %r = fptoui <2 x double> %t to <2 x i8>
+ store <2 x i8> %r, <2 x i8>* %q
+ ret void
+}
+define void @c(<2 x i8>* %p, <2 x double>* %q) {
+ %t = load <2 x i8>* %p
+ %r = sitofp <2 x i8> %t to <2 x double>
+ store <2 x double> %r, <2 x double>* %q
+ ret void
+}
+define void @d(<2 x i8>* %p, <2 x double>* %q) {
+ %t = load <2 x i8>* %p
+ %r = uitofp <2 x i8> %t to <2 x double>
+ store <2 x double> %r, <2 x double>* %q
+ ret void
+}
+define void @e(<2 x i8>* %p, <2 x i16>* %q) {
+ %t = load <2 x i8>* %p
+ %r = sext <2 x i8> %t to <2 x i16>
+ store <2 x i16> %r, <2 x i16>* %q
+ ret void
+}
+define void @f(<2 x i8>* %p, <2 x i16>* %q) {
+ %t = load <2 x i8>* %p
+ %r = zext <2 x i8> %t to <2 x i16>
+ store <2 x i16> %r, <2 x i16>* %q
+ ret void
+}
+define void @g(<2 x i16>* %p, <2 x i8>* %q) {
+ %t = load <2 x i16>* %p
+ %r = trunc <2 x i16> %t to <2 x i8>
+ store <2 x i8> %r, <2 x i8>* %q
+ ret void
+}
diff --git a/test/CodeGen/Generic/vector-constantexpr.ll b/test/CodeGen/Generic/vector-constantexpr.ll
new file mode 100644
index 0000000000000..441c4a0e71dc6
--- /dev/null
+++ b/test/CodeGen/Generic/vector-constantexpr.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-as < %s | llc
+
+define void @""(float* %inregs, float* %outregs) {
+ %a_addr.i = alloca <4 x float> ; <<4 x float>*> [#uses=1]
+ store <4 x float> < float undef, float undef, float undef, float undef >, <4 x float>* %a_addr.i
+ ret void
+}
diff --git a/test/CodeGen/Generic/vector-identity-shuffle.ll b/test/CodeGen/Generic/vector-identity-shuffle.ll
new file mode 100644
index 0000000000000..61b44af118b95
--- /dev/null
+++ b/test/CodeGen/Generic/vector-identity-shuffle.ll
@@ -0,0 +1,17 @@
+; RUN: llvm-as < %s | llc
+
+
+define void @test(<4 x float>* %tmp2.i) {
+ %tmp2.i.upgrd.1 = load <4 x float>* %tmp2.i ; <<4 x float>> [#uses=4]
+ %xFloat0.48 = extractelement <4 x float> %tmp2.i.upgrd.1, i32 0 ; <float> [#uses=1]
+ %inFloat0.49 = insertelement <4 x float> undef, float %xFloat0.48, i32 0 ; <<4 x float>> [#uses=1]
+ %xFloat1.50 = extractelement <4 x float> %tmp2.i.upgrd.1, i32 1 ; <float> [#uses=1]
+ %inFloat1.52 = insertelement <4 x float> %inFloat0.49, float %xFloat1.50, i32 1 ; <<4 x float>> [#uses=1]
+ %xFloat2.53 = extractelement <4 x float> %tmp2.i.upgrd.1, i32 2 ; <float> [#uses=1]
+ %inFloat2.55 = insertelement <4 x float> %inFloat1.52, float %xFloat2.53, i32 2 ; <<4 x float>> [#uses=1]
+ %xFloat3.56 = extractelement <4 x float> %tmp2.i.upgrd.1, i32 3 ; <float> [#uses=1]
+ %inFloat3.58 = insertelement <4 x float> %inFloat2.55, float %xFloat3.56, i32 3 ; <<4 x float>> [#uses=1]
+ store <4 x float> %inFloat3.58, <4 x float>* %tmp2.i
+ ret void
+}
+
diff --git a/test/CodeGen/Generic/vector.ll b/test/CodeGen/Generic/vector.ll
new file mode 100644
index 0000000000000..910575750e3eb
--- /dev/null
+++ b/test/CodeGen/Generic/vector.ll
@@ -0,0 +1,154 @@
+; Test that vectors are scalarized/lowered correctly.
+; RUN: llvm-as < %s | llc
+
+
+%d8 = type <8 x double>
+%f1 = type <1 x float>
+%f2 = type <2 x float>
+%f4 = type <4 x float>
+%f8 = type <8 x float>
+%i4 = type <4 x i32>
+
+;;; TEST HANDLING OF VARIOUS VECTOR SIZES
+
+define void @test_f1(%f1* %P, %f1* %Q, %f1* %S) {
+ %p = load %f1* %P ; <%f1> [#uses=1]
+ %q = load %f1* %Q ; <%f1> [#uses=1]
+ %R = add %f1 %p, %q ; <%f1> [#uses=1]
+ store %f1 %R, %f1* %S
+ ret void
+}
+
+define void @test_f2(%f2* %P, %f2* %Q, %f2* %S) {
+ %p = load %f2* %P ; <%f2> [#uses=1]
+ %q = load %f2* %Q ; <%f2> [#uses=1]
+ %R = add %f2 %p, %q ; <%f2> [#uses=1]
+ store %f2 %R, %f2* %S
+ ret void
+}
+
+define void @test_f4(%f4* %P, %f4* %Q, %f4* %S) {
+ %p = load %f4* %P ; <%f4> [#uses=1]
+ %q = load %f4* %Q ; <%f4> [#uses=1]
+ %R = add %f4 %p, %q ; <%f4> [#uses=1]
+ store %f4 %R, %f4* %S
+ ret void
+}
+
+define void @test_f8(%f8* %P, %f8* %Q, %f8* %S) {
+ %p = load %f8* %P ; <%f8> [#uses=1]
+ %q = load %f8* %Q ; <%f8> [#uses=1]
+ %R = add %f8 %p, %q ; <%f8> [#uses=1]
+ store %f8 %R, %f8* %S
+ ret void
+}
+
+define void @test_fmul(%f8* %P, %f8* %Q, %f8* %S) {
+ %p = load %f8* %P ; <%f8> [#uses=1]
+ %q = load %f8* %Q ; <%f8> [#uses=1]
+ %R = mul %f8 %p, %q ; <%f8> [#uses=1]
+ store %f8 %R, %f8* %S
+ ret void
+}
+
+define void @test_div(%f8* %P, %f8* %Q, %f8* %S) {
+ %p = load %f8* %P ; <%f8> [#uses=1]
+ %q = load %f8* %Q ; <%f8> [#uses=1]
+ %R = fdiv %f8 %p, %q ; <%f8> [#uses=1]
+ store %f8 %R, %f8* %S
+ ret void
+}
+
+;;; TEST VECTOR CONSTRUCTS
+
+
+define void @test_cst(%f4* %P, %f4* %S) {
+ %p = load %f4* %P ; <%f4> [#uses=1]
+ %R = add %f4 %p, < float 0x3FB99999A0000000, float 1.000000e+00, float 2.000000e+00, float 4.500000e+00 > ; <%f4> [#uses=1]
+ store %f4 %R, %f4* %S
+ ret void
+}
+
+define void @test_zero(%f4* %P, %f4* %S) {
+ %p = load %f4* %P ; <%f4> [#uses=1]
+ %R = add %f4 %p, zeroinitializer ; <%f4> [#uses=1]
+ store %f4 %R, %f4* %S
+ ret void
+}
+
+define void @test_undef(%f4* %P, %f4* %S) {
+ %p = load %f4* %P ; <%f4> [#uses=1]
+ %R = add %f4 %p, undef ; <%f4> [#uses=1]
+ store %f4 %R, %f4* %S
+ ret void
+}
+
+define void @test_constant_insert(%f4* %S) {
+ %R = insertelement %f4 zeroinitializer, float 1.000000e+01, i32 0 ; <%f4> [#uses=1]
+ store %f4 %R, %f4* %S
+ ret void
+}
+
+define void @test_variable_buildvector(float %F, %f4* %S) {
+ %R = insertelement %f4 zeroinitializer, float %F, i32 0 ; <%f4> [#uses=1]
+ store %f4 %R, %f4* %S
+ ret void
+}
+
+define void @test_scalar_to_vector(float %F, %f4* %S) {
+ %R = insertelement %f4 undef, float %F, i32 0 ; <%f4> [#uses=1]
+ store %f4 %R, %f4* %S
+ ret void
+}
+
+define float @test_extract_elt(%f8* %P) {
+ %p = load %f8* %P ; <%f8> [#uses=1]
+ %R = extractelement %f8 %p, i32 3 ; <float> [#uses=1]
+ ret float %R
+}
+
+define double @test_extract_elt2(%d8* %P) {
+ %p = load %d8* %P ; <%d8> [#uses=1]
+ %R = extractelement %d8 %p, i32 3 ; <double> [#uses=1]
+ ret double %R
+}
+
+define void @test_cast_1(%f4* %b, %i4* %a) {
+ %tmp = load %f4* %b ; <%f4> [#uses=1]
+ %tmp2 = add %f4 %tmp, < float 1.000000e+00, float 2.000000e+00, float 3.000000e+00, float 4.000000e+00 > ; <%f4> [#uses=1]
+ %tmp3 = bitcast %f4 %tmp2 to %i4 ; <%i4> [#uses=1]
+ %tmp4 = add %i4 %tmp3, < i32 1, i32 2, i32 3, i32 4 > ; <%i4> [#uses=1]
+ store %i4 %tmp4, %i4* %a
+ ret void
+}
+
+define void @test_cast_2(%f8* %a, <8 x i32>* %b) {
+ %T = load %f8* %a ; <%f8> [#uses=1]
+ %T2 = bitcast %f8 %T to <8 x i32> ; <<8 x i32>> [#uses=1]
+ store <8 x i32> %T2, <8 x i32>* %b
+ ret void
+}
+
+;;; TEST IMPORTANT IDIOMS
+
+define void @splat(%f4* %P, %f4* %Q, float %X) {
+ %tmp = insertelement %f4 undef, float %X, i32 0 ; <%f4> [#uses=1]
+ %tmp2 = insertelement %f4 %tmp, float %X, i32 1 ; <%f4> [#uses=1]
+ %tmp4 = insertelement %f4 %tmp2, float %X, i32 2 ; <%f4> [#uses=1]
+ %tmp6 = insertelement %f4 %tmp4, float %X, i32 3 ; <%f4> [#uses=1]
+ %q = load %f4* %Q ; <%f4> [#uses=1]
+ %R = add %f4 %q, %tmp6 ; <%f4> [#uses=1]
+ store %f4 %R, %f4* %P
+ ret void
+}
+
+define void @splat_i4(%i4* %P, %i4* %Q, i32 %X) {
+ %tmp = insertelement %i4 undef, i32 %X, i32 0 ; <%i4> [#uses=1]
+ %tmp2 = insertelement %i4 %tmp, i32 %X, i32 1 ; <%i4> [#uses=1]
+ %tmp4 = insertelement %i4 %tmp2, i32 %X, i32 2 ; <%i4> [#uses=1]
+ %tmp6 = insertelement %i4 %tmp4, i32 %X, i32 3 ; <%i4> [#uses=1]
+ %q = load %i4* %Q ; <%i4> [#uses=1]
+ %R = add %i4 %q, %tmp6 ; <%i4> [#uses=1]
+ store %i4 %R, %i4* %P
+ ret void
+}