It's not necessary to do rounding for alloca operations when the requested
alignment is equal to the stack alignment.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40004 91177308-0d34-0410-b5e6-96231b3b80d8
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 0000000..3e2dbfe
--- /dev/null
+++ b/test/CodeGen/Generic/2002-04-14-UnexpectedUnsignedType.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-upgrade < %s | llvm-as -o - | llc 
+
+; This caused the backend to assert out with:
+; SparcInstrInfo.cpp:103: failed assertion `0 && "Unexpected unsigned type"'
+;
+implementation
+
+declare void "bar"(sbyte* %G)
+
+void "foo"()
+begin
+	%cast225 = cast ulong 123456 to sbyte*		; <sbyte*> [#uses=1]
+	call void %bar( sbyte* %cast225)
+	ret void
+end
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 0000000..d7e138a
--- /dev/null
+++ b/test/CodeGen/Generic/2002-04-16-StackFrameSizeAlignment.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+; Compiling this file produces:
+; Sparc.cpp:91: failed assertion `(offset - OFFSET) % getStackFrameSizeAlignment() == 0'
+;
+implementation
+
+declare int "SIM"(sbyte* %A, sbyte* %B, int %M, int %N, int %K, [256 x int]* %V, int %Q, int %R, int %nseq)
+
+void "foo"()
+begin
+bb0:					;[#uses=0]
+	%V = alloca [256 x int], uint 256		; <[256 x int]*> [#uses=1]
+	call int %SIM( sbyte* null, sbyte* null, int 0, int 0, int 0, [256 x int]* %V, int 0, int 0, int 2 )		; <int>:0 [#uses=0]
+	ret void
+end
+
+
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 0000000..5c795fa
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-27-phifcmpd.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+void %QRiterate(int %p.1, double %tmp.212) { 
+entry:          ; No predecessors!
+        %tmp.184 = setgt int %p.1, 0            ; <bool> [#uses=1]
+        br bool %tmp.184, label %shortcirc_next.1, label %shortcirc_done.1
+
+shortcirc_next.1:               ; preds = %entry
+        %tmp.213 = setne double %tmp.212, 0.000000e+00
+        br label %shortcirc_done.1
+
+shortcirc_done.1:               ; preds = %entry, %shortcirc_next.1
+        %val.1 = phi bool [ false, %entry ], [ %tmp.213, %shortcirc_next.1 ]
+        br bool %val.1, label %shortcirc_next.1, label %exit.1
+
+exit.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 0000000..8df84f0
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-27-useboolinotherbb.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+
+void %QRiterate(double %tmp.212) { 
+        %tmp.213 = setne double %tmp.212, 0.000000e+00
+        br label %shortcirc_next.1
+
+shortcirc_next.1:               ; preds = %entry
+        br bool %tmp.213, label %shortcirc_next.1, label %exit.1
+
+exit.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 0000000..40f4d4d
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-27-usefsubasbool.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+void %QRiterate(double %tmp.212) { 
+entry:          ; No predecessors!
+        br label %shortcirc_next.1
+
+shortcirc_next.1:               ; preds = %entry
+        %tmp.213 = setne double %tmp.212, 0.000000e+00
+        br bool %tmp.213, label %shortcirc_next.1, label %exit.1
+
+exit.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 0000000..8600638
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-28-ManyArgs.ll
@@ -0,0 +1,156 @@
+; RUN: llvm-upgrade < %s | llvm-as | 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 { uint, float, float, float, float }
+	%struct..s_chan = type { uint, float, float, float, float }
+	%struct..s_det_routing_arch = type { uint, float, float, float, uint, int, short, short, short, float, float }
+	%struct..s_placer_opts = type { int, float, int, uint, sbyte*, uint, int }
+	%struct..s_router_opts = type { float, float, float, float, float, int, int, uint, int }
+	%struct..s_segment_inf = type { float, int, short, short, float, float, uint, float, float }
+	%struct..s_switch_inf = type { uint, float, float, float, float }
+
+implementation
+
+int %main(int %argc.1, sbyte** %argv.1) {
+entry:		
+	%net_file = alloca [300 x sbyte]		
+	%place_file = alloca [300 x sbyte]		
+	%arch_file = alloca [300 x sbyte]		
+	%route_file = alloca [300 x sbyte]		
+	%full_stats = alloca uint		
+	%operation = alloca int		
+	%verify_binary_search = alloca uint		
+	%show_graphics = alloca uint		
+	%annealing_sched = alloca %struct..s_annealing_sched		
+	%placer_opts = alloca %struct..s_placer_opts		
+	%router_opts = alloca %struct..s_router_opts		
+	%det_routing_arch = alloca %struct..s_det_routing_arch		
+	%segment_inf = alloca %struct..s_segment_inf*		
+	%timing_inf = alloca { uint, float, float, float, float, float, float, float, float, float, float }		
+	%tmp.101 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, uint 4		
+	%tmp.105 = getelementptr [300 x sbyte]* %net_file, long 0, long 0		
+	%tmp.106 = getelementptr [300 x sbyte]* %arch_file, long 0, long 0		
+	%tmp.107 = getelementptr [300 x sbyte]* %place_file, long 0, long 0		
+	%tmp.108 = getelementptr [300 x sbyte]* %route_file, long 0, long 0		
+	%tmp.109 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 0		
+	%tmp.112 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, uint 0		
+	%tmp.114 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, uint 6		
+	%tmp.118 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 7		
+	%tmp.135 = load int* %operation		
+	%tmp.137 = load int* %tmp.112		
+	%tmp.138 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, uint 1		
+	%tmp.139 = load float* %tmp.138		
+	%tmp.140 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, uint 2		
+	%tmp.141 = load int* %tmp.140		
+	%tmp.142 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, uint 3		
+	%tmp.143 = load uint* %tmp.142		
+	%tmp.145 = load sbyte** %tmp.101		
+	%tmp.146 = getelementptr %struct..s_placer_opts* %placer_opts, long 0, uint 5		
+	%tmp.147 = load uint* %tmp.146		
+	%tmp.149 = load int* %tmp.114		
+	%tmp.154 = load uint* %full_stats		
+	%tmp.155 = load uint* %verify_binary_search		
+	%tmp.156 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, uint 0		
+	%tmp.157 = load uint* %tmp.156		
+	%tmp.158 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, uint 1		
+	%tmp.159 = load float* %tmp.158		
+	%tmp.160 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, uint 2		
+	%tmp.161 = load float* %tmp.160		
+	%tmp.162 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, uint 3		
+	%tmp.163 = load float* %tmp.162		
+	%tmp.164 = getelementptr %struct..s_annealing_sched* %annealing_sched, long 0, uint 4		
+	%tmp.165 = load float* %tmp.164		
+	%tmp.166 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 0		
+	%tmp.167 = load float* %tmp.166		
+	%tmp.168 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 1		
+	%tmp.169 = load float* %tmp.168		
+	%tmp.170 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 2		
+	%tmp.171 = load float* %tmp.170		
+	%tmp.172 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 3		
+	%tmp.173 = load float* %tmp.172		
+	%tmp.174 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 4		
+	%tmp.175 = load float* %tmp.174		
+	%tmp.176 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 5		
+	%tmp.177 = load int* %tmp.176		
+	%tmp.178 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 6		
+	%tmp.179 = load int* %tmp.178		
+	%tmp.181 = load uint* %tmp.118		
+	%tmp.182 = getelementptr %struct..s_router_opts* %router_opts, long 0, uint 8		
+	%tmp.183 = load int* %tmp.182		
+	%tmp.184 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 0		
+	%tmp.185 = load uint* %tmp.184		
+	%tmp.186 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 1		
+	%tmp.187 = load float* %tmp.186		
+	%tmp.188 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 2		
+	%tmp.189 = load float* %tmp.188		
+	%tmp.190 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 3		
+	%tmp.191 = load float* %tmp.190		
+	%tmp.192 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 4		
+	%tmp.193 = load uint* %tmp.192		
+	%tmp.194 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 5		
+	%tmp.195 = load int* %tmp.194		
+	%tmp.196 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 6		
+	%tmp.197 = load short* %tmp.196		
+	%tmp.198 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 7		
+	%tmp.199 = load short* %tmp.198		
+	%tmp.200 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 8		
+	%tmp.201 = load short* %tmp.200		
+	%tmp.202 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 9		
+	%tmp.203 = load float* %tmp.202		
+	%tmp.204 = getelementptr %struct..s_det_routing_arch* %det_routing_arch, long 0, uint 10		
+	%tmp.205 = load float* %tmp.204		
+	%tmp.206 = load %struct..s_segment_inf** %segment_inf		
+	%tmp.208 = load uint* %tmp.109		
+	%tmp.209 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 1		
+	%tmp.210 = load float* %tmp.209		
+	%tmp.211 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 2		
+	%tmp.212 = load float* %tmp.211		
+	%tmp.213 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 3		
+	%tmp.214 = load float* %tmp.213		
+	%tmp.215 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 4		
+	%tmp.216 = load float* %tmp.215		
+	%tmp.217 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 5		
+	%tmp.218 = load float* %tmp.217		
+	%tmp.219 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 6		
+	%tmp.220 = load float* %tmp.219		
+	%tmp.221 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 7		
+	%tmp.222 = load float* %tmp.221		
+	%tmp.223 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 8		
+	%tmp.224 = load float* %tmp.223		
+	%tmp.225 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 9		
+	%tmp.226 = load float* %tmp.225		
+	%tmp.227 = getelementptr { uint, float, float, float, float, float, float, float, float, float, float }* %timing_inf, long 0, uint 10		
+	%tmp.228 = load float* %tmp.227		
+	call void %place_and_route( int %tmp.135, int %tmp.137, float %tmp.139, int %tmp.141, uint %tmp.143, sbyte* %tmp.145, uint %tmp.147, int %tmp.149, sbyte* %tmp.107, sbyte* %tmp.105, sbyte* %tmp.106, sbyte* %tmp.108, uint %tmp.154, uint %tmp.155, uint %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, int %tmp.177, int %tmp.179, uint %tmp.181, int %tmp.183, uint %tmp.185, float %tmp.187, float %tmp.189, float %tmp.191, uint %tmp.193, int %tmp.195, short %tmp.197, short %tmp.199, short %tmp.201, float %tmp.203, float %tmp.205, %struct..s_segment_inf* %tmp.206, uint %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 uint* %show_graphics		
+	%tmp.232 = setne uint %tmp.231, 0		
+	br bool %tmp.232, label %then.2, label %endif.2
+
+then.2:		
+	br label %endif.2
+
+endif.2:
+	ret int 0
+}
+
+declare int %printf(sbyte*, ...)
+
+declare void %place_and_route(int, int, float, int, uint, sbyte*, uint, int, sbyte*, sbyte*, sbyte*, sbyte*, uint, uint, uint, float, float, float, float, float, float, float, float, float, int, int, uint, int, uint, float, float, float, uint, int, short, short, short, float, float, %struct..s_segment_inf*, uint, 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 0000000..61d802c
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-30-BadFoldGEP.ll
@@ -0,0 +1,50 @@
+; RUN: llvm-upgrade %s | llvm-as | 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 { int, [256 x sbyte], int, int, int, int }
+%OutputFiles = uninitialized global [16 x %FileType]
+%Output = internal global %FileType* null
+
+
+implementation; Functions:
+
+internal int %OpenOutput(sbyte* %filename.1) {
+entry:
+	%tmp.0 = load %FileType** %Output      
+        %tmp.4 = getelementptr %FileType* %tmp.0, long 1
+
+	;;------ Original instruction in 254.gap.llvm.bc:
+	;; %tmp.10 = seteq { int, [256 x sbyte], int, int, int, int }* %tmp.4, getelementptr ([16 x { int, [256 x sbyte], int, int, int, int }]* getelementptr ([16 x { int, [256 x sbyte], int, int, int, int }]* %OutputFiles, long 1), long 0, long 0)
+
+	;;------ Code sequence produced by preselection phase for above instr:
+	;; This code sequence is folded incorrectly by llc during selection
+	;; causing an assertion about a dynamic casting error.
+        %addrOfGlobal = getelementptr [16 x %FileType]* %OutputFiles, long 0
+        %constantGEP = getelementptr [16 x %FileType]* %addrOfGlobal, long 1
+        %constantGEP = getelementptr [16 x %FileType]* %constantGEP, long 0, long 0
+	%tmp.10 = seteq %FileType* %tmp.4, %constantGEP
+        br bool %tmp.10, label %return, label %endif.0
+
+endif.0:
+	ret int 0
+
+return:
+	ret int 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 0000000..e9cac7f
--- /dev/null
+++ b/test/CodeGen/Generic/2003-05-30-BadPreselectPhi.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-upgrade %s | llvm-as | 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*, int, int, int, [4 x sbyte] }
+	%struct..task = type { %struct..task*, int, int, %struct..packet*, int, %struct..task* (%struct..packet*)*, int, int }
+%v1 = external global int
+%v2 = external global int
+
+implementation   ; Functions:
+
+%struct..task* %handlerfn(%struct..packet* %pkt.2) {
+entry:		; No predecessors!
+	%tmp.1 = setne %struct..packet* %pkt.2, null
+	br bool %tmp.1, label %cond_false, label %cond_continue
+
+cond_false:		; preds = %entry
+	br label %cond_continue
+
+cond_continue:		; preds = %entry, %cond_false
+	%mem_tmp.0 = phi int* [ %v2, %cond_false ], [ %v1, %entry ]
+	%tmp.12 = cast int* %mem_tmp.0 to %struct..packet*
+	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 0000000..a741ebc
--- /dev/null
+++ b/test/CodeGen/Generic/2003-07-06-BadIntCmp.ll
@@ -0,0 +1,52 @@
+; RUN: llvm-upgrade < %s | llvm-as | 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 sbyte] c"true\0A\00"
+%.str_2 = internal constant [7 x sbyte] c"false\0A\00"
+
+implementation   ; Functions:
+
+declare int %printf(sbyte*, ...)
+
+internal void %__main() {
+entry:		; No predecessors!
+	ret void
+}
+
+internal void %CheckOutside(int %x.1, int %y.1) {
+entry:		; No predecessors!
+	%tmp.2 = mul int %x.1, %x.1		; <int> [#uses=1]
+	%tmp.5 = mul int %y.1, %y.1		; <int> [#uses=1]
+	%tmp.6 = add int %tmp.2, %tmp.5		; <int> [#uses=1]
+	%tmp.8 = setle int %tmp.6, 4194304		; <bool> [#uses=1]
+	br bool %tmp.8, label %then, label %else
+
+then:		; preds = %entry
+	%tmp.11 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([6 x sbyte]* %.str_1, long 0, long 0) )		; <int> [#uses=0]
+	br label %UnifiedExitNode
+
+else:		; preds = %entry
+	%tmp.13 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([7 x sbyte]* %.str_2, long 0, long 0) )		; <int> [#uses=0]
+	br label %UnifiedExitNode
+
+UnifiedExitNode:		; preds = %then, %else
+	ret void
+}
+
+int %main() {
+entry:		; No predecessors!
+	call void %__main( )
+	call void %CheckOutside( int 2097152, int 2097152 )
+	ret int 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 0000000..376ef19
--- /dev/null
+++ b/test/CodeGen/Generic/2003-07-07-BadLongConst.ll
@@ -0,0 +1,22 @@
+; RUN: llvm-upgrade %s | llvm-as | llc
+
+
+%.str_1 = internal constant [42 x sbyte] c"   ui = %u (0x%x)\09\09UL-ui = %lld (0x%llx)\0A\00"
+
+implementation   ; Functions:
+
+declare int %printf(sbyte*, ...)
+
+internal ulong %getL() {
+entry:          ; No predecessors!
+        ret ulong 12659530247033960611
+}
+
+int %main(int %argc.1, sbyte** %argv.1) {
+entry:          ; No predecessors!
+        %tmp.11 = call ulong %getL( )
+        %tmp.5 = cast ulong %tmp.11 to uint
+        %tmp.23 = and ulong %tmp.11, 18446744069414584320
+        %tmp.16 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([42 x sbyte]* %.str_1, long 0, long 0), uint %tmp.5, uint %tmp.5, ulong %tmp.23, ulong %tmp.23 )
+        ret int 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 0000000..2fede53
--- /dev/null
+++ b/test/CodeGen/Generic/2003-07-08-BadCastToBool.ll
@@ -0,0 +1,36 @@
+; RUN: llvm-upgrade %s | llvm-as | 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 sbyte] c"d = %d, ct = %d, d ^ ct = %d\0A\00"
+
+
+implementation   ; Functions:
+
+declare int %printf(sbyte*, ...)
+
+int %adj(uint %d.1, uint %ct.1) {
+entry:
+        %tmp.19 = seteq uint %ct.1, 2
+        %tmp.22.not = cast uint %ct.1 to bool
+        %tmp.221 = xor bool %tmp.22.not, true
+        %tmp.26 = or bool %tmp.19, %tmp.221
+        %tmp.27 = cast bool %tmp.26 to int
+        ret int %tmp.27
+}
+
+int %main() {
+entry:
+	%result = call int %adj(uint 3, uint 2)
+	%tmp.0 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([30 x sbyte]* %.str_1, long 0, long 0), uint 3, uint 2, int %result)
+	ret int 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 0000000..09a0431
--- /dev/null
+++ b/test/CodeGen/Generic/2003-07-29-BadConstSbyte.ll
@@ -0,0 +1,41 @@
+; RUN: llvm-upgrade < %s | llvm-as | 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 sbyte] c"\06\07\01\08\01\09"
+
+%.str_3 = internal constant [8 x sbyte] c"[%d] = \00"
+%.str_4 = internal constant [4 x sbyte] c"%d\0A\00"
+
+implementation
+
+declare int %printf(sbyte*, ...)
+
+int %main() {
+entry:
+	br label %loopentry
+loopentry:
+	%i = phi long [0, %entry], [%inc.i, %loopentry]
+	%cptr = getelementptr [6 x sbyte]* %yy_ec, long 0, long %i
+	%c = load sbyte* %cptr
+	%ignore = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([8 x sbyte]* %.str_3, long 0, long 0), long %i)
+	%ignore2 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([4 x sbyte]* %.str_4, long 0, long 0), sbyte %c)
+	%inc.i = add long %i, 1
+	%done = setle long %inc.i, 5
+	br bool %done, label %loopentry, label %exit.1
+exit.1:
+	ret int 0
+};
diff --git a/test/CodeGen/Generic/2004-02-08-UnwindSupport.llx b/test/CodeGen/Generic/2004-02-08-UnwindSupport.llx
new file mode 100644
index 0000000..6e57fbc
--- /dev/null
+++ b/test/CodeGen/Generic/2004-02-08-UnwindSupport.llx
@@ -0,0 +1,13 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -enable-correct-eh-support
+
+int %test() {
+  unwind
+}
+
+int %main() {
+	%X = invoke int %test() to label %cont except label %EH
+cont:
+	ret int 1
+EH:
+	ret int 0
+}
diff --git a/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.llx b/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.llx
new file mode 100644
index 0000000..82d33a0
--- /dev/null
+++ b/test/CodeGen/Generic/2004-05-09-LiveVarPartialRegister.llx
@@ -0,0 +1,15 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%global_long_1 = linkonce global long 7
+%global_long_2 = linkonce global long 49
+
+implementation   ; Functions:
+
+int %main() {
+        %l1 = load long* %global_long_1
+        %l2 = load long* %global_long_2
+        %cond = setle long %l1, %l2
+        %cast2 = cast bool %cond to int
+	%RV = sub int 1, %cast2
+        ret int %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 0000000..e47aa18
--- /dev/null
+++ b/test/CodeGen/Generic/2005-01-18-SetUO-InfLoop.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+void %intersect_pixel() {
+entry:
+	%tmp125 = call bool %llvm.isunordered.f64( double 0.000000e+00, double 0.000000e+00 )		; <bool> [#uses=1]
+	%tmp126 = or bool %tmp125, false		; <bool> [#uses=1]
+	%tmp126.not = xor bool %tmp126, true		; <bool> [#uses=1]
+	%brmerge1 = or bool %tmp126.not, false		; <bool> [#uses=1]
+	br bool %brmerge1, label %bb154, label %cond_false133
+
+cond_false133:		; preds = %entry
+	ret void
+
+bb154:		; preds = %entry
+	%tmp164 = seteq uint 0, 0		; <bool> [#uses=0]
+	ret void
+}
+
+declare bool %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 0000000..54f9883
--- /dev/null
+++ b/test/CodeGen/Generic/2005-04-09-GlobalInPHI.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc 
+	%struct.TypHeader = type { uint, %struct.TypHeader**, [3 x sbyte], ubyte }
+%.str_67 = external global [4 x sbyte]		; <[4 x sbyte]*> [#uses=1]
+%.str_87 = external global [17 x sbyte]		; <[17 x sbyte]*> [#uses=1]
+
+implementation   ; Functions:
+
+void %PrBinop() {
+entry:
+	br bool false, label %cond_true, label %else.0
+
+cond_true:		; preds = %entry
+	br label %else.0
+
+else.0:
+	%tmp.167.1 = phi int [ cast ([17 x sbyte]* %.str_87 to int), %entry ], [ 0, %cond_true ]
+	call void %Pr( sbyte* getelementptr ([4 x sbyte]* %.str_67, int 0, int 0), int 0, int 0 )
+	ret void
+}
+
+declare void %Pr(sbyte*, int, int)
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 0000000..3224d1a
--- /dev/null
+++ b/test/CodeGen/Generic/2005-07-12-memcpy-i64-length.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+; Test that llvm.memcpy works with a i64 length operand on all targets.
+
+
+declare void %llvm.memcpy.i64(sbyte*, sbyte*, ulong, uint)
+
+void %l12_l94_bc_divide_endif_2E_3_2E_ce() {
+newFuncRoot:
+	tail call void %llvm.memcpy.i64( sbyte* null, sbyte* null, ulong 0, uint 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 0000000..e7cce1f
--- /dev/null
+++ b/test/CodeGen/Generic/2005-10-18-ZeroSizeStackObject.ll
@@ -0,0 +1,6 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+void %test() {
+  %X = alloca {}
+  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 0000000..d445e59
--- /dev/null
+++ b/test/CodeGen/Generic/2005-10-21-longlonggtu.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+float %t(long %u_arg) {
+	%u = cast long %u_arg to ulong		; <ulong> [#uses=1]
+	%tmp5 = add ulong %u, 9007199254740991		; <ulong> [#uses=1]
+	%tmp = setgt ulong %tmp5, 18014398509481982		; <bool> [#uses=1]
+	br bool %tmp, label %T, label %F
+T:
+	ret float 1.0
+F:
+	call float %t(long 0)
+	ret float 0.0
+}
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 0000000..a9d8deb
--- /dev/null
+++ b/test/CodeGen/Generic/2005-12-01-Crash.ll
@@ -0,0 +1,23 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%str = external global [36 x sbyte]		; <[36 x sbyte]*> [#uses=0]
+%str = external global [29 x sbyte]		; <[29 x sbyte]*> [#uses=0]
+%str1 = external global [29 x sbyte]		; <[29 x sbyte]*> [#uses=0]
+%str2 = external global [29 x sbyte]		; <[29 x sbyte]*> [#uses=1]
+%str = external global [2 x sbyte]		; <[2 x sbyte]*> [#uses=0]
+%str3 = external global [2 x sbyte]		; <[2 x sbyte]*> [#uses=0]
+%str4 = external global [2 x sbyte]		; <[2 x sbyte]*> [#uses=0]
+%str5 = external global [2 x sbyte]		; <[2 x sbyte]*> [#uses=0]
+
+implementation   ; Functions:
+
+void %printArgsNoRet(int %a1, float %a2, sbyte %a3, double %a4, sbyte* %a5, int %a6, float %a7, sbyte %a8, double %a9, sbyte* %a10, int %a11, float %a12, sbyte %a13, double %a14, sbyte* %a15) {
+entry:
+	%tmp17 = cast sbyte %a13 to int		; <int> [#uses=1]
+	%tmp23 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([29 x sbyte]* %str2, int 0, uint 0), int %a11, double 0.000000e+00, int %tmp17, double %a14, int 0 )		; <int> [#uses=0]
+	ret void
+}
+
+declare int %printf(sbyte*, ...)
+
+declare int %main(int, sbyte**)
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 0000000..ef1359e
--- /dev/null
+++ b/test/CodeGen/Generic/2005-12-12-ExpandSextInreg.ll
@@ -0,0 +1,7 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+long %test(long %A) {
+	%B = cast long %A to sbyte
+	%C = cast sbyte %B to long
+	ret long %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 0000000..876e9f2
--- /dev/null
+++ b/test/CodeGen/Generic/2006-01-12-BadSetCCFold.ll
@@ -0,0 +1,37 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+	%struct.node_t = type { double*, %struct.node_t*, %struct.node_t**, double**, double*, int, int }
+
+implementation   ; Functions:
+
+void %main() {
+entry:
+	br bool false, label %then.2.i, label %endif.2.i
+
+then.2.i:		; preds = %entry
+	br label %dealwithargs.exit
+
+endif.2.i:		; preds = %entry
+	br bool 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 int [ 64, %then.3.i ], [ 64, %then.2.i ], [ 64, %endif.2.i ]		; <int> [#uses=1]
+	%tmp.14.i1134.i.i = setgt int %n_nodes.4, 1		; <bool> [#uses=2]
+	br bool %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 bool 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 bool %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 0000000..73fd658
--- /dev/null
+++ b/test/CodeGen/Generic/2006-01-18-InvalidBranchOpcodeAssert.ll
@@ -0,0 +1,16 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+; This crashed the PPC backend.
+
+void %test() {
+	%tmp125 = call bool %llvm.isunordered.f64( double 0.000000e+00, double 0.000000e+00 )		; <bool> [#uses=1]
+	br bool %tmp125, label %bb154, label %cond_false133
+
+cond_false133:		; preds = %entry
+	ret void
+
+bb154:		; preds = %entry
+	%tmp164 = seteq uint 0, 0		; <bool> [#uses=0]
+	ret void
+}
+
+declare bool %llvm.isunordered.f64(double, double)
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 0000000..d18ce14
--- /dev/null
+++ b/test/CodeGen/Generic/2006-02-12-InsertLibcall.ll
@@ -0,0 +1,60 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+%G = external global int
+
+void %encode_one_frame(long %tmp.2i) {
+entry:
+	%tmp.9 = seteq int 0, 0		; <bool> [#uses=1]
+	br bool %tmp.9, label %endif.0, label %shortcirc_next.0
+
+then.5.i:		; preds = %shortcirc_next.i
+	%tmp.114.i = div long %tmp.2i, 3		; <long> [#uses=1]
+	%tmp.111.i = call long %lseek( int 0, long %tmp.114.i, int 1 )		; <long> [#uses=0]
+	ret void
+
+shortcirc_next.0:		; preds = %entry
+	ret void
+
+endif.0:		; preds = %entry
+	%tmp.324.i = seteq int 0, 0		; <bool> [#uses=2]
+	%tmp.362.i = setlt int 0, 0		; <bool> [#uses=1]
+	br bool %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 bool %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 bool %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 = seteq int 0, 0		; <bool> [#uses=1]
+	br bool %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 int* %G
+	%tmp.29.i = seteq int %tmp.28.i, 1		; <bool> [#uses=1]
+	br bool %tmp.29.i, label %shortcirc_next.i, label %shortcirc_done.i
+
+shortcirc_next.i:		; preds = %else.1.i56
+	%tmp.34.i = seteq int 0, 3		; <bool> [#uses=1]
+	br bool %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 long %lseek(int, long, int)
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 0000000..797af74
--- /dev/null
+++ b/test/CodeGen/Generic/2006-03-01-dagcombineinfloop.ll
@@ -0,0 +1,98 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+; Infinite loop in the dag combiner, reduced from 176.gcc.
+
+	%struct._obstack_chunk = type { sbyte*, %struct._obstack_chunk*, [4 x sbyte] }
+	%struct.anon = type { int }
+	%struct.lang_decl = type opaque
+	%struct.lang_type = type { int, [1 x %struct.tree_node*] }
+	%struct.obstack = type { int, %struct._obstack_chunk*, sbyte*, sbyte*, sbyte*, int, int, %struct._obstack_chunk* (...)*, void (...)*, sbyte*, ubyte }
+	%struct.rtx_def = type { ushort, ubyte, ubyte, [1 x %struct.anon] }
+	%struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, ubyte, ubyte, ubyte, ubyte }
+	%struct.tree_decl = type { [12 x sbyte], sbyte*, int, %struct.tree_node*, uint, ubyte, ubyte, ubyte, ubyte, %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 sbyte], %struct.tree_node*, %struct.tree_node* }
+	%struct.tree_node = type { %struct.tree_decl }
+	%struct.tree_type = type { [12 x sbyte], %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, uint, ubyte, ubyte, ubyte, ubyte, uint, %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]
+
+implementation   ; Functions:
+
+fastcc int %self_promoting_args_p(%struct.tree_node* %parms) {
+entry:
+	%tmp915 = seteq %struct.tree_node* %parms, null		; <bool> [#uses=1]
+	br bool %tmp915, label %return, label %cond_true92.preheader
+
+cond_true:		; preds = %cond_true92
+	%tmp9.not = setne %struct.tree_node* %tmp2, %tmp7		; <bool> [#uses=1]
+	%tmp14 = seteq %struct.tree_node* %tmp2, null		; <bool> [#uses=1]
+	%bothcond = or bool %tmp9.not, %tmp14		; <bool> [#uses=1]
+	br bool %bothcond, label %return, label %cond_next18
+
+cond_next12:		; preds = %cond_true92
+	%tmp14.old = seteq %struct.tree_node* %tmp2, null		; <bool> [#uses=1]
+	br bool %tmp14.old, label %return, label %cond_next18
+
+cond_next18:		; preds = %cond_next12, %cond_true
+	%tmp20 = cast %struct.tree_node* %tmp2 to %struct.tree_type*		; <%struct.tree_type*> [#uses=1]
+	%tmp21 = getelementptr %struct.tree_type* %tmp20, int 0, uint 17		; <%struct.tree_node**> [#uses=1]
+	%tmp22 = load %struct.tree_node** %tmp21		; <%struct.tree_node*> [#uses=6]
+	%tmp24 = seteq %struct.tree_node* %tmp22, %tmp23		; <bool> [#uses=1]
+	br bool %tmp24, label %return, label %cond_next28
+
+cond_next28:		; preds = %cond_next18
+	%tmp30 = cast %struct.tree_node* %tmp2 to %struct.tree_common*		; <%struct.tree_common*> [#uses=1]
+	%tmp = getelementptr %struct.tree_common* %tmp30, int 0, uint 2		; <ubyte*> [#uses=1]
+	%tmp = cast ubyte* %tmp to uint*		; <uint*> [#uses=1]
+	%tmp = load uint* %tmp		; <uint> [#uses=1]
+	%tmp32 = cast uint %tmp to ubyte		; <ubyte> [#uses=1]
+	%tmp33 = seteq ubyte %tmp32, 7		; <bool> [#uses=1]
+	br bool %tmp33, label %cond_true34, label %cond_next84
+
+cond_true34:		; preds = %cond_next28
+	%tmp40 = seteq %struct.tree_node* %tmp22, %tmp39		; <bool> [#uses=1]
+	%tmp49 = seteq %struct.tree_node* %tmp22, %tmp48		; <bool> [#uses=1]
+	%bothcond6 = or bool %tmp40, %tmp49		; <bool> [#uses=1]
+	%tmp58 = seteq %struct.tree_node* %tmp22, %tmp57		; <bool> [#uses=1]
+	%bothcond7 = or bool %bothcond6, %tmp58		; <bool> [#uses=1]
+	%tmp67 = seteq %struct.tree_node* %tmp22, %tmp66		; <bool> [#uses=1]
+	%bothcond8 = or bool %bothcond7, %tmp67		; <bool> [#uses=1]
+	%tmp76 = seteq %struct.tree_node* %tmp22, %tmp75		; <bool> [#uses=1]
+	%bothcond9 = or bool %bothcond8, %tmp76		; <bool> [#uses=2]
+	%brmerge = or bool %bothcond9, %tmp		; <bool> [#uses=1]
+	%bothcond9 = cast bool %bothcond9 to int		; <int> [#uses=1]
+	%.mux = xor int %bothcond9, 1		; <int> [#uses=1]
+	br bool %brmerge, label %return, label %cond_true92
+
+cond_next84:		; preds = %cond_next28
+	br bool %tmp, 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 = cast %struct.tree_node* %t.0.0 to %struct.tree_list*		; <%struct.tree_list*> [#uses=1]
+	%tmp = getelementptr %struct.tree_list* %tmp, int 0, uint 2		; <%struct.tree_node**> [#uses=1]
+	%tmp2 = load %struct.tree_node** %tmp		; <%struct.tree_node*> [#uses=5]
+	%tmp4 = cast %struct.tree_node* %t.0.0 to %struct.tree_common*		; <%struct.tree_common*> [#uses=1]
+	%tmp5 = getelementptr %struct.tree_common* %tmp4, int 0, uint 0		; <%struct.tree_node**> [#uses=1]
+	%tmp6 = load %struct.tree_node** %tmp5		; <%struct.tree_node*> [#uses=3]
+	%tmp = seteq %struct.tree_node* %tmp6, null		; <bool> [#uses=3]
+	br bool %tmp, label %cond_true, label %cond_next12
+
+return:		; preds = %cond_next84, %cond_true34, %cond_next18, %cond_next12, %cond_true, %entry
+	%retval.0 = phi int [ 1, %entry ], [ 1, %cond_next84 ], [ %.mux, %cond_true34 ], [ 0, %cond_next18 ], [ 0, %cond_next12 ], [ 0, %cond_true ]		; <int> [#uses=1]
+	ret int %retval.0
+}
diff --git a/test/CodeGen/Generic/2006-03-27-DebugInfoNULLDeclare.ll b/test/CodeGen/Generic/2006-03-27-DebugInfoNULLDeclare.ll
new file mode 100644
index 0000000..4e262f8
--- /dev/null
+++ b/test/CodeGen/Generic/2006-03-27-DebugInfoNULLDeclare.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+implementation   ; Functions:
+
+declare void %llvm.dbg.declare({  }*, {  }*)
+
+void %foo() {
+	call void %llvm.dbg.declare( {  }* null, {  }* null ) 
+	ret void
+}
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 0000000..056edac
--- /dev/null
+++ b/test/CodeGen/Generic/2006-04-11-vecload.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 -mcpu=yonah
+
+; The vload was getting memoized to the previous scalar load!
+
+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, uint 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 0000000..2a424be
--- /dev/null
+++ b/test/CodeGen/Generic/2006-04-26-SetCCAnd.ll
@@ -0,0 +1,43 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+; PR748
+
+%G = external global ushort		; <ushort*> [#uses=1]
+
+implementation   ; Functions:
+
+void %OmNewObjHdr() {
+entry:
+	br bool false, label %endif.4, label %then.0
+
+then.0:		; preds = %entry
+	ret void
+
+endif.4:		; preds = %entry
+	br bool false, label %else.3, label %shortcirc_next.3
+
+shortcirc_next.3:		; preds = %endif.4
+	ret void
+
+else.3:		; preds = %endif.4
+	switch int 0, label %endif.10 [
+		 int 5001, label %then.10
+		 int -5008, label %then.10
+	]
+
+then.10:		; preds = %else.3, %else.3
+	%tmp.112 = load ushort* null		; <ushort> [#uses=2]
+	%tmp.113 = load ushort* %G		; <ushort> [#uses=2]
+	%tmp.114 = setgt ushort %tmp.112, %tmp.113		; <bool> [#uses=1]
+	%tmp.120 = setlt ushort %tmp.112, %tmp.113		; <bool> [#uses=1]
+	%bothcond = and bool %tmp.114, %tmp.120		; <bool> [#uses=1]
+	br bool %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 0000000..068d680
--- /dev/null
+++ b/test/CodeGen/Generic/2006-04-28-Sign-extend-bool.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+int %test(int %tmp93) {
+	%tmp98 = shl int %tmp93, ubyte 31		; <int> [#uses=1]
+	%tmp99 = shr int %tmp98, ubyte 31		; <int> [#uses=1]
+	%tmp99 = cast int %tmp99 to sbyte		; <sbyte> [#uses=1]
+	%tmp99100 = cast sbyte %tmp99 to int		; <int> [#uses=1]
+	ret int %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 0000000..ac7e19d
--- /dev/null
+++ b/test/CodeGen/Generic/2006-05-06-GEP-Cast-Sink-Crash.ll
@@ -0,0 +1,33 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+       %struct.FILE = type { ubyte*, int, int, short, short, %struct.__sbuf, int, sbyte*, int (sbyte*)*, int (sbyte*, sbyte*, int)*, long (sbyte*, long, int)*, int (sbyte*, sbyte*, int)*, %struct.__sbuf, %struct.__sFILEX*, int, [3 x ubyte], [1 x ubyte], %struct.__sbuf, int, long }
+        %struct.SYMBOL_TABLE_ENTRY = type { [9 x sbyte], [9 x sbyte], int, int, uint, %struct.SYMBOL_TABLE_ENTRY* }
+        %struct.__sFILEX = type opaque
+        %struct.__sbuf = type { ubyte*, int }
+%str14 = external global [6 x sbyte]            ; <[6 x sbyte]*> [#uses=0]
+
+implementation   ; Functions:
+
+declare void %fprintf(int, ...)
+
+void %OUTPUT_TABLE(%struct.SYMBOL_TABLE_ENTRY* %SYM_TAB) {
+entry:
+        %tmp11 = getelementptr %struct.SYMBOL_TABLE_ENTRY* %SYM_TAB, int 0, uint 1, int 0               ; <sbyte*> [#uses=2]
+        %tmp.i = cast sbyte* %tmp11 to ubyte*           ; <ubyte*> [#uses=1]
+        br label %bb.i
+
+bb.i:           ; preds = %cond_next.i, %entry
+        %s1.0.i = phi ubyte* [ %tmp.i, %entry ], [ null, %cond_next.i ]         ; <ubyte*> [#uses=0]
+        br bool false, label %cond_true.i31, label %cond_next.i
+
+cond_true.i31:          ; preds = %bb.i
+        call void (int, ...)* %fprintf( int 0, sbyte* %tmp11, sbyte* null )
+        ret void
+
+cond_next.i:            ; preds = %bb.i
+        br bool 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 0000000..0cf2e93
--- /dev/null
+++ b/test/CodeGen/Generic/2006-06-12-LowerSwitchCrash.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -fast
+
+float %test(uint %tmp12771278) {
+        switch uint %tmp12771278, label %bb1279 [
+        ]
+
+bb1279:         ; preds = %cond_next1272
+        ret float 1.0
+}
+
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 0000000..a910b58
--- /dev/null
+++ b/test/CodeGen/Generic/2006-06-13-ComputeMaskedBitsCrash.ll
@@ -0,0 +1,37 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -fast
+
+	%struct.cl_perfunc_opts = type { ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, int, int, int, int, int, int, int }
+%cl_pf_opts = external global %struct.cl_perfunc_opts		; <%struct.cl_perfunc_opts*> [#uses=2]
+
+implementation   ; Functions:
+
+void %set_flags_from_O() {
+entry:
+	%tmp22 = setgt int 0, 0		; <bool> [#uses=1]
+	br bool %tmp22, label %cond_true23, label %cond_next159
+
+cond_true23:		; preds = %entry
+	%tmp138 = getelementptr %struct.cl_perfunc_opts* %cl_pf_opts, int 0, uint 8		; <ubyte*> [#uses=1]
+	%tmp138 = cast ubyte* %tmp138 to uint*		; <uint*> [#uses=2]
+	%tmp139 = load uint* %tmp138		; <uint> [#uses=1]
+	%tmp140 = shl uint 1, ubyte 27		; <uint> [#uses=1]
+	%tmp141 = and uint %tmp140, 134217728		; <uint> [#uses=1]
+	%tmp142 = and uint %tmp139, 4160749567		; <uint> [#uses=1]
+	%tmp143 = or uint %tmp142, %tmp141		; <uint> [#uses=1]
+	store uint %tmp143, uint* %tmp138
+	%tmp144 = getelementptr %struct.cl_perfunc_opts* %cl_pf_opts, int 0, uint 8		; <ubyte*> [#uses=1]
+	%tmp144 = cast ubyte* %tmp144 to uint*		; <uint*> [#uses=1]
+	%tmp145 = load uint* %tmp144		; <uint> [#uses=1]
+	%tmp146 = shl uint %tmp145, ubyte 22		; <uint> [#uses=1]
+	%tmp147 = shr uint %tmp146, ubyte 31		; <uint> [#uses=1]
+	%tmp147 = cast uint %tmp147 to ubyte		; <ubyte> [#uses=1]
+	%tmp148 = seteq ubyte %tmp147, 0		; <bool> [#uses=1]
+	br bool %tmp148, label %cond_true149, label %cond_next159
+
+cond_true149:		; preds = %cond_true23
+	%tmp150 = cast ubyte* null to uint*		; <uint*> [#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 0000000..1fe13f8
--- /dev/null
+++ b/test/CodeGen/Generic/2006-06-28-SimplifySetCCCrash.ll
@@ -0,0 +1,281 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+	%struct.rtunion = type { long }
+	%struct.rtx_def = type { ushort, ubyte, ubyte, [1 x %struct.rtunion] }
+%ix86_cpu = external global uint		; <uint*> [#uses=1]
+%which_alternative = external global int		; <int*> [#uses=3]
+
+implementation   ; Functions:
+
+declare fastcc int %recog()
+
+void %athlon_fp_unit_ready_cost() {
+entry:
+	%tmp = setlt int 0, 0		; <bool> [#uses=1]
+	br bool %tmp, label %cond_true.i, label %cond_true
+
+cond_true:		; preds = %entry
+	ret void
+
+cond_true.i:		; preds = %entry
+	%tmp8.i = tail call fastcc int %recog( )		; <int> [#uses=1]
+	switch int %tmp8.i, label %UnifiedReturnBlock [
+		 int -1, label %bb2063
+		 int 19, label %bb2035
+		 int 20, label %bb2035
+		 int 21, label %bb2035
+		 int 23, label %bb2035
+		 int 24, label %bb2035
+		 int 27, label %bb2035
+		 int 32, label %bb2035
+		 int 33, label %bb1994
+		 int 35, label %bb2035
+		 int 36, label %bb1994
+		 int 90, label %bb1948
+		 int 94, label %bb1948
+		 int 95, label %bb1948
+		 int 101, label %bb1648
+		 int 102, label %bb1648
+		 int 103, label %bb1648
+		 int 104, label %bb1648
+		 int 133, label %bb1419
+		 int 135, label %bb1238
+		 int 136, label %bb1238
+		 int 137, label %bb1238
+		 int 138, label %bb1238
+		 int 139, label %bb1201
+		 int 140, label %bb1201
+		 int 141, label %bb1154
+		 int 142, label %bb1126
+		 int 144, label %bb1201
+		 int 145, label %bb1126
+		 int 146, label %bb1201
+		 int 147, label %bb1126
+		 int 148, label %bb1201
+		 int 149, label %bb1126
+		 int 150, label %bb1201
+		 int 151, label %bb1126
+		 int 152, label %bb1096
+		 int 153, label %bb1096
+		 int 154, label %bb1096
+		 int 157, label %bb1096
+		 int 158, label %bb1096
+		 int 159, label %bb1096
+		 int 162, label %bb1096
+		 int 163, label %bb1096
+		 int 164, label %bb1096
+		 int 167, label %bb1201
+		 int 168, label %bb1201
+		 int 170, label %bb1201
+		 int 171, label %bb1201
+		 int 173, label %bb1201
+		 int 174, label %bb1201
+		 int 176, label %bb1201
+		 int 177, label %bb1201
+		 int 179, label %bb993
+		 int 180, label %bb993
+		 int 181, label %bb993
+		 int 182, label %bb993
+		 int 183, label %bb993
+		 int 184, label %bb993
+		 int 365, label %bb1126
+		 int 366, label %bb1126
+		 int 367, label %bb1126
+		 int 368, label %bb1126
+		 int 369, label %bb1126
+		 int 370, label %bb1126
+		 int 371, label %bb1126
+		 int 372, label %bb1126
+		 int 373, label %bb1126
+		 int 384, label %bb1126
+		 int 385, label %bb1126
+		 int 386, label %bb1126
+		 int 387, label %bb1126
+		 int 388, label %bb1126
+		 int 389, label %bb1126
+		 int 390, label %bb1126
+		 int 391, label %bb1126
+		 int 392, label %bb1126
+		 int 525, label %bb919
+		 int 526, label %bb839
+		 int 528, label %bb919
+		 int 529, label %bb839
+		 int 531, label %cond_next6.i119
+		 int 532, label %cond_next6.i97
+		 int 533, label %cond_next6.i81
+		 int 534, label %bb495
+		 int 536, label %cond_next6.i81
+		 int 537, label %cond_next6.i81
+		 int 538, label %bb396
+		 int 539, label %bb288
+		 int 541, label %bb396
+		 int 542, label %bb396
+		 int 543, label %bb396
+		 int 544, label %bb396
+		 int 545, label %bb189
+		 int 546, label %cond_next6.i
+		 int 547, label %bb189
+		 int 548, label %cond_next6.i
+		 int 549, label %bb189
+		 int 550, label %cond_next6.i
+		 int 551, label %bb189
+		 int 552, label %cond_next6.i
+		 int 553, label %bb189
+		 int 554, label %cond_next6.i
+		 int 555, label %bb189
+		 int 556, label %cond_next6.i
+		 int 557, label %bb189
+		 int 558, label %cond_next6.i
+		 int 618, label %bb40
+		 int 619, label %bb18
+		 int 620, label %bb40
+		 int 621, label %bb10
+		 int 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 = seteq ushort 0, 78		; <bool> [#uses=1]
+	br bool %tmp.i126, label %cond_next778, label %bb802
+
+cond_next778:		; preds = %cond_next6.i119
+	%tmp781 = seteq uint 0, 1		; <bool> [#uses=1]
+	br bool %tmp781, label %cond_next784, label %bb790
+
+cond_next784:		; preds = %cond_next778
+	%tmp785 = load uint* %ix86_cpu		; <uint> [#uses=1]
+	%tmp786 = seteq uint %tmp785, 5		; <bool> [#uses=1]
+	br bool %tmp786, label %UnifiedReturnBlock, label %bb790
+
+bb790:		; preds = %cond_next784, %cond_next778
+	%tmp793 = seteq uint 0, 1		; <bool> [#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 int* %which_alternative		; <int> [#uses=1]
+	switch int %tmp1650, label %bb1701 [
+		 int 0, label %cond_next1675
+		 int 1, label %cond_next1675
+		 int 2, label %cond_next1675
+	]
+
+cond_next1675:		; preds = %bb1648, %bb1648, %bb1648
+	ret void
+
+bb1701:		; preds = %bb1648
+	%tmp1702 = load int* %which_alternative		; <int> [#uses=1]
+	switch int %tmp1702, label %bb1808 [
+		 int 0, label %cond_next1727
+		 int 1, label %cond_next1727
+		 int 2, label %cond_next1727
+	]
+
+cond_next1727:		; preds = %bb1701, %bb1701, %bb1701
+	ret void
+
+bb1808:		; preds = %bb1701
+	%bothcond696 = or bool false, false		; <bool> [#uses=1]
+	br bool %bothcond696, label %bb1876, label %cond_next1834
+
+cond_next1834:		; preds = %bb1808
+	ret void
+
+bb1876:		; preds = %bb1808
+	%tmp1877signed = load int* %which_alternative   ; <int> [#uses=4]
+	%tmp1877 = cast int %tmp1877signed to uint	; <uint> [#uses=1]
+	%bothcond699 = setlt uint %tmp1877, 2		; <bool> [#uses=1]
+	%tmp1888 = seteq int %tmp1877signed, 2		; <bool> [#uses=1]
+	%bothcond700 = or bool %bothcond699, %tmp1888		; <bool> [#uses=1]
+	%bothcond700.not = xor bool %bothcond700, true		; <bool> [#uses=1]
+	%tmp1894 = seteq int %tmp1877signed, 3		; <bool> [#uses=1]
+	%bothcond701 = or bool %tmp1894, %bothcond700.not		; <bool> [#uses=1]
+	%bothcond702 = or bool %bothcond701, false		; <bool> [#uses=1]
+	br bool %bothcond702, label %UnifiedReturnBlock, label %cond_next1902
+
+cond_next1902:		; preds = %bb1876
+	switch int %tmp1877signed, label %cond_next1937 [
+		 int 0, label %bb1918
+		 int 1, label %bb1918
+		 int 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 int [ 100, %bb1876 ], [ 100, %cond_true.i ], [ 4, %cond_next784 ]		; <int> [#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 0000000..6edb7a0
--- /dev/null
+++ b/test/CodeGen/Generic/2006-07-03-schedulers.ll
@@ -0,0 +1,40 @@
+; RUN: llvm-upgrade %s | llvm-as | llc -pre-RA-sched=none
+; RUN: llvm-upgrade %s | llvm-as | llc -pre-RA-sched=default
+; RUN: llvm-upgrade %s | llvm-as | llc -pre-RA-sched=simple
+; RUN: llvm-upgrade %s | llvm-as | llc -pre-RA-sched=simple-noitin
+; RUN: llvm-upgrade %s | llvm-as | llc -pre-RA-sched=list-td
+; RUN: llvm-upgrade %s | llvm-as | llc -pre-RA-sched=list-tdrr
+; RUN: llvm-upgrade %s | llvm-as | llc -pre-RA-sched=list-burr
+; PR859
+
+implementation
+declare int "printf"(sbyte*, int, float)
+
+
+int "testissue"(int %i, float %x, float %y)
+begin
+	br label %bb1
+bb1:
+	%x1 = mul float %x, %y			;; x1
+	%y1 = mul float %y, 0.75		;; y1
+	%z1 = add float %x1, %y1		;; z1 = x1 + y1
+	
+	%x2 = mul float %x, 0.5			;; x2
+	%y2 = mul float %y, 0.9			;; y2
+	%z2 = add float %x2, %y2		;; z2 = x2 + y2
+	
+	%z3 = add float %z1, %z2		;; z3 = z1 + z2
+	    
+	%i1 = shl int   %i, ubyte 3		;; i1
+	%j1 = add int   %i, 7			;; j1
+	%m1 = add int   %i1, %j1		;; k1 = i1 + j1
+;;	%m1 = div int   %k1, 99			;; m1 = k1 / 99
+	
+	%b  = setle int %m1, 6			;; (m1 <= 6)?
+	br bool %b, label %bb1, label %bb2
+
+bb2:
+	%Msg = cast ulong 0 to sbyte *
+	call int %printf(sbyte* %Msg, int %m1, float %z3)
+	ret int 0
+end
diff --git a/test/CodeGen/Generic/2006-08-30-CoallescerCrash.ll b/test/CodeGen/Generic/2006-08-30-CoallescerCrash.ll
new file mode 100644
index 0000000..68aadc5
--- /dev/null
+++ b/test/CodeGen/Generic/2006-08-30-CoallescerCrash.ll
@@ -0,0 +1,115 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc 
+
+	%struct.CUMULATIVE_ARGS = type { int, int, int, int, int, int, int, int, int, int, int, int, int, int }
+	%struct.VEC_edge = type { uint, uint, [1 x %struct.edge_def*] }
+	%struct._obstack_chunk = type { sbyte*, %struct._obstack_chunk*, [4 x sbyte] }
+	%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*, sbyte*, %struct.loop*, [2 x %struct.et_node*], %struct.basic_block_def*, %struct.basic_block_def*, %struct.reorder_block_def*, %struct.bb_ann_d*, long, int, int, int, int }
+	%struct.bb_ann_d = type { %struct.tree_node*, ubyte, %struct.edge_prediction* }
+	%struct.bitmap_element_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, uint, [4 x uint] }
+	%struct.bitmap_head_def = type { %struct.bitmap_element_def*, %struct.bitmap_element_def*, uint, %struct.bitmap_obstack* }
+	%struct.bitmap_obstack = type { %struct.bitmap_element_def*, %struct.bitmap_head_def*, %struct.obstack }
+	%struct.cost_pair = type { %struct.iv_cand*, uint, %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 { uint, [1 x %struct.def_operand_ptr] }
+	%struct.edge_def = type { %struct.basic_block_def*, %struct.basic_block_def*, %struct.edge_def_insns, sbyte*, %struct.location_t*, int, int, long, uint }
+	%struct.edge_def_insns = type { %struct.rtx_def* }
+	%struct.edge_prediction = type { %struct.edge_prediction*, %struct.edge_def*, uint, int }
+	%struct.eh_status = type opaque
+	%struct.emit_status = type { int, int, %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack*, int, %struct.location_t, int, ubyte*, %struct.rtx_def** }
+	%struct.et_node = type opaque
+	%struct.expr_status = type { int, int, int, %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*, int, int, int, int, %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*, ubyte, int, long, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.varray_head_tag*, %struct.temp_slot*, int, %struct.var_refs_queue*, int, int, %struct.rtvec_def*, %struct.tree_node*, int, int, int, %struct.machine_function*, uint, uint, bool, bool, %struct.language_function*, %struct.rtx_def*, uint, int, int, int, %struct.location_t, %struct.varray_head_tag*, %struct.tree_node*, ubyte, ubyte, ubyte }
+	%struct.htab = type { uint (sbyte*)*, int (sbyte*, sbyte*)*, void (sbyte*)*, sbyte**, uint, uint, uint, uint, uint, sbyte* (uint, uint)*, void (sbyte*)*, sbyte*, sbyte* (sbyte*, uint, uint)*, void (sbyte*, sbyte*)*, uint }
+	%struct.initial_value_struct = type opaque
+	%struct.iv = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, bool, bool, uint }
+	%struct.iv_cand = type { uint, bool, uint, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.iv*, uint }
+	%struct.iv_use = type { uint, uint, %struct.iv*, %struct.tree_node*, %struct.tree_node**, %struct.bitmap_head_def*, uint, %struct.cost_pair*, %struct.iv_cand* }
+	%struct.ivopts_data = type { %struct.loop*, %struct.htab*, uint, %struct.version_info*, %struct.bitmap_head_def*, uint, %struct.varray_head_tag*, %struct.varray_head_tag*, %struct.bitmap_head_def*, bool }
+	%struct.lang_decl = type opaque
+	%struct.language_function = type opaque
+	%struct.location_t = type { sbyte*, int }
+	%struct.loop = type { int, %struct.basic_block_def*, %struct.basic_block_def*, %struct.basic_block_def*, %struct.lpt_decision, uint, uint, %struct.edge_def**, int, %struct.basic_block_def*, %struct.basic_block_def*, uint, %struct.edge_def**, int, %struct.edge_def**, int, %struct.simple_bitmap_def*, int, %struct.loop**, int, %struct.loop*, %struct.loop*, %struct.loop*, %struct.loop*, int, sbyte*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, int, %struct.tree_node*, %struct.tree_node*, %struct.nb_iter_bound*, %struct.edge_def*, bool }
+	%struct.lpt_decision = type { uint, uint }
+	%struct.machine_function = type { %struct.stack_local_entry*, sbyte*, %struct.rtx_def*, int, int, int, int, int }
+	%struct.nb_iter_bound = type { %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.nb_iter_bound* }
+	%struct.obstack = type { int, %struct._obstack_chunk*, sbyte*, sbyte*, sbyte*, int, int, %struct._obstack_chunk* (sbyte*, int)*, void (sbyte*, %struct._obstack_chunk*)*, sbyte*, ubyte }
+	%struct.reorder_block_def = type { %struct.rtx_def*, %struct.rtx_def*, %struct.basic_block_def*, %struct.basic_block_def*, %struct.basic_block_def*, int, int, int }
+	%struct.rtvec_def = type { int, [1 x %struct.rtx_def*] }
+	%struct.rtx_def = type { ushort, ubyte, ubyte, %struct.u }
+	%struct.sequence_stack = type { %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack* }
+	%struct.simple_bitmap_def = type { uint, uint, uint, [1 x ulong] }
+	%struct.stack_local_entry = type opaque
+	%struct.stmt_ann_d = type { %struct.tree_ann_common_d, ubyte, %struct.basic_block_def*, %struct.stmt_operands_d, %struct.dataflow_d*, %struct.bitmap_head_def*, uint }
+	%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 { uint, sbyte*, %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*, ubyte, ubyte, ubyte, ubyte, ubyte }
+	%struct.tree_decl = type { %struct.tree_common, %struct.location_t, uint, %struct.tree_node*, ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, ubyte, uint, %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*, int, %struct.tree_decl_u2, %struct.tree_node*, %struct.tree_node*, long, %struct.lang_decl* }
+	%struct.tree_decl_u1 = type { long }
+	%struct.tree_decl_u2 = type { %struct.function* }
+	%struct.tree_node = type { %struct.tree_decl }
+	%struct.u = type { [1 x long] }
+	%struct.v_def_use_operand_type_t = type { %struct.tree_node*, %struct.tree_node* }
+	%struct.v_may_def_optype_d = type { uint, [1 x %struct.v_def_use_operand_type_t] }
+	%struct.var_refs_queue = type { %struct.rtx_def*, uint, int, %struct.var_refs_queue* }
+	%struct.varasm_status = type opaque
+	%struct.varray_head_tag = type { uint, uint, uint, sbyte*, %struct.u }
+	%struct.version_info = type { %struct.tree_node*, %struct.iv*, bool, uint, bool }
+	%struct.vuse_optype_d = type { uint, [1 x %struct.tree_node*] }
+
+implementation   ; Functions:
+
+bool %determine_use_iv_cost(%struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand) {
+entry:
+	switch uint 0, label %bb91 [
+		 uint 0, label %bb
+		 uint 1, label %bb6
+		 uint 3, label %cond_next135
+	]
+
+bb:		; preds = %entry
+	ret bool false
+
+bb6:		; preds = %entry
+	br bool false, label %bb87, label %cond_next27
+
+cond_next27:		; preds = %bb6
+	br bool false, label %cond_true30, label %cond_next55
+
+cond_true30:		; preds = %cond_next27
+	br bool false, label %cond_next41, label %cond_true35
+
+cond_true35:		; preds = %cond_true30
+	ret bool false
+
+cond_next41:		; preds = %cond_true30
+	%tmp44 = call uint %force_var_cost( %struct.ivopts_data* %data, %struct.tree_node* null, %struct.bitmap_head_def** null )		; <uint> [#uses=2]
+	%tmp46 = div uint %tmp44, 5		; <uint> [#uses=1]
+	call void %set_use_iv_cost( %struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand, uint %tmp46, %struct.bitmap_head_def* null )
+	%tmp44.off = add uint %tmp44, 4244967296		; <uint> [#uses=1]
+	%tmp52 = setgt uint %tmp44.off, 4		; <bool> [#uses=1]
+	%tmp52 = cast bool %tmp52 to int		; <int> [#uses=1]
+	br label %bb87
+
+cond_next55:		; preds = %cond_next27
+	ret bool false
+
+bb87:		; preds = %cond_next41, %bb6
+	%tmp2.0 = phi int [ %tmp52, %cond_next41 ], [ 1, %bb6 ]		; <int> [#uses=0]
+	ret bool false
+
+bb91:		; preds = %entry
+	ret bool false
+
+cond_next135:		; preds = %entry
+	%tmp193 = call bool %determine_use_iv_cost_generic( %struct.ivopts_data* %data, %struct.iv_use* %use, %struct.iv_cand* %cand )		; <bool> [#uses=0]
+	ret bool false
+}
+
+declare void %set_use_iv_cost(%struct.ivopts_data*, %struct.iv_use*, %struct.iv_cand*, uint, %struct.bitmap_head_def*)
+
+declare uint %force_var_cost(%struct.ivopts_data*, %struct.tree_node*, %struct.bitmap_head_def**)
+
+declare bool %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 0000000..e2f07e8
--- /dev/null
+++ b/test/CodeGen/Generic/2006-09-02-LocalAllocCrash.ll
@@ -0,0 +1,115 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -regalloc=local
+
+	%struct.CHESS_POSITION = type { ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, ulong, uint, int, sbyte, sbyte, [64 x sbyte], sbyte, sbyte, sbyte, sbyte, sbyte }
+%search = external global %struct.CHESS_POSITION		; <%struct.CHESS_POSITION*> [#uses=2]
+%bishop_shift_rl45 = external global [64 x int]		; <[64 x int]*> [#uses=1]
+%bishop_shift_rr45 = external global [64 x int]		; <[64 x int]*> [#uses=1]
+%black_outpost = external global [64 x sbyte]		; <[64 x sbyte]*> [#uses=1]
+%bishop_mobility_rl45 = external global [64 x [256 x int]]		; <[64 x [256 x int]]*> [#uses=1]
+%bishop_mobility_rr45 = external global [64 x [256 x int]]		; <[64 x [256 x int]]*> [#uses=1]
+
+implementation   ; Functions:
+
+declare fastcc int %FirstOne()
+
+fastcc void %Evaluate() {
+entry:
+	br bool false, label %cond_false186, label %cond_true
+
+cond_true:		; preds = %entry
+	ret void
+
+cond_false186:		; preds = %entry
+	br bool false, label %cond_true293, label %bb203
+
+bb203:		; preds = %cond_false186
+	ret void
+
+cond_true293:		; preds = %cond_false186
+	br bool false, label %cond_true298, label %cond_next317
+
+cond_true298:		; preds = %cond_true293
+	br bool 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 bool false, label %bb1069, label %cond_true522
+
+cond_true522:		; preds = %cond_next518
+	ret void
+
+bb1069:		; preds = %cond_next518
+	br bool false, label %cond_next1131, label %bb1096
+
+bb1096:		; preds = %bb1069
+	ret void
+
+cond_next1131:		; preds = %bb1069
+	br bool false, label %cond_next1207, label %cond_true1150
+
+cond_true1150:		; preds = %cond_next1131
+	ret void
+
+cond_next1207:		; preds = %cond_next1131
+	br bool false, label %cond_next1219, label %cond_true1211
+
+cond_true1211:		; preds = %cond_next1207
+	ret void
+
+cond_next1219:		; preds = %cond_next1207
+	br bool false, label %cond_true1223, label %cond_next1283
+
+cond_true1223:		; preds = %cond_next1219
+	br bool false, label %cond_true1254, label %cond_true1264
+
+cond_true1254:		; preds = %cond_true1223
+	br bool 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 ulong* getelementptr (%struct.CHESS_POSITION* %search, int 0, uint 3)		; <ulong> [#uses=1]
+	%tmp1591 = load ulong* getelementptr (%struct.CHESS_POSITION* %search, int 0, uint 4)		; <ulong> [#uses=1]
+	%tmp1572 = tail call fastcc int %FirstOne( )		; <int> [#uses=5]
+	%tmp1582 = getelementptr [64 x int]* %bishop_shift_rl45, int 0, int %tmp1572		; <int*> [#uses=1]
+	%tmp1583 = load int* %tmp1582		; <int> [#uses=1]
+	%tmp1583 = cast int %tmp1583 to ubyte		; <ubyte> [#uses=1]
+	%tmp1584 = shr ulong %tmp1580, ubyte %tmp1583		; <ulong> [#uses=1]
+	%tmp1584 = cast ulong %tmp1584 to uint		; <uint> [#uses=1]
+	%tmp1585 = and uint %tmp1584, 255		; <uint> [#uses=1]
+	%tmp1587 = getelementptr [64 x [256 x int]]* %bishop_mobility_rl45, int 0, int %tmp1572, uint %tmp1585		; <int*> [#uses=1]
+	%tmp1588 = load int* %tmp1587		; <int> [#uses=1]
+	%tmp1593 = getelementptr [64 x int]* %bishop_shift_rr45, int 0, int %tmp1572		; <int*> [#uses=1]
+	%tmp1594 = load int* %tmp1593		; <int> [#uses=1]
+	%tmp1594 = cast int %tmp1594 to ubyte		; <ubyte> [#uses=1]
+	%tmp1595 = shr ulong %tmp1591, ubyte %tmp1594		; <ulong> [#uses=1]
+	%tmp1595 = cast ulong %tmp1595 to uint		; <uint> [#uses=1]
+	%tmp1596 = and uint %tmp1595, 255		; <uint> [#uses=1]
+	%tmp1598 = getelementptr [64 x [256 x int]]* %bishop_mobility_rr45, int 0, int %tmp1572, uint %tmp1596		; <int*> [#uses=1]
+	%tmp1599 = load int* %tmp1598		; <int> [#uses=1]
+	%tmp1600.neg = sub int 0, %tmp1588		; <int> [#uses=1]
+	%tmp1602 = sub int %tmp1600.neg, %tmp1599		; <int> [#uses=1]
+	%tmp1604 = getelementptr [64 x sbyte]* %black_outpost, int 0, int %tmp1572		; <sbyte*> [#uses=1]
+	%tmp1605 = load sbyte* %tmp1604		; <sbyte> [#uses=1]
+	%tmp1606 = seteq sbyte %tmp1605, 0		; <bool> [#uses=1]
+	br bool %tmp1606, label %cond_next1637, label %cond_true1607
+
+cond_true1607:		; preds = %bb1567
+	ret void
+
+cond_next1637:		; preds = %bb1567
+	%tmp1662 = sub int %tmp1602, 0		; <int> [#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 0000000..2b12926
--- /dev/null
+++ b/test/CodeGen/Generic/2006-09-06-SwitchLowering.ll
@@ -0,0 +1,96 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+void %foo() {
+	br label %cond_true813.i
+
+cond_true813.i:		; preds = %0
+	br bool false, label %cond_true818.i, label %cond_next1146.i
+
+cond_true818.i:		; preds = %cond_true813.i
+	br bool false, label %recog_memoized.exit52, label %cond_next1146.i
+
+recog_memoized.exit52:		; preds = %cond_true818.i
+	switch int 0, label %bb886.i.preheader [
+		 int 0, label %bb907.i
+		 int 44, label %bb866.i
+		 int 103, label %bb874.i
+		 int 114, label %bb874.i
+	]
+
+bb857.i:		; preds = %bb886.i, %bb866.i
+	%tmp862.i494.24 = phi sbyte* [ null, %bb866.i ], [ %tmp862.i494.26, %bb886.i ]		; <sbyte*> [#uses=4]
+	switch int 0, label %bb886.i.preheader [
+		 int 0, label %bb907.i
+		 int 44, label %bb866.i
+		 int 103, label %bb874.i
+		 int 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 bool 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 sbyte* [ %tmp862.i494.24, %bb857.i ], [ %tmp862.i494.24, %bb857.i ], [ undef, %recog_memoized.exit52 ], [ undef, %recog_memoized.exit52 ]		; <sbyte*> [#uses=1]
+	switch int 0, label %bb886.i.preheader.loopexit [
+		 int 0, label %bb907.i
+		 int 44, label %bb866.i.loopexit
+		 int 103, label %bb874.i.backedge
+		 int 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 sbyte* [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.24, %bb857.i ]		; <sbyte*> [#uses=1]
+	br label %bb886.i
+
+bb886.i:		; preds = %cond_true903.i, %bb886.i.preheader
+	br bool false, label %bb857.i, label %cond_true903.i
+
+cond_true903.i:		; preds = %bb886.i
+	switch int 0, label %bb886.i [
+		 int 0, label %bb907.i
+		 int 44, label %bb866.i.loopexit31
+		 int 103, label %bb874.i.preheader.loopexit
+		 int 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 sbyte* [ %tmp862.i494.24, %bb857.i ], [ null, %bb866.i ], [ undef, %recog_memoized.exit52 ], [ %tmp862.i494.25, %bb874.i ], [ null, %cond_true903.i ]		; <sbyte*> [#uses=1]
+	br bool 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 sbyte* [ %tmp862.i494.0, %bb907.i ], [ undef, %cond_true818.i ], [ undef, %cond_true813.i ]		; <sbyte*> [#uses=0]
+	ret void
+
+bb2060.i:		; No predecessors!
+	br bool 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 0000000..8bf3c11
--- /dev/null
+++ b/test/CodeGen/Generic/2006-10-27-CondFolding.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc 
+
+void %start_pass_huff(int %gather_statistics) {
+entry:
+        %tmp = seteq int %gather_statistics, 0          ; <bool> [#uses=1]
+        br bool false, label %cond_next22, label %bb166
+
+cond_next22:            ; preds = %entry
+        %bothcond = and bool false, %tmp                ; <bool> [#uses=1]
+        br bool %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 0000000..8857c93
--- /dev/null
+++ b/test/CodeGen/Generic/2006-10-29-Crash.ll
@@ -0,0 +1,21 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+void %form_component_prediction(int %dy) {
+entry:
+	%tmp7 = and int %dy, 1		; <int> [#uses=1]
+	%tmp27 = seteq int %tmp7, 0		; <bool> [#uses=1]
+	br bool false, label %cond_next30, label %bb115
+
+cond_next30:		; preds = %entry
+	ret void
+
+bb115:		; preds = %entry
+	%bothcond1 = or bool %tmp27, false		; <bool> [#uses=1]
+	br bool %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 0000000..330bee6
--- /dev/null
+++ b/test/CodeGen/Generic/2006-11-06-MemIntrinsicExpand.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | not grep adc
+
+; PR987
+
+declare void %llvm.memcpy.i64(sbyte*, sbyte*, ulong, uint)
+
+void %foo(ulong %a) {
+  %b = add ulong %a, 1
+call void %llvm.memcpy.i64( sbyte* null, sbyte* null, ulong %b, uint 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 0000000..6a76079
--- /dev/null
+++ b/test/CodeGen/Generic/2006-11-20-DAGCombineCrash.ll
@@ -0,0 +1,44 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+; PR1011
+
+	%struct.mng_data = type { sbyte* (%struct.mng_data*, uint)*, int, int, int, sbyte, sbyte, int, int, int, int, int }
+
+implementation   ; Functions:
+
+void %mng_display_bgr565() {
+entry:
+	br bool false, label %bb.preheader, label %return
+
+bb.preheader:		; preds = %entry
+	br bool false, label %cond_true48, label %cond_next80
+
+cond_true48:		; preds = %bb.preheader
+	%tmp = load ubyte* null		; <ubyte> [#uses=1]
+	%tmp51 = cast ubyte %tmp to ushort		; <ushort> [#uses=1]
+	%tmp99 = load sbyte* null		; <sbyte> [#uses=1]
+	%tmp54 = cast sbyte %tmp99 to ubyte		; <ubyte> [#uses=1]
+	%tmp54 = cast ubyte %tmp54 to int		; <int> [#uses=1]
+	%tmp55 = lshr int %tmp54, ubyte 3		; <int> [#uses=1]
+	%tmp55 = cast int %tmp55 to ushort		; <ushort> [#uses=1]
+	%tmp52 = shl ushort %tmp51, ubyte 5		; <ushort> [#uses=1]
+	%tmp56 = and ushort %tmp55, 28		; <ushort> [#uses=1]
+	%tmp57 = or ushort %tmp56, %tmp52		; <ushort> [#uses=1]
+	%tmp60 = cast ushort %tmp57 to uint		; <uint> [#uses=1]
+	%tmp62 = xor uint 0, 65535		; <uint> [#uses=1]
+	%tmp63 = mul uint %tmp60, %tmp62		; <uint> [#uses=1]
+	%tmp65 = add uint 0, %tmp63		; <uint> [#uses=1]
+	%tmp69 = add uint 0, %tmp65		; <uint> [#uses=1]
+	%tmp70 = lshr uint %tmp69, ubyte 16		; <uint> [#uses=1]
+	%tmp70 = cast uint %tmp70 to ushort		; <ushort> [#uses=1]
+	%tmp75 = lshr ushort %tmp70, ubyte 8		; <ushort> [#uses=1]
+	%tmp75 = cast ushort %tmp75 to ubyte		; <ubyte> [#uses=1]
+	%tmp76 = lshr ubyte %tmp75, ubyte 5		; <ubyte> [#uses=1]
+	store ubyte %tmp76, ubyte* 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 0000000..e4a3906
--- /dev/null
+++ b/test/CodeGen/Generic/2006-12-16-InlineAsmCrash.ll
@@ -0,0 +1,34 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86
+; PR1049
+target datalayout = "e-p:32:32"
+target endian = little
+target pointersize = 32
+target triple = "i686-pc-linux-gnu"
+	%struct.QBasicAtomic = type { int }
+	%struct.QByteArray = type { "struct.QByteArray::Data"* }
+	"struct.QByteArray::Data" = type { %struct.QBasicAtomic, int, int, sbyte*, [1 x sbyte] }
+	%struct.QFactoryLoader = type { %struct.QObject }
+	%struct.QImageIOHandler = type { int (...)**, %struct.QImageIOHandlerPrivate* }
+	%struct.QImageIOHandlerPrivate = type opaque
+	%struct.QImageWriter = type { %struct.QImageWriterPrivate* }
+	%struct.QImageWriterPrivate = type { %struct.QByteArray, %struct.QFactoryLoader*, bool, %struct.QImageIOHandler*, int, float, %struct.QString, %struct.QString, uint, %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, int, int, int, ubyte, [1 x sbyte*] }
+	%struct.QObject = type { int (...)**, %struct.QObjectData* }
+	%struct.QObjectData = type { int (...)**, %struct.QObject*, %struct.QObject*, "struct.QList<QByteArray>", ubyte, [3 x ubyte], int, int }
+	%struct.QString = type { "struct.QString::Data"* }
+	"struct.QString::Data" = type { %struct.QBasicAtomic, int, int, ushort*, ubyte, ubyte, [1 x ushort] }
+
+implementation   ; Functions:
+
+bool %_ZNK12QImageWriter8canWriteEv() {
+	%tmp62 = load %struct.QImageWriterPrivate** null		; <%struct.QImageWriterPrivate*> [#uses=1]
+	%tmp = getelementptr %struct.QImageWriterPrivate* %tmp62, int 0, uint 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"( int* null )
+	ret bool 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 0000000..49203d9
--- /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 0000000..0a8e49e
--- /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 0000000..63a1498
--- /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 0000000..6dba99e
--- /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 0000000..9cbf314
--- /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 0000000..b95a361
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-13-SwitchLowerBadPhi.ll
@@ -0,0 +1,27 @@
+; RUN: llvm-as < %s | llc -fast
+; 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 0000000..5490687
--- /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-14-EHSelectorCrash.ll b/test/CodeGen/Generic/2007-04-14-EHSelectorCrash.ll
new file mode 100644
index 0000000..be039bf
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-14-EHSelectorCrash.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llc -enable-eh
+; RUN: llvm-as < %s | llc -enable-eh -march=x86-64 
+; XFAIL: *
+; Un-XFAIL this when PR1508 is fixed.
+
+; PR1326
+
+@__gnat_others_value = external constant i32		; <i32*> [#uses=1]
+
+define void @_ada_eh() {
+entry:
+	%eh_select = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* null, i8* bitcast (i32 (...)* @__gnat_eh_personality to i8*), i32* @__gnat_others_value )		; <i32> [#uses=0]
+	ret void
+}
+
+declare i32 @llvm.eh.selector(i8*, i8*, ...)
+
+declare i32 @__gnat_eh_personality(...)
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 0000000..4257e9f
--- /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 0000000..f891599
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-27-BitTestsBadMask.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-as < %s | llc -march=x86 | grep -c je | grep 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 0000000..6f8fbae
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-27-InlineAsm-X-Dest.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-as < %s | llc
+; XFAIL: sparc-sun-solaris2
+; PR1557
+
+; 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 0000000..cd72495
--- /dev/null
+++ b/test/CodeGen/Generic/2007-04-27-LargeMemObject.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-as < %s | llc
+; XFAIL: sparc-sun-solaris2
+; PR1557
+
+        %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 0000000..71b4c85
--- /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 0000000..2efe939
--- /dev/null
+++ b/test/CodeGen/Generic/2007-05-03-EHTypeInfo.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-as < %s | llc -enable-eh
+
+	%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( i8* getelementptr (%struct.exception* @program_error, i32 0, i32 0) )		; <i32> [#uses=0]
+	ret void
+}
+
+declare i32 @llvm.eh.typeid.for(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 0000000..8c3737c
--- /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( 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( 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(i8*, i8*, ...)
+
+declare i32 @llvm.eh.typeid.for(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 0000000..7495795
--- /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 0000000..2ad0019
--- /dev/null
+++ b/test/CodeGen/Generic/2007-06-06-CriticalEdgeLandingPad.ll
@@ -0,0 +1,2866 @@
+; RUN: llvm-as < %s | llc -enable-eh -asm-verbose -o - | \
+; RUN:   grep -A 3 {Llabel137.*Region start} | grep {5.*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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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( 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(i8*, i8*, ...)
+
+declare i32 @llvm.eh.typeid.for(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-07-06-FilterOffset.ll b/test/CodeGen/Generic/2007-07-06-FilterOffset.ll
new file mode 100644
index 0000000..252ba1c
--- /dev/null
+++ b/test/CodeGen/Generic/2007-07-06-FilterOffset.ll
@@ -0,0 +1,1621 @@
+; RUN: llvm-as < %s | llc -enable-eh -asm-verbose -o - | \
+; RUN:   grep {\\-4.*TypeInfo index}
+
+target triple = "i686-pc-linux-gnu"
+	%struct.__class_type_info_pseudo = type { %struct.__type_info_pseudo }
+	%struct.__type_info_pseudo = type { i8*, i8* }
+@_ZTI4a000 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a000, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a001 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a001, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a002 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a002, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a003 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a003, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a004 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a004, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a005 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a005, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a006 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a006, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a007 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a007, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a008 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a008, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a009 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a009, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a010 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a010, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a011 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a011, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a012 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a012, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a013 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a013, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a014 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a014, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a015 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a015, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a016 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a016, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a017 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a017, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a018 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a018, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a019 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a019, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a020 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a020, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a021 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a021, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a022 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a022, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a023 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a023, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a024 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a024, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a025 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a025, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a026 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a026, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a027 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a027, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a028 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a028, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a029 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a029, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a030 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a030, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a031 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a031, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a032 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a032, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a033 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a033, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a034 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a034, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a035 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a035, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a036 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a036, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a037 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a037, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a038 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a038, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a039 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a039, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a040 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a040, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a041 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a041, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a042 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a042, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a043 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a043, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a044 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a044, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a045 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a045, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a046 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a046, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a047 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a047, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a048 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a048, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a049 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a049, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a050 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a050, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a051 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a051, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a052 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a052, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a053 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a053, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a054 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a054, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a055 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a055, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a056 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a056, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a057 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a057, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a058 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a058, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a059 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a059, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a060 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a060, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a061 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a061, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a062 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a062, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a063 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a063, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a064 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a064, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a065 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a065, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a066 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a066, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a067 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a067, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a068 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a068, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a069 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a069, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a070 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a070, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a071 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a071, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a072 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a072, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a073 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a073, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a074 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a074, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a075 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a075, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a076 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a076, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a077 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a077, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a078 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a078, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a079 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a079, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a080 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a080, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a081 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a081, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a082 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a082, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a083 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a083, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a084 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a084, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a085 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a085, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a086 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a086, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a087 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a087, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a088 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a088, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a089 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a089, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a090 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a090, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a091 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a091, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a092 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a092, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a093 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a093, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a094 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a094, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a095 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a095, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a096 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a096, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a097 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a097, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a098 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a098, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a099 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a099, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a100 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a100, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a101 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a101, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a102 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a102, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a103 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a103, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a104 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a104, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a105 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a105, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a106 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a106, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a107 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a107, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a108 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a108, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a109 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a109, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a110 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a110, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a111 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a111, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a112 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a112, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a113 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a113, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a114 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a114, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a115 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a115, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a116 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a116, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a117 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a117, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a118 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a118, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a119 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a119, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a120 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a120, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a121 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a121, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a122 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a122, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a123 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a123, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a124 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a124, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a125 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a125, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a126 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a126, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a127 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a127, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTI4a128 = weak constant %struct.__class_type_info_pseudo { %struct.__type_info_pseudo { i8* inttoptr (i32 add (i32 ptrtoint ([0 x i32 (...)*]* @_ZTVN10__cxxabiv117__class_type_infoE to i32), i32 8) to i8*), i8* getelementptr ([6 x i8]* @_ZTS4a128, i32 0, i32 0) } }		; <%struct.__class_type_info_pseudo*> [#uses=1]
+@_ZTVN10__cxxabiv117__class_type_infoE = external constant [0 x i32 (...)*]		; <[0 x i32 (...)*]*> [#uses=1]
+@_ZTS4a128 = weak constant [6 x i8] c"4a128\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a127 = weak constant [6 x i8] c"4a127\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a126 = weak constant [6 x i8] c"4a126\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a125 = weak constant [6 x i8] c"4a125\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a124 = weak constant [6 x i8] c"4a124\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a123 = weak constant [6 x i8] c"4a123\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a122 = weak constant [6 x i8] c"4a122\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a121 = weak constant [6 x i8] c"4a121\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a120 = weak constant [6 x i8] c"4a120\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a119 = weak constant [6 x i8] c"4a119\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a118 = weak constant [6 x i8] c"4a118\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a117 = weak constant [6 x i8] c"4a117\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a116 = weak constant [6 x i8] c"4a116\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a115 = weak constant [6 x i8] c"4a115\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a114 = weak constant [6 x i8] c"4a114\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a113 = weak constant [6 x i8] c"4a113\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a112 = weak constant [6 x i8] c"4a112\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a111 = weak constant [6 x i8] c"4a111\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a110 = weak constant [6 x i8] c"4a110\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a109 = weak constant [6 x i8] c"4a109\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a108 = weak constant [6 x i8] c"4a108\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a107 = weak constant [6 x i8] c"4a107\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a106 = weak constant [6 x i8] c"4a106\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a105 = weak constant [6 x i8] c"4a105\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a104 = weak constant [6 x i8] c"4a104\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a103 = weak constant [6 x i8] c"4a103\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a102 = weak constant [6 x i8] c"4a102\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a101 = weak constant [6 x i8] c"4a101\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a100 = weak constant [6 x i8] c"4a100\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a099 = weak constant [6 x i8] c"4a099\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a098 = weak constant [6 x i8] c"4a098\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a097 = weak constant [6 x i8] c"4a097\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a096 = weak constant [6 x i8] c"4a096\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a095 = weak constant [6 x i8] c"4a095\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a094 = weak constant [6 x i8] c"4a094\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a093 = weak constant [6 x i8] c"4a093\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a092 = weak constant [6 x i8] c"4a092\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a091 = weak constant [6 x i8] c"4a091\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a090 = weak constant [6 x i8] c"4a090\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a089 = weak constant [6 x i8] c"4a089\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a088 = weak constant [6 x i8] c"4a088\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a087 = weak constant [6 x i8] c"4a087\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a086 = weak constant [6 x i8] c"4a086\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a085 = weak constant [6 x i8] c"4a085\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a084 = weak constant [6 x i8] c"4a084\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a083 = weak constant [6 x i8] c"4a083\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a082 = weak constant [6 x i8] c"4a082\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a081 = weak constant [6 x i8] c"4a081\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a080 = weak constant [6 x i8] c"4a080\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a079 = weak constant [6 x i8] c"4a079\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a078 = weak constant [6 x i8] c"4a078\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a077 = weak constant [6 x i8] c"4a077\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a076 = weak constant [6 x i8] c"4a076\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a075 = weak constant [6 x i8] c"4a075\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a074 = weak constant [6 x i8] c"4a074\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a073 = weak constant [6 x i8] c"4a073\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a072 = weak constant [6 x i8] c"4a072\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a071 = weak constant [6 x i8] c"4a071\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a070 = weak constant [6 x i8] c"4a070\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a069 = weak constant [6 x i8] c"4a069\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a068 = weak constant [6 x i8] c"4a068\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a067 = weak constant [6 x i8] c"4a067\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a066 = weak constant [6 x i8] c"4a066\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a065 = weak constant [6 x i8] c"4a065\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a064 = weak constant [6 x i8] c"4a064\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a063 = weak constant [6 x i8] c"4a063\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a062 = weak constant [6 x i8] c"4a062\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a061 = weak constant [6 x i8] c"4a061\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a060 = weak constant [6 x i8] c"4a060\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a059 = weak constant [6 x i8] c"4a059\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a058 = weak constant [6 x i8] c"4a058\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a057 = weak constant [6 x i8] c"4a057\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a056 = weak constant [6 x i8] c"4a056\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a055 = weak constant [6 x i8] c"4a055\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a054 = weak constant [6 x i8] c"4a054\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a053 = weak constant [6 x i8] c"4a053\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a052 = weak constant [6 x i8] c"4a052\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a051 = weak constant [6 x i8] c"4a051\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a050 = weak constant [6 x i8] c"4a050\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a049 = weak constant [6 x i8] c"4a049\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a048 = weak constant [6 x i8] c"4a048\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a047 = weak constant [6 x i8] c"4a047\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a046 = weak constant [6 x i8] c"4a046\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a045 = weak constant [6 x i8] c"4a045\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a044 = weak constant [6 x i8] c"4a044\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a043 = weak constant [6 x i8] c"4a043\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a042 = weak constant [6 x i8] c"4a042\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a041 = weak constant [6 x i8] c"4a041\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a040 = weak constant [6 x i8] c"4a040\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a039 = weak constant [6 x i8] c"4a039\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a038 = weak constant [6 x i8] c"4a038\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a037 = weak constant [6 x i8] c"4a037\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a036 = weak constant [6 x i8] c"4a036\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a035 = weak constant [6 x i8] c"4a035\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a034 = weak constant [6 x i8] c"4a034\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a033 = weak constant [6 x i8] c"4a033\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a032 = weak constant [6 x i8] c"4a032\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a031 = weak constant [6 x i8] c"4a031\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a030 = weak constant [6 x i8] c"4a030\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a029 = weak constant [6 x i8] c"4a029\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a028 = weak constant [6 x i8] c"4a028\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a027 = weak constant [6 x i8] c"4a027\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a026 = weak constant [6 x i8] c"4a026\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a025 = weak constant [6 x i8] c"4a025\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a024 = weak constant [6 x i8] c"4a024\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a023 = weak constant [6 x i8] c"4a023\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a022 = weak constant [6 x i8] c"4a022\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a021 = weak constant [6 x i8] c"4a021\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a020 = weak constant [6 x i8] c"4a020\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a019 = weak constant [6 x i8] c"4a019\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a018 = weak constant [6 x i8] c"4a018\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a017 = weak constant [6 x i8] c"4a017\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a016 = weak constant [6 x i8] c"4a016\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a015 = weak constant [6 x i8] c"4a015\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a014 = weak constant [6 x i8] c"4a014\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a013 = weak constant [6 x i8] c"4a013\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a012 = weak constant [6 x i8] c"4a012\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a011 = weak constant [6 x i8] c"4a011\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a010 = weak constant [6 x i8] c"4a010\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a009 = weak constant [6 x i8] c"4a009\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a008 = weak constant [6 x i8] c"4a008\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a007 = weak constant [6 x i8] c"4a007\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a006 = weak constant [6 x i8] c"4a006\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a005 = weak constant [6 x i8] c"4a005\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a004 = weak constant [6 x i8] c"4a004\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a003 = weak constant [6 x i8] c"4a003\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a002 = weak constant [6 x i8] c"4a002\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a001 = weak constant [6 x i8] c"4a001\00"		; <[6 x i8]*> [#uses=1]
+@_ZTS4a000 = weak constant [6 x i8] c"4a000\00"		; <[6 x i8]*> [#uses=1]
+
+declare void @_Z1Nv()
+
+declare i8* @llvm.eh.exception()
+
+declare i32 @llvm.eh.selector(i8*, i8*, ...)
+
+declare i32 @llvm.eh.typeid.for(i8*)
+
+declare i32 @__gxx_personality_v0(...)
+
+declare i32 @_Unwind_Resume(...)
+
+declare void @__cxa_call_unexpected(i8*)
+
+define void @_Z1Qv() {
+entry:
+	invoke void @_Z1Nv( )
+			to label %UnifiedReturnBlock2 unwind label %unwind
+
+unwind:		; preds = %entry
+	%eh_ptr = tail call i8* @llvm.eh.exception( )		; <i8*> [#uses=3]
+	%eh_select = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1, i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a000 to i8*), i32 1, i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a001 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a000 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a001 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a002 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a003 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a004 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a005 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a006 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a007 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a008 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a009 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a010 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a011 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a012 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a013 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a014 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a015 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a016 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a017 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a018 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a019 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a020 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a021 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a022 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a023 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a024 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a025 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a026 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a027 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a028 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a029 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a030 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a031 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a032 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a033 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a034 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a035 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a036 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a037 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a038 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a039 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a040 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a041 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a042 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a043 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a044 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a045 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a046 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a047 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a048 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a049 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a050 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a051 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a052 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a053 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a054 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a055 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a056 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a057 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a058 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a059 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a060 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a061 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a062 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a063 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a064 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a065 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a066 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a067 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a068 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a069 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a070 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a071 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a072 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a073 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a074 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a075 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a076 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a077 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a078 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a079 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a080 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a081 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a082 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a083 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a084 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a085 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a086 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a087 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a088 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a089 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a090 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a091 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a092 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a093 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a094 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a095 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a096 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a097 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a098 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a099 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a100 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a101 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a102 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a103 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a104 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a105 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a106 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a107 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a108 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a109 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a110 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a111 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a112 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a113 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a114 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a115 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a116 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a117 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a118 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a119 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a120 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a121 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a122 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a123 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a124 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a125 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a126 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a127 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a128 to i8*) )		; <i32> [#uses=2]
+	%tmp260 = icmp slt i32 %eh_select, 0		; <i1> [#uses=1]
+	br i1 %tmp260, label %filter, label %cleanup279
+
+filter:		; preds = %unwind
+	invoke void @__cxa_call_unexpected( i8* %eh_ptr )
+			to label %UnifiedUnreachableBlock1 unwind label %unwind261
+
+unwind261:		; preds = %filter
+	%eh_ptr262 = tail call i8* @llvm.eh.exception( )		; <i8*> [#uses=3]
+	%eh_select264 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr262, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i32 1, i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a001 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a000 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a001 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a002 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a003 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a004 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a005 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a006 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a007 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a008 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a009 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a010 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a011 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a012 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a013 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a014 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a015 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a016 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a017 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a018 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a019 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a020 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a021 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a022 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a023 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a024 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a025 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a026 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a027 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a028 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a029 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a030 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a031 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a032 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a033 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a034 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a035 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a036 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a037 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a038 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a039 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a040 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a041 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a042 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a043 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a044 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a045 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a046 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a047 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a048 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a049 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a050 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a051 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a052 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a053 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a054 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a055 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a056 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a057 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a058 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a059 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a060 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a061 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a062 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a063 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a064 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a065 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a066 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a067 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a068 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a069 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a070 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a071 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a072 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a073 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a074 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a075 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a076 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a077 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a078 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a079 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a080 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a081 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a082 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a083 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a084 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a085 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a086 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a087 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a088 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a089 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a090 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a091 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a092 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a093 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a094 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a095 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a096 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a097 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a098 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a099 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a100 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a101 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a102 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a103 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a104 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a105 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a106 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a107 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a108 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a109 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a110 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a111 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a112 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a113 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a114 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a115 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a116 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a117 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a118 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a119 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a120 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a121 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a122 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a123 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a124 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a125 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a126 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a127 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a128 to i8*) )		; <i32> [#uses=2]
+	%tmp2692602 = icmp slt i32 %eh_select264, 0		; <i1> [#uses=1]
+	br i1 %tmp2692602, label %filter270, label %cleanup279
+
+filter270:		; preds = %unwind261
+	invoke void @__cxa_call_unexpected( i8* %eh_ptr262 )
+			to label %UnifiedUnreachableBlock1 unwind label %unwind272
+
+unwind272:		; preds = %filter270
+	%eh_ptr273 = tail call i8* @llvm.eh.exception( )		; <i8*> [#uses=3]
+	%eh_select275 = tail call i32 (i8*, i8*, ...)* @llvm.eh.selector( i8* %eh_ptr273, i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a000 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a001 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a002 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a003 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a004 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a005 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a006 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a007 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a008 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a009 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a010 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a011 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a012 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a013 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a014 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a015 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a016 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a017 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a018 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a019 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a020 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a021 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a022 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a023 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a024 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a025 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a026 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a027 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a028 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a029 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a030 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a031 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a032 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a033 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a034 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a035 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a036 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a037 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a038 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a039 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a040 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a041 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a042 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a043 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a044 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a045 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a046 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a047 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a048 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a049 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a050 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a051 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a052 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a053 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a054 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a055 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a056 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a057 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a058 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a059 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a060 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a061 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a062 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a063 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a064 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a065 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a066 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a067 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a068 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a069 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a070 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a071 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a072 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a073 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a074 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a075 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a076 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a077 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a078 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a079 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a080 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a081 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a082 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a083 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a084 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a085 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a086 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a087 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a088 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a089 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a090 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a091 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a092 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a093 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a094 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a095 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a096 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a097 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a098 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a099 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a100 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a101 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a102 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a103 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a104 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a105 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a106 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a107 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a108 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a109 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a110 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a111 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a112 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a113 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a114 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a115 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a116 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a117 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a118 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a119 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a120 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a121 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a122 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a123 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a124 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a125 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a126 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a127 to i8*), i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a128 to i8*) )		; <i32> [#uses=2]
+	%eh_typeid2863 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a000 to i8*) )		; <i32> [#uses=1]
+	%tmp2812865 = icmp eq i32 %eh_select275, %eh_typeid2863		; <i1> [#uses=1]
+	br i1 %tmp2812865, label %eh_then, label %eh_else
+
+cleanup279:		; preds = %unwind261, %unwind
+	%eh_exception.1 = phi i8* [ %eh_ptr, %unwind ], [ %eh_ptr262, %unwind261 ]		; <i8*> [#uses=2]
+	%eh_selector.1 = phi i32 [ %eh_select, %unwind ], [ %eh_select264, %unwind261 ]		; <i32> [#uses=2]
+	%eh_typeid = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a000 to i8*) )		; <i32> [#uses=1]
+	%tmp281 = icmp eq i32 %eh_selector.1, %eh_typeid		; <i1> [#uses=1]
+	br i1 %tmp281, label %eh_then, label %eh_else
+
+eh_then:		; preds = %cleanup279, %unwind272
+	%eh_exception.12604.0 = phi i8* [ %eh_ptr273, %unwind272 ], [ %eh_exception.1, %cleanup279 ]		; <i8*> [#uses=1]
+	%tmp284 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.0 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else:		; preds = %cleanup279, %unwind272
+	%eh_exception.12604.1 = phi i8* [ %eh_ptr273, %unwind272 ], [ %eh_exception.1, %cleanup279 ]		; <i8*> [#uses=129]
+	%eh_selector.12734.1 = phi i32 [ %eh_select275, %unwind272 ], [ %eh_selector.1, %cleanup279 ]		; <i32> [#uses=128]
+	%eh_typeid295 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a001 to i8*) )		; <i32> [#uses=1]
+	%tmp297 = icmp eq i32 %eh_selector.12734.1, %eh_typeid295		; <i1> [#uses=1]
+	br i1 %tmp297, label %eh_then298, label %eh_else312
+
+eh_then298:		; preds = %eh_else
+	%tmp301 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else312:		; preds = %eh_else
+	%eh_typeid313 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a002 to i8*) )		; <i32> [#uses=1]
+	%tmp315 = icmp eq i32 %eh_selector.12734.1, %eh_typeid313		; <i1> [#uses=1]
+	br i1 %tmp315, label %eh_then316, label %eh_else330
+
+eh_then316:		; preds = %eh_else312
+	%tmp319 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else330:		; preds = %eh_else312
+	%eh_typeid331 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a003 to i8*) )		; <i32> [#uses=1]
+	%tmp333 = icmp eq i32 %eh_selector.12734.1, %eh_typeid331		; <i1> [#uses=1]
+	br i1 %tmp333, label %eh_then334, label %eh_else348
+
+eh_then334:		; preds = %eh_else330
+	%tmp337 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else348:		; preds = %eh_else330
+	%eh_typeid349 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a004 to i8*) )		; <i32> [#uses=1]
+	%tmp351 = icmp eq i32 %eh_selector.12734.1, %eh_typeid349		; <i1> [#uses=1]
+	br i1 %tmp351, label %eh_then352, label %eh_else366
+
+eh_then352:		; preds = %eh_else348
+	%tmp355 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else366:		; preds = %eh_else348
+	%eh_typeid367 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a005 to i8*) )		; <i32> [#uses=1]
+	%tmp369 = icmp eq i32 %eh_selector.12734.1, %eh_typeid367		; <i1> [#uses=1]
+	br i1 %tmp369, label %eh_then370, label %eh_else384
+
+eh_then370:		; preds = %eh_else366
+	%tmp373 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else384:		; preds = %eh_else366
+	%eh_typeid385 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a006 to i8*) )		; <i32> [#uses=1]
+	%tmp387 = icmp eq i32 %eh_selector.12734.1, %eh_typeid385		; <i1> [#uses=1]
+	br i1 %tmp387, label %eh_then388, label %eh_else402
+
+eh_then388:		; preds = %eh_else384
+	%tmp391 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else402:		; preds = %eh_else384
+	%eh_typeid403 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a007 to i8*) )		; <i32> [#uses=1]
+	%tmp405 = icmp eq i32 %eh_selector.12734.1, %eh_typeid403		; <i1> [#uses=1]
+	br i1 %tmp405, label %eh_then406, label %eh_else420
+
+eh_then406:		; preds = %eh_else402
+	%tmp409 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else420:		; preds = %eh_else402
+	%eh_typeid421 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a008 to i8*) )		; <i32> [#uses=1]
+	%tmp423 = icmp eq i32 %eh_selector.12734.1, %eh_typeid421		; <i1> [#uses=1]
+	br i1 %tmp423, label %eh_then424, label %eh_else438
+
+eh_then424:		; preds = %eh_else420
+	%tmp427 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else438:		; preds = %eh_else420
+	%eh_typeid439 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a009 to i8*) )		; <i32> [#uses=1]
+	%tmp441 = icmp eq i32 %eh_selector.12734.1, %eh_typeid439		; <i1> [#uses=1]
+	br i1 %tmp441, label %eh_then442, label %eh_else456
+
+eh_then442:		; preds = %eh_else438
+	%tmp445 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else456:		; preds = %eh_else438
+	%eh_typeid457 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a010 to i8*) )		; <i32> [#uses=1]
+	%tmp459 = icmp eq i32 %eh_selector.12734.1, %eh_typeid457		; <i1> [#uses=1]
+	br i1 %tmp459, label %eh_then460, label %eh_else474
+
+eh_then460:		; preds = %eh_else456
+	%tmp463 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else474:		; preds = %eh_else456
+	%eh_typeid475 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a011 to i8*) )		; <i32> [#uses=1]
+	%tmp477 = icmp eq i32 %eh_selector.12734.1, %eh_typeid475		; <i1> [#uses=1]
+	br i1 %tmp477, label %eh_then478, label %eh_else492
+
+eh_then478:		; preds = %eh_else474
+	%tmp481 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else492:		; preds = %eh_else474
+	%eh_typeid493 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a012 to i8*) )		; <i32> [#uses=1]
+	%tmp495 = icmp eq i32 %eh_selector.12734.1, %eh_typeid493		; <i1> [#uses=1]
+	br i1 %tmp495, label %eh_then496, label %eh_else510
+
+eh_then496:		; preds = %eh_else492
+	%tmp499 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else510:		; preds = %eh_else492
+	%eh_typeid511 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a013 to i8*) )		; <i32> [#uses=1]
+	%tmp513 = icmp eq i32 %eh_selector.12734.1, %eh_typeid511		; <i1> [#uses=1]
+	br i1 %tmp513, label %eh_then514, label %eh_else528
+
+eh_then514:		; preds = %eh_else510
+	%tmp517 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else528:		; preds = %eh_else510
+	%eh_typeid529 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a014 to i8*) )		; <i32> [#uses=1]
+	%tmp531 = icmp eq i32 %eh_selector.12734.1, %eh_typeid529		; <i1> [#uses=1]
+	br i1 %tmp531, label %eh_then532, label %eh_else546
+
+eh_then532:		; preds = %eh_else528
+	%tmp535 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else546:		; preds = %eh_else528
+	%eh_typeid547 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a015 to i8*) )		; <i32> [#uses=1]
+	%tmp549 = icmp eq i32 %eh_selector.12734.1, %eh_typeid547		; <i1> [#uses=1]
+	br i1 %tmp549, label %eh_then550, label %eh_else564
+
+eh_then550:		; preds = %eh_else546
+	%tmp553 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else564:		; preds = %eh_else546
+	%eh_typeid565 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a016 to i8*) )		; <i32> [#uses=1]
+	%tmp567 = icmp eq i32 %eh_selector.12734.1, %eh_typeid565		; <i1> [#uses=1]
+	br i1 %tmp567, label %eh_then568, label %eh_else582
+
+eh_then568:		; preds = %eh_else564
+	%tmp571 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else582:		; preds = %eh_else564
+	%eh_typeid583 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a017 to i8*) )		; <i32> [#uses=1]
+	%tmp585 = icmp eq i32 %eh_selector.12734.1, %eh_typeid583		; <i1> [#uses=1]
+	br i1 %tmp585, label %eh_then586, label %eh_else600
+
+eh_then586:		; preds = %eh_else582
+	%tmp589 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else600:		; preds = %eh_else582
+	%eh_typeid601 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a018 to i8*) )		; <i32> [#uses=1]
+	%tmp603 = icmp eq i32 %eh_selector.12734.1, %eh_typeid601		; <i1> [#uses=1]
+	br i1 %tmp603, label %eh_then604, label %eh_else618
+
+eh_then604:		; preds = %eh_else600
+	%tmp607 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else618:		; preds = %eh_else600
+	%eh_typeid619 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a019 to i8*) )		; <i32> [#uses=1]
+	%tmp621 = icmp eq i32 %eh_selector.12734.1, %eh_typeid619		; <i1> [#uses=1]
+	br i1 %tmp621, label %eh_then622, label %eh_else636
+
+eh_then622:		; preds = %eh_else618
+	%tmp625 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else636:		; preds = %eh_else618
+	%eh_typeid637 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a020 to i8*) )		; <i32> [#uses=1]
+	%tmp639 = icmp eq i32 %eh_selector.12734.1, %eh_typeid637		; <i1> [#uses=1]
+	br i1 %tmp639, label %eh_then640, label %eh_else654
+
+eh_then640:		; preds = %eh_else636
+	%tmp643 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else654:		; preds = %eh_else636
+	%eh_typeid655 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a021 to i8*) )		; <i32> [#uses=1]
+	%tmp657 = icmp eq i32 %eh_selector.12734.1, %eh_typeid655		; <i1> [#uses=1]
+	br i1 %tmp657, label %eh_then658, label %eh_else672
+
+eh_then658:		; preds = %eh_else654
+	%tmp661 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else672:		; preds = %eh_else654
+	%eh_typeid673 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a022 to i8*) )		; <i32> [#uses=1]
+	%tmp675 = icmp eq i32 %eh_selector.12734.1, %eh_typeid673		; <i1> [#uses=1]
+	br i1 %tmp675, label %eh_then676, label %eh_else690
+
+eh_then676:		; preds = %eh_else672
+	%tmp679 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else690:		; preds = %eh_else672
+	%eh_typeid691 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a023 to i8*) )		; <i32> [#uses=1]
+	%tmp693 = icmp eq i32 %eh_selector.12734.1, %eh_typeid691		; <i1> [#uses=1]
+	br i1 %tmp693, label %eh_then694, label %eh_else708
+
+eh_then694:		; preds = %eh_else690
+	%tmp697 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else708:		; preds = %eh_else690
+	%eh_typeid709 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a024 to i8*) )		; <i32> [#uses=1]
+	%tmp711 = icmp eq i32 %eh_selector.12734.1, %eh_typeid709		; <i1> [#uses=1]
+	br i1 %tmp711, label %eh_then712, label %eh_else726
+
+eh_then712:		; preds = %eh_else708
+	%tmp715 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else726:		; preds = %eh_else708
+	%eh_typeid727 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a025 to i8*) )		; <i32> [#uses=1]
+	%tmp729 = icmp eq i32 %eh_selector.12734.1, %eh_typeid727		; <i1> [#uses=1]
+	br i1 %tmp729, label %eh_then730, label %eh_else744
+
+eh_then730:		; preds = %eh_else726
+	%tmp733 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else744:		; preds = %eh_else726
+	%eh_typeid745 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a026 to i8*) )		; <i32> [#uses=1]
+	%tmp747 = icmp eq i32 %eh_selector.12734.1, %eh_typeid745		; <i1> [#uses=1]
+	br i1 %tmp747, label %eh_then748, label %eh_else762
+
+eh_then748:		; preds = %eh_else744
+	%tmp751 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else762:		; preds = %eh_else744
+	%eh_typeid763 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a027 to i8*) )		; <i32> [#uses=1]
+	%tmp765 = icmp eq i32 %eh_selector.12734.1, %eh_typeid763		; <i1> [#uses=1]
+	br i1 %tmp765, label %eh_then766, label %eh_else780
+
+eh_then766:		; preds = %eh_else762
+	%tmp769 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else780:		; preds = %eh_else762
+	%eh_typeid781 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a028 to i8*) )		; <i32> [#uses=1]
+	%tmp783 = icmp eq i32 %eh_selector.12734.1, %eh_typeid781		; <i1> [#uses=1]
+	br i1 %tmp783, label %eh_then784, label %eh_else798
+
+eh_then784:		; preds = %eh_else780
+	%tmp787 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else798:		; preds = %eh_else780
+	%eh_typeid799 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a029 to i8*) )		; <i32> [#uses=1]
+	%tmp801 = icmp eq i32 %eh_selector.12734.1, %eh_typeid799		; <i1> [#uses=1]
+	br i1 %tmp801, label %eh_then802, label %eh_else816
+
+eh_then802:		; preds = %eh_else798
+	%tmp805 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else816:		; preds = %eh_else798
+	%eh_typeid817 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a030 to i8*) )		; <i32> [#uses=1]
+	%tmp819 = icmp eq i32 %eh_selector.12734.1, %eh_typeid817		; <i1> [#uses=1]
+	br i1 %tmp819, label %eh_then820, label %eh_else834
+
+eh_then820:		; preds = %eh_else816
+	%tmp823 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else834:		; preds = %eh_else816
+	%eh_typeid835 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a031 to i8*) )		; <i32> [#uses=1]
+	%tmp837 = icmp eq i32 %eh_selector.12734.1, %eh_typeid835		; <i1> [#uses=1]
+	br i1 %tmp837, label %eh_then838, label %eh_else852
+
+eh_then838:		; preds = %eh_else834
+	%tmp841 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else852:		; preds = %eh_else834
+	%eh_typeid853 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a032 to i8*) )		; <i32> [#uses=1]
+	%tmp855 = icmp eq i32 %eh_selector.12734.1, %eh_typeid853		; <i1> [#uses=1]
+	br i1 %tmp855, label %eh_then856, label %eh_else870
+
+eh_then856:		; preds = %eh_else852
+	%tmp859 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else870:		; preds = %eh_else852
+	%eh_typeid871 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a033 to i8*) )		; <i32> [#uses=1]
+	%tmp873 = icmp eq i32 %eh_selector.12734.1, %eh_typeid871		; <i1> [#uses=1]
+	br i1 %tmp873, label %eh_then874, label %eh_else888
+
+eh_then874:		; preds = %eh_else870
+	%tmp877 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else888:		; preds = %eh_else870
+	%eh_typeid889 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a034 to i8*) )		; <i32> [#uses=1]
+	%tmp891 = icmp eq i32 %eh_selector.12734.1, %eh_typeid889		; <i1> [#uses=1]
+	br i1 %tmp891, label %eh_then892, label %eh_else906
+
+eh_then892:		; preds = %eh_else888
+	%tmp895 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else906:		; preds = %eh_else888
+	%eh_typeid907 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a035 to i8*) )		; <i32> [#uses=1]
+	%tmp909 = icmp eq i32 %eh_selector.12734.1, %eh_typeid907		; <i1> [#uses=1]
+	br i1 %tmp909, label %eh_then910, label %eh_else924
+
+eh_then910:		; preds = %eh_else906
+	%tmp913 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else924:		; preds = %eh_else906
+	%eh_typeid925 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a036 to i8*) )		; <i32> [#uses=1]
+	%tmp927 = icmp eq i32 %eh_selector.12734.1, %eh_typeid925		; <i1> [#uses=1]
+	br i1 %tmp927, label %eh_then928, label %eh_else942
+
+eh_then928:		; preds = %eh_else924
+	%tmp931 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else942:		; preds = %eh_else924
+	%eh_typeid943 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a037 to i8*) )		; <i32> [#uses=1]
+	%tmp945 = icmp eq i32 %eh_selector.12734.1, %eh_typeid943		; <i1> [#uses=1]
+	br i1 %tmp945, label %eh_then946, label %eh_else960
+
+eh_then946:		; preds = %eh_else942
+	%tmp949 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else960:		; preds = %eh_else942
+	%eh_typeid961 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a038 to i8*) )		; <i32> [#uses=1]
+	%tmp963 = icmp eq i32 %eh_selector.12734.1, %eh_typeid961		; <i1> [#uses=1]
+	br i1 %tmp963, label %eh_then964, label %eh_else978
+
+eh_then964:		; preds = %eh_else960
+	%tmp967 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else978:		; preds = %eh_else960
+	%eh_typeid979 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a039 to i8*) )		; <i32> [#uses=1]
+	%tmp981 = icmp eq i32 %eh_selector.12734.1, %eh_typeid979		; <i1> [#uses=1]
+	br i1 %tmp981, label %eh_then982, label %eh_else996
+
+eh_then982:		; preds = %eh_else978
+	%tmp985 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else996:		; preds = %eh_else978
+	%eh_typeid997 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a040 to i8*) )		; <i32> [#uses=1]
+	%tmp999 = icmp eq i32 %eh_selector.12734.1, %eh_typeid997		; <i1> [#uses=1]
+	br i1 %tmp999, label %eh_then1000, label %eh_else1014
+
+eh_then1000:		; preds = %eh_else996
+	%tmp1003 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1014:		; preds = %eh_else996
+	%eh_typeid1015 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a041 to i8*) )		; <i32> [#uses=1]
+	%tmp1017 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1015		; <i1> [#uses=1]
+	br i1 %tmp1017, label %eh_then1018, label %eh_else1032
+
+eh_then1018:		; preds = %eh_else1014
+	%tmp1021 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1032:		; preds = %eh_else1014
+	%eh_typeid1033 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a042 to i8*) )		; <i32> [#uses=1]
+	%tmp1035 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1033		; <i1> [#uses=1]
+	br i1 %tmp1035, label %eh_then1036, label %eh_else1050
+
+eh_then1036:		; preds = %eh_else1032
+	%tmp1039 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1050:		; preds = %eh_else1032
+	%eh_typeid1051 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a043 to i8*) )		; <i32> [#uses=1]
+	%tmp1053 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1051		; <i1> [#uses=1]
+	br i1 %tmp1053, label %eh_then1054, label %eh_else1068
+
+eh_then1054:		; preds = %eh_else1050
+	%tmp1057 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1068:		; preds = %eh_else1050
+	%eh_typeid1069 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a044 to i8*) )		; <i32> [#uses=1]
+	%tmp1071 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1069		; <i1> [#uses=1]
+	br i1 %tmp1071, label %eh_then1072, label %eh_else1086
+
+eh_then1072:		; preds = %eh_else1068
+	%tmp1075 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1086:		; preds = %eh_else1068
+	%eh_typeid1087 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a045 to i8*) )		; <i32> [#uses=1]
+	%tmp1089 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1087		; <i1> [#uses=1]
+	br i1 %tmp1089, label %eh_then1090, label %eh_else1104
+
+eh_then1090:		; preds = %eh_else1086
+	%tmp1093 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1104:		; preds = %eh_else1086
+	%eh_typeid1105 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a046 to i8*) )		; <i32> [#uses=1]
+	%tmp1107 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1105		; <i1> [#uses=1]
+	br i1 %tmp1107, label %eh_then1108, label %eh_else1122
+
+eh_then1108:		; preds = %eh_else1104
+	%tmp1111 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1122:		; preds = %eh_else1104
+	%eh_typeid1123 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a047 to i8*) )		; <i32> [#uses=1]
+	%tmp1125 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1123		; <i1> [#uses=1]
+	br i1 %tmp1125, label %eh_then1126, label %eh_else1140
+
+eh_then1126:		; preds = %eh_else1122
+	%tmp1129 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1140:		; preds = %eh_else1122
+	%eh_typeid1141 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a048 to i8*) )		; <i32> [#uses=1]
+	%tmp1143 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1141		; <i1> [#uses=1]
+	br i1 %tmp1143, label %eh_then1144, label %eh_else1158
+
+eh_then1144:		; preds = %eh_else1140
+	%tmp1147 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1158:		; preds = %eh_else1140
+	%eh_typeid1159 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a049 to i8*) )		; <i32> [#uses=1]
+	%tmp1161 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1159		; <i1> [#uses=1]
+	br i1 %tmp1161, label %eh_then1162, label %eh_else1176
+
+eh_then1162:		; preds = %eh_else1158
+	%tmp1165 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1176:		; preds = %eh_else1158
+	%eh_typeid1177 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a050 to i8*) )		; <i32> [#uses=1]
+	%tmp1179 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1177		; <i1> [#uses=1]
+	br i1 %tmp1179, label %eh_then1180, label %eh_else1194
+
+eh_then1180:		; preds = %eh_else1176
+	%tmp1183 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1194:		; preds = %eh_else1176
+	%eh_typeid1195 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a051 to i8*) )		; <i32> [#uses=1]
+	%tmp1197 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1195		; <i1> [#uses=1]
+	br i1 %tmp1197, label %eh_then1198, label %eh_else1212
+
+eh_then1198:		; preds = %eh_else1194
+	%tmp1201 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1212:		; preds = %eh_else1194
+	%eh_typeid1213 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a052 to i8*) )		; <i32> [#uses=1]
+	%tmp1215 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1213		; <i1> [#uses=1]
+	br i1 %tmp1215, label %eh_then1216, label %eh_else1230
+
+eh_then1216:		; preds = %eh_else1212
+	%tmp1219 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1230:		; preds = %eh_else1212
+	%eh_typeid1231 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a053 to i8*) )		; <i32> [#uses=1]
+	%tmp1233 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1231		; <i1> [#uses=1]
+	br i1 %tmp1233, label %eh_then1234, label %eh_else1248
+
+eh_then1234:		; preds = %eh_else1230
+	%tmp1237 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1248:		; preds = %eh_else1230
+	%eh_typeid1249 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a054 to i8*) )		; <i32> [#uses=1]
+	%tmp1251 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1249		; <i1> [#uses=1]
+	br i1 %tmp1251, label %eh_then1252, label %eh_else1266
+
+eh_then1252:		; preds = %eh_else1248
+	%tmp1255 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1266:		; preds = %eh_else1248
+	%eh_typeid1267 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a055 to i8*) )		; <i32> [#uses=1]
+	%tmp1269 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1267		; <i1> [#uses=1]
+	br i1 %tmp1269, label %eh_then1270, label %eh_else1284
+
+eh_then1270:		; preds = %eh_else1266
+	%tmp1273 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1284:		; preds = %eh_else1266
+	%eh_typeid1285 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a056 to i8*) )		; <i32> [#uses=1]
+	%tmp1287 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1285		; <i1> [#uses=1]
+	br i1 %tmp1287, label %eh_then1288, label %eh_else1302
+
+eh_then1288:		; preds = %eh_else1284
+	%tmp1291 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1302:		; preds = %eh_else1284
+	%eh_typeid1303 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a057 to i8*) )		; <i32> [#uses=1]
+	%tmp1305 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1303		; <i1> [#uses=1]
+	br i1 %tmp1305, label %eh_then1306, label %eh_else1320
+
+eh_then1306:		; preds = %eh_else1302
+	%tmp1309 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1320:		; preds = %eh_else1302
+	%eh_typeid1321 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a058 to i8*) )		; <i32> [#uses=1]
+	%tmp1323 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1321		; <i1> [#uses=1]
+	br i1 %tmp1323, label %eh_then1324, label %eh_else1338
+
+eh_then1324:		; preds = %eh_else1320
+	%tmp1327 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1338:		; preds = %eh_else1320
+	%eh_typeid1339 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a059 to i8*) )		; <i32> [#uses=1]
+	%tmp1341 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1339		; <i1> [#uses=1]
+	br i1 %tmp1341, label %eh_then1342, label %eh_else1356
+
+eh_then1342:		; preds = %eh_else1338
+	%tmp1345 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1356:		; preds = %eh_else1338
+	%eh_typeid1357 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a060 to i8*) )		; <i32> [#uses=1]
+	%tmp1359 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1357		; <i1> [#uses=1]
+	br i1 %tmp1359, label %eh_then1360, label %eh_else1374
+
+eh_then1360:		; preds = %eh_else1356
+	%tmp1363 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1374:		; preds = %eh_else1356
+	%eh_typeid1375 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a061 to i8*) )		; <i32> [#uses=1]
+	%tmp1377 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1375		; <i1> [#uses=1]
+	br i1 %tmp1377, label %eh_then1378, label %eh_else1392
+
+eh_then1378:		; preds = %eh_else1374
+	%tmp1381 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1392:		; preds = %eh_else1374
+	%eh_typeid1393 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a062 to i8*) )		; <i32> [#uses=1]
+	%tmp1395 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1393		; <i1> [#uses=1]
+	br i1 %tmp1395, label %eh_then1396, label %eh_else1410
+
+eh_then1396:		; preds = %eh_else1392
+	%tmp1399 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1410:		; preds = %eh_else1392
+	%eh_typeid1411 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a063 to i8*) )		; <i32> [#uses=1]
+	%tmp1413 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1411		; <i1> [#uses=1]
+	br i1 %tmp1413, label %eh_then1414, label %eh_else1428
+
+eh_then1414:		; preds = %eh_else1410
+	%tmp1417 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1428:		; preds = %eh_else1410
+	%eh_typeid1429 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a064 to i8*) )		; <i32> [#uses=1]
+	%tmp1431 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1429		; <i1> [#uses=1]
+	br i1 %tmp1431, label %eh_then1432, label %eh_else1446
+
+eh_then1432:		; preds = %eh_else1428
+	%tmp1435 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1446:		; preds = %eh_else1428
+	%eh_typeid1447 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a065 to i8*) )		; <i32> [#uses=1]
+	%tmp1449 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1447		; <i1> [#uses=1]
+	br i1 %tmp1449, label %eh_then1450, label %eh_else1464
+
+eh_then1450:		; preds = %eh_else1446
+	%tmp1453 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1464:		; preds = %eh_else1446
+	%eh_typeid1465 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a066 to i8*) )		; <i32> [#uses=1]
+	%tmp1467 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1465		; <i1> [#uses=1]
+	br i1 %tmp1467, label %eh_then1468, label %eh_else1482
+
+eh_then1468:		; preds = %eh_else1464
+	%tmp1471 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1482:		; preds = %eh_else1464
+	%eh_typeid1483 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a067 to i8*) )		; <i32> [#uses=1]
+	%tmp1485 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1483		; <i1> [#uses=1]
+	br i1 %tmp1485, label %eh_then1486, label %eh_else1500
+
+eh_then1486:		; preds = %eh_else1482
+	%tmp1489 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1500:		; preds = %eh_else1482
+	%eh_typeid1501 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a068 to i8*) )		; <i32> [#uses=1]
+	%tmp1503 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1501		; <i1> [#uses=1]
+	br i1 %tmp1503, label %eh_then1504, label %eh_else1518
+
+eh_then1504:		; preds = %eh_else1500
+	%tmp1507 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1518:		; preds = %eh_else1500
+	%eh_typeid1519 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a069 to i8*) )		; <i32> [#uses=1]
+	%tmp1521 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1519		; <i1> [#uses=1]
+	br i1 %tmp1521, label %eh_then1522, label %eh_else1536
+
+eh_then1522:		; preds = %eh_else1518
+	%tmp1525 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1536:		; preds = %eh_else1518
+	%eh_typeid1537 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a070 to i8*) )		; <i32> [#uses=1]
+	%tmp1539 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1537		; <i1> [#uses=1]
+	br i1 %tmp1539, label %eh_then1540, label %eh_else1554
+
+eh_then1540:		; preds = %eh_else1536
+	%tmp1543 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1554:		; preds = %eh_else1536
+	%eh_typeid1555 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a071 to i8*) )		; <i32> [#uses=1]
+	%tmp1557 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1555		; <i1> [#uses=1]
+	br i1 %tmp1557, label %eh_then1558, label %eh_else1572
+
+eh_then1558:		; preds = %eh_else1554
+	%tmp1561 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1572:		; preds = %eh_else1554
+	%eh_typeid1573 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a072 to i8*) )		; <i32> [#uses=1]
+	%tmp1575 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1573		; <i1> [#uses=1]
+	br i1 %tmp1575, label %eh_then1576, label %eh_else1590
+
+eh_then1576:		; preds = %eh_else1572
+	%tmp1579 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1590:		; preds = %eh_else1572
+	%eh_typeid1591 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a073 to i8*) )		; <i32> [#uses=1]
+	%tmp1593 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1591		; <i1> [#uses=1]
+	br i1 %tmp1593, label %eh_then1594, label %eh_else1608
+
+eh_then1594:		; preds = %eh_else1590
+	%tmp1597 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1608:		; preds = %eh_else1590
+	%eh_typeid1609 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a074 to i8*) )		; <i32> [#uses=1]
+	%tmp1611 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1609		; <i1> [#uses=1]
+	br i1 %tmp1611, label %eh_then1612, label %eh_else1626
+
+eh_then1612:		; preds = %eh_else1608
+	%tmp1615 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1626:		; preds = %eh_else1608
+	%eh_typeid1627 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a075 to i8*) )		; <i32> [#uses=1]
+	%tmp1629 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1627		; <i1> [#uses=1]
+	br i1 %tmp1629, label %eh_then1630, label %eh_else1644
+
+eh_then1630:		; preds = %eh_else1626
+	%tmp1633 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1644:		; preds = %eh_else1626
+	%eh_typeid1645 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a076 to i8*) )		; <i32> [#uses=1]
+	%tmp1647 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1645		; <i1> [#uses=1]
+	br i1 %tmp1647, label %eh_then1648, label %eh_else1662
+
+eh_then1648:		; preds = %eh_else1644
+	%tmp1651 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1662:		; preds = %eh_else1644
+	%eh_typeid1663 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a077 to i8*) )		; <i32> [#uses=1]
+	%tmp1665 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1663		; <i1> [#uses=1]
+	br i1 %tmp1665, label %eh_then1666, label %eh_else1680
+
+eh_then1666:		; preds = %eh_else1662
+	%tmp1669 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1680:		; preds = %eh_else1662
+	%eh_typeid1681 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a078 to i8*) )		; <i32> [#uses=1]
+	%tmp1683 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1681		; <i1> [#uses=1]
+	br i1 %tmp1683, label %eh_then1684, label %eh_else1698
+
+eh_then1684:		; preds = %eh_else1680
+	%tmp1687 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1698:		; preds = %eh_else1680
+	%eh_typeid1699 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a079 to i8*) )		; <i32> [#uses=1]
+	%tmp1701 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1699		; <i1> [#uses=1]
+	br i1 %tmp1701, label %eh_then1702, label %eh_else1716
+
+eh_then1702:		; preds = %eh_else1698
+	%tmp1705 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1716:		; preds = %eh_else1698
+	%eh_typeid1717 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a080 to i8*) )		; <i32> [#uses=1]
+	%tmp1719 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1717		; <i1> [#uses=1]
+	br i1 %tmp1719, label %eh_then1720, label %eh_else1734
+
+eh_then1720:		; preds = %eh_else1716
+	%tmp1723 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1734:		; preds = %eh_else1716
+	%eh_typeid1735 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a081 to i8*) )		; <i32> [#uses=1]
+	%tmp1737 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1735		; <i1> [#uses=1]
+	br i1 %tmp1737, label %eh_then1738, label %eh_else1752
+
+eh_then1738:		; preds = %eh_else1734
+	%tmp1741 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1752:		; preds = %eh_else1734
+	%eh_typeid1753 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a082 to i8*) )		; <i32> [#uses=1]
+	%tmp1755 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1753		; <i1> [#uses=1]
+	br i1 %tmp1755, label %eh_then1756, label %eh_else1770
+
+eh_then1756:		; preds = %eh_else1752
+	%tmp1759 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1770:		; preds = %eh_else1752
+	%eh_typeid1771 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a083 to i8*) )		; <i32> [#uses=1]
+	%tmp1773 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1771		; <i1> [#uses=1]
+	br i1 %tmp1773, label %eh_then1774, label %eh_else1788
+
+eh_then1774:		; preds = %eh_else1770
+	%tmp1777 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1788:		; preds = %eh_else1770
+	%eh_typeid1789 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a084 to i8*) )		; <i32> [#uses=1]
+	%tmp1791 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1789		; <i1> [#uses=1]
+	br i1 %tmp1791, label %eh_then1792, label %eh_else1806
+
+eh_then1792:		; preds = %eh_else1788
+	%tmp1795 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1806:		; preds = %eh_else1788
+	%eh_typeid1807 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a085 to i8*) )		; <i32> [#uses=1]
+	%tmp1809 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1807		; <i1> [#uses=1]
+	br i1 %tmp1809, label %eh_then1810, label %eh_else1824
+
+eh_then1810:		; preds = %eh_else1806
+	%tmp1813 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1824:		; preds = %eh_else1806
+	%eh_typeid1825 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a086 to i8*) )		; <i32> [#uses=1]
+	%tmp1827 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1825		; <i1> [#uses=1]
+	br i1 %tmp1827, label %eh_then1828, label %eh_else1842
+
+eh_then1828:		; preds = %eh_else1824
+	%tmp1831 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1842:		; preds = %eh_else1824
+	%eh_typeid1843 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a087 to i8*) )		; <i32> [#uses=1]
+	%tmp1845 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1843		; <i1> [#uses=1]
+	br i1 %tmp1845, label %eh_then1846, label %eh_else1860
+
+eh_then1846:		; preds = %eh_else1842
+	%tmp1849 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1860:		; preds = %eh_else1842
+	%eh_typeid1861 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a088 to i8*) )		; <i32> [#uses=1]
+	%tmp1863 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1861		; <i1> [#uses=1]
+	br i1 %tmp1863, label %eh_then1864, label %eh_else1878
+
+eh_then1864:		; preds = %eh_else1860
+	%tmp1867 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1878:		; preds = %eh_else1860
+	%eh_typeid1879 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a089 to i8*) )		; <i32> [#uses=1]
+	%tmp1881 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1879		; <i1> [#uses=1]
+	br i1 %tmp1881, label %eh_then1882, label %eh_else1896
+
+eh_then1882:		; preds = %eh_else1878
+	%tmp1885 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1896:		; preds = %eh_else1878
+	%eh_typeid1897 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a090 to i8*) )		; <i32> [#uses=1]
+	%tmp1899 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1897		; <i1> [#uses=1]
+	br i1 %tmp1899, label %eh_then1900, label %eh_else1914
+
+eh_then1900:		; preds = %eh_else1896
+	%tmp1903 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1914:		; preds = %eh_else1896
+	%eh_typeid1915 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a091 to i8*) )		; <i32> [#uses=1]
+	%tmp1917 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1915		; <i1> [#uses=1]
+	br i1 %tmp1917, label %eh_then1918, label %eh_else1932
+
+eh_then1918:		; preds = %eh_else1914
+	%tmp1921 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1932:		; preds = %eh_else1914
+	%eh_typeid1933 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a092 to i8*) )		; <i32> [#uses=1]
+	%tmp1935 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1933		; <i1> [#uses=1]
+	br i1 %tmp1935, label %eh_then1936, label %eh_else1950
+
+eh_then1936:		; preds = %eh_else1932
+	%tmp1939 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1950:		; preds = %eh_else1932
+	%eh_typeid1951 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a093 to i8*) )		; <i32> [#uses=1]
+	%tmp1953 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1951		; <i1> [#uses=1]
+	br i1 %tmp1953, label %eh_then1954, label %eh_else1968
+
+eh_then1954:		; preds = %eh_else1950
+	%tmp1957 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1968:		; preds = %eh_else1950
+	%eh_typeid1969 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a094 to i8*) )		; <i32> [#uses=1]
+	%tmp1971 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1969		; <i1> [#uses=1]
+	br i1 %tmp1971, label %eh_then1972, label %eh_else1986
+
+eh_then1972:		; preds = %eh_else1968
+	%tmp1975 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else1986:		; preds = %eh_else1968
+	%eh_typeid1987 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a095 to i8*) )		; <i32> [#uses=1]
+	%tmp1989 = icmp eq i32 %eh_selector.12734.1, %eh_typeid1987		; <i1> [#uses=1]
+	br i1 %tmp1989, label %eh_then1990, label %eh_else2004
+
+eh_then1990:		; preds = %eh_else1986
+	%tmp1993 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2004:		; preds = %eh_else1986
+	%eh_typeid2005 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a096 to i8*) )		; <i32> [#uses=1]
+	%tmp2007 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2005		; <i1> [#uses=1]
+	br i1 %tmp2007, label %eh_then2008, label %eh_else2022
+
+eh_then2008:		; preds = %eh_else2004
+	%tmp2011 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2022:		; preds = %eh_else2004
+	%eh_typeid2023 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a097 to i8*) )		; <i32> [#uses=1]
+	%tmp2025 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2023		; <i1> [#uses=1]
+	br i1 %tmp2025, label %eh_then2026, label %eh_else2040
+
+eh_then2026:		; preds = %eh_else2022
+	%tmp2029 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2040:		; preds = %eh_else2022
+	%eh_typeid2041 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a098 to i8*) )		; <i32> [#uses=1]
+	%tmp2043 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2041		; <i1> [#uses=1]
+	br i1 %tmp2043, label %eh_then2044, label %eh_else2058
+
+eh_then2044:		; preds = %eh_else2040
+	%tmp2047 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2058:		; preds = %eh_else2040
+	%eh_typeid2059 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a099 to i8*) )		; <i32> [#uses=1]
+	%tmp2061 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2059		; <i1> [#uses=1]
+	br i1 %tmp2061, label %eh_then2062, label %eh_else2076
+
+eh_then2062:		; preds = %eh_else2058
+	%tmp2065 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2076:		; preds = %eh_else2058
+	%eh_typeid2077 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a100 to i8*) )		; <i32> [#uses=1]
+	%tmp2079 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2077		; <i1> [#uses=1]
+	br i1 %tmp2079, label %eh_then2080, label %eh_else2094
+
+eh_then2080:		; preds = %eh_else2076
+	%tmp2083 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2094:		; preds = %eh_else2076
+	%eh_typeid2095 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a101 to i8*) )		; <i32> [#uses=1]
+	%tmp2097 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2095		; <i1> [#uses=1]
+	br i1 %tmp2097, label %eh_then2098, label %eh_else2112
+
+eh_then2098:		; preds = %eh_else2094
+	%tmp2101 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2112:		; preds = %eh_else2094
+	%eh_typeid2113 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a102 to i8*) )		; <i32> [#uses=1]
+	%tmp2115 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2113		; <i1> [#uses=1]
+	br i1 %tmp2115, label %eh_then2116, label %eh_else2130
+
+eh_then2116:		; preds = %eh_else2112
+	%tmp2119 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2130:		; preds = %eh_else2112
+	%eh_typeid2131 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a103 to i8*) )		; <i32> [#uses=1]
+	%tmp2133 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2131		; <i1> [#uses=1]
+	br i1 %tmp2133, label %eh_then2134, label %eh_else2148
+
+eh_then2134:		; preds = %eh_else2130
+	%tmp2137 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2148:		; preds = %eh_else2130
+	%eh_typeid2149 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a104 to i8*) )		; <i32> [#uses=1]
+	%tmp2151 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2149		; <i1> [#uses=1]
+	br i1 %tmp2151, label %eh_then2152, label %eh_else2166
+
+eh_then2152:		; preds = %eh_else2148
+	%tmp2155 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2166:		; preds = %eh_else2148
+	%eh_typeid2167 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a105 to i8*) )		; <i32> [#uses=1]
+	%tmp2169 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2167		; <i1> [#uses=1]
+	br i1 %tmp2169, label %eh_then2170, label %eh_else2184
+
+eh_then2170:		; preds = %eh_else2166
+	%tmp2173 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2184:		; preds = %eh_else2166
+	%eh_typeid2185 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a106 to i8*) )		; <i32> [#uses=1]
+	%tmp2187 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2185		; <i1> [#uses=1]
+	br i1 %tmp2187, label %eh_then2188, label %eh_else2202
+
+eh_then2188:		; preds = %eh_else2184
+	%tmp2191 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2202:		; preds = %eh_else2184
+	%eh_typeid2203 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a107 to i8*) )		; <i32> [#uses=1]
+	%tmp2205 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2203		; <i1> [#uses=1]
+	br i1 %tmp2205, label %eh_then2206, label %eh_else2220
+
+eh_then2206:		; preds = %eh_else2202
+	%tmp2209 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2220:		; preds = %eh_else2202
+	%eh_typeid2221 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a108 to i8*) )		; <i32> [#uses=1]
+	%tmp2223 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2221		; <i1> [#uses=1]
+	br i1 %tmp2223, label %eh_then2224, label %eh_else2238
+
+eh_then2224:		; preds = %eh_else2220
+	%tmp2227 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2238:		; preds = %eh_else2220
+	%eh_typeid2239 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a109 to i8*) )		; <i32> [#uses=1]
+	%tmp2241 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2239		; <i1> [#uses=1]
+	br i1 %tmp2241, label %eh_then2242, label %eh_else2256
+
+eh_then2242:		; preds = %eh_else2238
+	%tmp2245 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2256:		; preds = %eh_else2238
+	%eh_typeid2257 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a110 to i8*) )		; <i32> [#uses=1]
+	%tmp2259 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2257		; <i1> [#uses=1]
+	br i1 %tmp2259, label %eh_then2260, label %eh_else2274
+
+eh_then2260:		; preds = %eh_else2256
+	%tmp2263 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2274:		; preds = %eh_else2256
+	%eh_typeid2275 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a111 to i8*) )		; <i32> [#uses=1]
+	%tmp2277 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2275		; <i1> [#uses=1]
+	br i1 %tmp2277, label %eh_then2278, label %eh_else2292
+
+eh_then2278:		; preds = %eh_else2274
+	%tmp2281 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2292:		; preds = %eh_else2274
+	%eh_typeid2293 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a112 to i8*) )		; <i32> [#uses=1]
+	%tmp2295 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2293		; <i1> [#uses=1]
+	br i1 %tmp2295, label %eh_then2296, label %eh_else2310
+
+eh_then2296:		; preds = %eh_else2292
+	%tmp2299 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2310:		; preds = %eh_else2292
+	%eh_typeid2311 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a113 to i8*) )		; <i32> [#uses=1]
+	%tmp2313 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2311		; <i1> [#uses=1]
+	br i1 %tmp2313, label %eh_then2314, label %eh_else2328
+
+eh_then2314:		; preds = %eh_else2310
+	%tmp2317 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2328:		; preds = %eh_else2310
+	%eh_typeid2329 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a114 to i8*) )		; <i32> [#uses=1]
+	%tmp2331 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2329		; <i1> [#uses=1]
+	br i1 %tmp2331, label %eh_then2332, label %eh_else2346
+
+eh_then2332:		; preds = %eh_else2328
+	%tmp2335 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2346:		; preds = %eh_else2328
+	%eh_typeid2347 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a115 to i8*) )		; <i32> [#uses=1]
+	%tmp2349 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2347		; <i1> [#uses=1]
+	br i1 %tmp2349, label %eh_then2350, label %eh_else2364
+
+eh_then2350:		; preds = %eh_else2346
+	%tmp2353 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2364:		; preds = %eh_else2346
+	%eh_typeid2365 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a116 to i8*) )		; <i32> [#uses=1]
+	%tmp2367 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2365		; <i1> [#uses=1]
+	br i1 %tmp2367, label %eh_then2368, label %eh_else2382
+
+eh_then2368:		; preds = %eh_else2364
+	%tmp2371 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2382:		; preds = %eh_else2364
+	%eh_typeid2383 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a117 to i8*) )		; <i32> [#uses=1]
+	%tmp2385 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2383		; <i1> [#uses=1]
+	br i1 %tmp2385, label %eh_then2386, label %eh_else2400
+
+eh_then2386:		; preds = %eh_else2382
+	%tmp2389 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2400:		; preds = %eh_else2382
+	%eh_typeid2401 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a118 to i8*) )		; <i32> [#uses=1]
+	%tmp2403 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2401		; <i1> [#uses=1]
+	br i1 %tmp2403, label %eh_then2404, label %eh_else2418
+
+eh_then2404:		; preds = %eh_else2400
+	%tmp2407 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2418:		; preds = %eh_else2400
+	%eh_typeid2419 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a119 to i8*) )		; <i32> [#uses=1]
+	%tmp2421 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2419		; <i1> [#uses=1]
+	br i1 %tmp2421, label %eh_then2422, label %eh_else2436
+
+eh_then2422:		; preds = %eh_else2418
+	%tmp2425 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2436:		; preds = %eh_else2418
+	%eh_typeid2437 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a120 to i8*) )		; <i32> [#uses=1]
+	%tmp2439 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2437		; <i1> [#uses=1]
+	br i1 %tmp2439, label %eh_then2440, label %eh_else2454
+
+eh_then2440:		; preds = %eh_else2436
+	%tmp2443 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2454:		; preds = %eh_else2436
+	%eh_typeid2455 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a121 to i8*) )		; <i32> [#uses=1]
+	%tmp2457 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2455		; <i1> [#uses=1]
+	br i1 %tmp2457, label %eh_then2458, label %eh_else2472
+
+eh_then2458:		; preds = %eh_else2454
+	%tmp2461 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2472:		; preds = %eh_else2454
+	%eh_typeid2473 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a122 to i8*) )		; <i32> [#uses=1]
+	%tmp2475 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2473		; <i1> [#uses=1]
+	br i1 %tmp2475, label %eh_then2476, label %eh_else2490
+
+eh_then2476:		; preds = %eh_else2472
+	%tmp2479 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2490:		; preds = %eh_else2472
+	%eh_typeid2491 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a123 to i8*) )		; <i32> [#uses=1]
+	%tmp2493 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2491		; <i1> [#uses=1]
+	br i1 %tmp2493, label %eh_then2494, label %eh_else2508
+
+eh_then2494:		; preds = %eh_else2490
+	%tmp2497 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2508:		; preds = %eh_else2490
+	%eh_typeid2509 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a124 to i8*) )		; <i32> [#uses=1]
+	%tmp2511 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2509		; <i1> [#uses=1]
+	br i1 %tmp2511, label %eh_then2512, label %eh_else2526
+
+eh_then2512:		; preds = %eh_else2508
+	%tmp2515 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2526:		; preds = %eh_else2508
+	%eh_typeid2527 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a125 to i8*) )		; <i32> [#uses=1]
+	%tmp2529 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2527		; <i1> [#uses=1]
+	br i1 %tmp2529, label %eh_then2530, label %eh_else2544
+
+eh_then2530:		; preds = %eh_else2526
+	%tmp2533 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2544:		; preds = %eh_else2526
+	%eh_typeid2545 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a126 to i8*) )		; <i32> [#uses=1]
+	%tmp2547 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2545		; <i1> [#uses=1]
+	br i1 %tmp2547, label %eh_then2548, label %eh_else2562
+
+eh_then2548:		; preds = %eh_else2544
+	%tmp2551 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2562:		; preds = %eh_else2544
+	%eh_typeid2563 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a127 to i8*) )		; <i32> [#uses=1]
+	%tmp2565 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2563		; <i1> [#uses=1]
+	br i1 %tmp2565, label %eh_then2566, label %eh_else2580
+
+eh_then2566:		; preds = %eh_else2562
+	%tmp2569 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+eh_else2580:		; preds = %eh_else2562
+	%eh_typeid2581 = tail call i32 @llvm.eh.typeid.for( i8* bitcast (%struct.__class_type_info_pseudo* @_ZTI4a128 to i8*) )		; <i32> [#uses=1]
+	%tmp2583 = icmp eq i32 %eh_selector.12734.1, %eh_typeid2581		; <i1> [#uses=1]
+	br i1 %tmp2583, label %eh_then2584, label %Unwind
+
+eh_then2584:		; preds = %eh_else2580
+	%tmp2587 = tail call i8* @__cxa_begin_catch( i8* %eh_exception.12604.1 )		; <i8*> [#uses=0]
+	tail call void @__cxa_end_catch( )
+	ret void
+
+Unwind:		; preds = %eh_else2580
+	tail call i32 (...)* @_Unwind_Resume( i8* %eh_exception.12604.1 )		; <i32>:0 [#uses=0]
+	unreachable
+
+UnifiedUnreachableBlock1:		; preds = %filter270, %filter
+	unreachable
+
+UnifiedReturnBlock2:		; preds = %entry
+	ret void
+}
+
+declare i8* @__cxa_begin_catch(i8*)
+
+declare void @__cxa_end_catch()
diff --git a/test/CodeGen/Generic/BasicInstrs.llx b/test/CodeGen/Generic/BasicInstrs.llx
new file mode 100644
index 0000000..8260609
--- /dev/null
+++ b/test/CodeGen/Generic/BasicInstrs.llx
@@ -0,0 +1,54 @@
+; New testcase, this contains a bunch of simple instructions that should be 
+; handled by a code generator.
+
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+int %add(int %A, int %B) {
+	%R = add int %A, %B
+	ret int %R
+}
+
+int %sub(int %A, int %B) {
+	%R = sub int %A, %B
+	ret int %R
+}
+
+int %mul(int %A, int %B) {
+	%R = mul int %A, %B
+	ret int %R
+}
+
+int %sdiv(int %A, int %B) {
+	%R = div int %A, %B
+	ret int %R
+}
+
+uint %udiv(uint %A, uint %B) {
+	%R = div uint %A, %B
+	ret uint %R
+}
+
+int %srem(int %A, int %B) {
+	%R = rem int %A, %B
+	ret int %R
+}
+
+uint %urem(uint %A, uint %B) {
+	%R = rem uint %A, %B
+	ret uint %R
+}
+
+int %and(int %A, int %B) {
+	%R = and int %A, %B
+	ret int %R
+}
+
+int %or(int %A, int %B) {
+	%R = or int %A, %B
+	ret int %R
+}
+
+int %xor(int %A, int %B) {
+	%R = xor int %A, %B
+	ret int %R
+}
diff --git a/test/CodeGen/Generic/BurgBadRegAlloc.ll b/test/CodeGen/Generic/BurgBadRegAlloc.ll
new file mode 100644
index 0000000..af74a81
--- /dev/null
+++ b/test/CodeGen/Generic/BurgBadRegAlloc.ll
@@ -0,0 +1,831 @@
+; RUN: llvm-upgrade %s | llvm-as | 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 short]
+	%Dimension = type %struct.dimension*
+	%Index_Map = type { int, %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 int ()*
+	%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 { int, %List }
+	%struct.binding = type { sbyte*, int }
+	%struct.dimension = type { short*, %Index_Map, %Mapping, int, %PlankMap }
+	%struct.index_map = type { int, %Item_Set* }
+	%struct.intlist = type { int, %IntList }
+	%struct.item = type { %DeltaCost, %Rule }
+	%struct.item_set = type { int, int, %Operator, [2 x %Item_Set], %Item_Set, short*, %ItemArray, %ItemArray }
+	%struct.list = type { sbyte*, %List }
+	%struct.mapping = type { %List*, int, int, int, %Item_Set* }
+	%struct.nonterminal = type { sbyte*, int, int, int, %PlankMap, %Rule }
+	%struct.operator = type { sbyte*, uint, int, int, int, int, %Table }
+	%struct.pattern = type { %NonTerminal, %Operator, [2 x %NonTerminal] }
+	%struct.patternAST = type { %Symbol, sbyte*, %List }
+	%struct.plank = type { sbyte*, %List, int }
+	%struct.plankMap = type { %List, int, %StateMap }
+	%struct.rule = type { %DeltaCost, int, int, int, %NonTerminal, %Pattern, uint }
+	%struct.ruleAST = type { sbyte*, %PatternAST, int, %IntList, %Rule, %StrTableElement, %StrTableElement }
+	%struct.stateMap = type { sbyte*, %Plank, int, short* }
+	%struct.strTableElement = type { sbyte*, %IntList, sbyte* }
+	%struct.symbol = type { sbyte*, int, { %Operator } }
+	%struct.table = type { %Operator, %List, short*, [2 x %Dimension], %Item_Set* }
+%yylval = external global %YYSTYPE		; <%YYSTYPE*> [#uses=1]
+%yylhs = external global [25 x short]		; <[25 x short]*> [#uses=1]
+%yylen = external global [25 x short]		; <[25 x short]*> [#uses=1]
+%yydefred = external global [43 x short]		; <[43 x short]*> [#uses=1]
+%yydgoto = external global [12 x short]		; <[12 x short]*> [#uses=1]
+%yysindex = external global [43 x short]		; <[43 x short]*> [#uses=2]
+%yyrindex = external global [43 x short]		; <[43 x short]*> [#uses=1]
+%yygindex = external global [12 x short]		; <[12 x short]*> [#uses=1]
+%yytable = external global [263 x short]		; <[263 x short]*> [#uses=4]
+%yycheck = external global [263 x short]		; <[263 x short]*> [#uses=4]
+%yynerrs = external global int		; <int*> [#uses=3]
+%yyerrflag = external global int		; <int*> [#uses=6]
+%yychar = external global int		; <int*> [#uses=15]
+%yyssp = external global short*		; <short**> [#uses=15]
+%yyvsp = external global %YYSTYPE*		; <%YYSTYPE**> [#uses=30]
+%yyval = external global %YYSTYPE		; <%YYSTYPE*> [#uses=1]
+%yyss = external global short*		; <short**> [#uses=3]
+%yysslim = external global short*		; <short**> [#uses=3]
+%yyvs = external global %YYSTYPE*		; <%YYSTYPE**> [#uses=1]
+%.LC01 = external global [13 x sbyte]		; <[13 x sbyte]*> [#uses=1]
+%.LC1 = external global [20 x sbyte]		; <[20 x sbyte]*> [#uses=1]
+
+implementation   ; Functions:
+
+int %yyparse() {
+bb0:		; No predecessors!
+	store int 0, int* %yynerrs
+	store int 0, int* %yyerrflag
+	store int -1, int* %yychar
+	%reg113 = load short** %yyss		; <short*> [#uses=1]
+	%cond581 = setne short* %reg113, null		; <bool> [#uses=1]
+	br bool %cond581, label %bb3, label %bb2
+
+bb2:		; preds = %bb0
+	%reg584 = call int %yygrowstack( )		; <int> [#uses=1]
+	%cond584 = setne int %reg584, 0		; <bool> [#uses=1]
+	br bool %cond584, label %bb113, label %bb3
+
+bb3:		; preds = %bb2, %bb0
+	%reg115 = load short** %yyss		; <short*> [#uses=1]
+	store short* %reg115, short** %yyssp
+	%reg116 = load %YYSTYPE** %yyvs		; <%YYSTYPE*> [#uses=1]
+	store %YYSTYPE* %reg116, %YYSTYPE** %yyvsp
+	%reg117 = load short** %yyssp		; <short*> [#uses=1]
+	store short 0, short* %reg117
+	br label %bb4
+
+bb4:		; preds = %bb14, %bb15, %bb31, %bb35, %bb102, %bb112, %bb3
+	%reg458 = phi uint [ %reg476, %bb112 ], [ 1, %bb102 ], [ %reg458, %bb35 ], [ %cast768, %bb31 ], [ %cast658, %bb15 ], [ %cast658, %bb14 ], [ 0, %bb3 ]		; <uint> [#uses=2]
+	%reg458-idxcast = cast uint %reg458 to long		; <long> [#uses=3]
+	%reg594 = getelementptr [43 x short]* %yydefred, long 0, long %reg458-idxcast		; <short*> [#uses=1]
+	%reg125 = load short* %reg594		; <short> [#uses=1]
+	%cast599 = cast short %reg125 to int		; <int> [#uses=2]
+	%cond600 = setne int %cast599, 0		; <bool> [#uses=1]
+	br bool %cond600, label %bb36, label %bb5
+
+bb5:		; preds = %bb4
+	%reg127 = load int* %yychar		; <int> [#uses=1]
+	%cond603 = setge int %reg127, 0		; <bool> [#uses=1]
+	br bool %cond603, label %bb8, label %bb6
+
+bb6:		; preds = %bb5
+	%reg607 = call int %yylex( )		; <int> [#uses=1]
+	store int %reg607, int* %yychar
+	%reg129 = load int* %yychar		; <int> [#uses=1]
+	%cond609 = setge int %reg129, 0		; <bool> [#uses=1]
+	br bool %cond609, label %bb8, label %bb7
+
+bb7:		; preds = %bb6
+	store int 0, int* %yychar
+	br label %bb8
+
+bb8:		; preds = %bb7, %bb6, %bb5
+	%reg615 = getelementptr [43 x short]* %yysindex, long 0, long %reg458-idxcast		; <short*> [#uses=1]
+	%reg137 = load short* %reg615		; <short> [#uses=1]
+	%cast620 = cast short %reg137 to int		; <int> [#uses=2]
+	%cond621 = seteq int %cast620, 0		; <bool> [#uses=1]
+	br bool %cond621, label %bb16, label %bb9
+
+bb9:		; preds = %bb8
+	%reg139 = load int* %yychar		; <int> [#uses=2]
+	%reg460 = add int %cast620, %reg139		; <int> [#uses=3]
+	%cond624 = setlt int %reg460, 0		; <bool> [#uses=1]
+	br bool %cond624, label %bb16, label %bb10
+
+bb10:		; preds = %bb9
+	%cond627 = setgt int %reg460, 262		; <bool> [#uses=1]
+	br bool %cond627, label %bb16, label %bb11
+
+bb11:		; preds = %bb10
+	%reg460-idxcast = cast int %reg460 to long		; <long> [#uses=2]
+	%reg632 = getelementptr [263 x short]* %yycheck, long 0, long %reg460-idxcast		; <short*> [#uses=1]
+	%reg148 = load short* %reg632		; <short> [#uses=1]
+	%cast637 = cast short %reg148 to int		; <int> [#uses=1]
+	%cond639 = setne int %cast637, %reg139		; <bool> [#uses=1]
+	br bool %cond639, label %bb16, label %bb12
+
+bb12:		; preds = %bb11
+	%reg150 = load short** %yyssp		; <short*> [#uses=1]
+	%cast640 = cast short* %reg150 to sbyte*		; <sbyte*> [#uses=1]
+	%reg151 = load short** %yysslim		; <short*> [#uses=1]
+	%cast641 = cast short* %reg151 to sbyte*		; <sbyte*> [#uses=1]
+	%cond642 = setlt sbyte* %cast640, %cast641		; <bool> [#uses=1]
+	br bool %cond642, label %bb14, label %bb13
+
+bb13:		; preds = %bb12
+	%reg644 = call int %yygrowstack( )		; <int> [#uses=1]
+	%cond644 = setne int %reg644, 0		; <bool> [#uses=1]
+	br bool %cond644, label %bb113, label %bb14
+
+bb14:		; preds = %bb13, %bb12
+	%reg153 = load short** %yyssp		; <short*> [#uses=1]
+	%reg647 = getelementptr short* %reg153, long 1		; <short*> [#uses=2]
+	store short* %reg647, short** %yyssp
+	%reg653 = getelementptr [263 x short]* %yytable, long 0, long %reg460-idxcast		; <short*> [#uses=1]
+	%reg162 = load short* %reg653		; <short> [#uses=2]
+	%cast658 = cast short %reg162 to uint		; <uint> [#uses=2]
+	store short %reg162, short* %reg647
+	%reg164 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%reg661 = getelementptr %YYSTYPE* %reg164, long 1		; <%YYSTYPE*> [#uses=1]
+	store %YYSTYPE* %reg661, %YYSTYPE** %yyvsp
+	%reg167 = load %IntList* getelementptr (%YYSTYPE* %yylval, long 0, uint 0)		; <%IntList> [#uses=1]
+	%reg661.idx1 = getelementptr %YYSTYPE* %reg164, long 1, uint 0		; <%IntList*> [#uses=1]
+	store %IntList %reg167, %IntList* %reg661.idx1
+	store int -1, int* %yychar
+	%reg169 = load int* %yyerrflag		; <int> [#uses=2]
+	%cond669 = setle int %reg169, 0		; <bool> [#uses=1]
+	br bool %cond669, label %bb4, label %bb15
+
+bb15:		; preds = %bb14
+	%reg171 = add int %reg169, -1		; <int> [#uses=1]
+	store int %reg171, int* %yyerrflag
+	br label %bb4
+
+bb16:		; preds = %bb11, %bb10, %bb9, %bb8
+	%reg677 = getelementptr [43 x short]* %yyrindex, long 0, long %reg458-idxcast		; <short*> [#uses=1]
+	%reg178 = load short* %reg677		; <short> [#uses=1]
+	%cast682 = cast short %reg178 to int		; <int> [#uses=2]
+	%cond683 = seteq int %cast682, 0		; <bool> [#uses=1]
+	br bool %cond683, label %bb21, label %bb17
+
+bb17:		; preds = %bb16
+	%reg180 = load int* %yychar		; <int> [#uses=2]
+	%reg463 = add int %cast682, %reg180		; <int> [#uses=3]
+	%cond686 = setlt int %reg463, 0		; <bool> [#uses=1]
+	br bool %cond686, label %bb21, label %bb18
+
+bb18:		; preds = %bb17
+	%cond689 = setgt int %reg463, 262		; <bool> [#uses=1]
+	br bool %cond689, label %bb21, label %bb19
+
+bb19:		; preds = %bb18
+	%reg463-idxcast = cast int %reg463 to long		; <long> [#uses=2]
+	%reg694 = getelementptr [263 x short]* %yycheck, long 0, long %reg463-idxcast		; <short*> [#uses=1]
+	%reg189 = load short* %reg694		; <short> [#uses=1]
+	%cast699 = cast short %reg189 to int		; <int> [#uses=1]
+	%cond701 = setne int %cast699, %reg180		; <bool> [#uses=1]
+	br bool %cond701, label %bb21, label %bb20
+
+bb20:		; preds = %bb19
+	%reg704 = getelementptr [263 x short]* %yytable, long 0, long %reg463-idxcast		; <short*> [#uses=1]
+	%reg197 = load short* %reg704		; <short> [#uses=1]
+	%cast709 = cast short %reg197 to int		; <int> [#uses=1]
+	br label %bb36
+
+bb21:		; preds = %bb19, %bb18, %bb17, %bb16
+	%reg198 = load int* %yyerrflag		; <int> [#uses=1]
+	%cond711 = setne int %reg198, 0		; <bool> [#uses=1]
+	br bool %cond711, label %bb23, label %bb22
+
+bb22:		; preds = %bb21
+	call void %yyerror( sbyte* getelementptr ([13 x sbyte]* %.LC01, long 0, long 0) )
+	%reg200 = load int* %yynerrs		; <int> [#uses=1]
+	%reg201 = add int %reg200, 1		; <int> [#uses=1]
+	store int %reg201, int* %yynerrs
+	br label %bb23
+
+bb23:		; preds = %bb22, %bb21
+	%reg202 = load int* %yyerrflag		; <int> [#uses=1]
+	%cond719 = setgt int %reg202, 2		; <bool> [#uses=1]
+	br bool %cond719, label %bb34, label %bb24
+
+bb24:		; preds = %bb23
+	store int 3, int* %yyerrflag
+	%reg241 = load short** %yyss		; <short*> [#uses=1]
+	%cast778 = cast short* %reg241 to sbyte*		; <sbyte*> [#uses=1]
+	br label %bb25
+
+bb25:		; preds = %bb33, %bb24
+	%reg204 = load short** %yyssp		; <short*> [#uses=4]
+	%reg206 = load short* %reg204		; <short> [#uses=1]
+	%reg206-idxcast = cast short %reg206 to long		; <long> [#uses=1]
+	%reg727 = getelementptr [43 x short]* %yysindex, long 0, long %reg206-idxcast		; <short*> [#uses=1]
+	%reg212 = load short* %reg727		; <short> [#uses=2]
+	%cast732 = cast short %reg212 to int		; <int> [#uses=2]
+	%cond733 = seteq int %cast732, 0		; <bool> [#uses=1]
+	br bool %cond733, label %bb32, label %bb26
+
+bb26:		; preds = %bb25
+	%reg466 = add int %cast732, 256		; <int> [#uses=2]
+	%cond736 = setlt int %reg466, 0		; <bool> [#uses=1]
+	br bool %cond736, label %bb32, label %bb27
+
+bb27:		; preds = %bb26
+	%cond739 = setgt int %reg466, 262		; <bool> [#uses=1]
+	br bool %cond739, label %bb32, label %bb28
+
+bb28:		; preds = %bb27
+	%reg212-idxcast = cast short %reg212 to long		; <long> [#uses=1]
+	%reg212-idxcast-offset = add long %reg212-idxcast, 256		; <long> [#uses=2]
+	%reg744 = getelementptr [263 x short]* %yycheck, long 0, long %reg212-idxcast-offset		; <short*> [#uses=1]
+	%reg221 = load short* %reg744		; <short> [#uses=1]
+	%cond748 = setne short %reg221, 256		; <bool> [#uses=1]
+	br bool %cond748, label %bb32, label %bb29
+
+bb29:		; preds = %bb28
+	%cast750 = cast short* %reg204 to sbyte*		; <sbyte*> [#uses=1]
+	%reg223 = load short** %yysslim		; <short*> [#uses=1]
+	%cast751 = cast short* %reg223 to sbyte*		; <sbyte*> [#uses=1]
+	%cond752 = setlt sbyte* %cast750, %cast751		; <bool> [#uses=1]
+	br bool %cond752, label %bb31, label %bb30
+
+bb30:		; preds = %bb29
+	%reg754 = call int %yygrowstack( )		; <int> [#uses=1]
+	%cond754 = setne int %reg754, 0		; <bool> [#uses=1]
+	br bool %cond754, label %bb113, label %bb31
+
+bb31:		; preds = %bb30, %bb29
+	%reg225 = load short** %yyssp		; <short*> [#uses=1]
+	%reg757 = getelementptr short* %reg225, long 1		; <short*> [#uses=2]
+	store short* %reg757, short** %yyssp
+	%reg763 = getelementptr [263 x short]* %yytable, long 0, long %reg212-idxcast-offset		; <short*> [#uses=1]
+	%reg234 = load short* %reg763		; <short> [#uses=2]
+	%cast768 = cast short %reg234 to uint		; <uint> [#uses=1]
+	store short %reg234, short* %reg757
+	%reg236 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%reg771 = getelementptr %YYSTYPE* %reg236, long 1		; <%YYSTYPE*> [#uses=1]
+	store %YYSTYPE* %reg771, %YYSTYPE** %yyvsp
+	%reg239 = load %IntList* getelementptr (%YYSTYPE* %yylval, long 0, uint 0)		; <%IntList> [#uses=1]
+	%reg771.idx1 = getelementptr %YYSTYPE* %reg236, long 1, uint 0		; <%IntList*> [#uses=1]
+	store %IntList %reg239, %IntList* %reg771.idx1
+	br label %bb4
+
+bb32:		; preds = %bb28, %bb27, %bb26, %bb25
+	%cast777 = cast short* %reg204 to sbyte*		; <sbyte*> [#uses=1]
+	%cond779 = setle sbyte* %cast777, %cast778		; <bool> [#uses=1]
+	br bool %cond779, label %UnifiedExitNode, label %bb33
+
+bb33:		; preds = %bb32
+	%reg781 = getelementptr short* %reg204, long -1		; <short*> [#uses=1]
+	store short* %reg781, short** %yyssp
+	%reg244 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=1]
+	%reg786 = getelementptr %YYSTYPE* %reg244, long -1		; <%YYSTYPE*> [#uses=1]
+	store %YYSTYPE* %reg786, %YYSTYPE** %yyvsp
+	br label %bb25
+
+bb34:		; preds = %bb23
+	%reg246 = load int* %yychar		; <int> [#uses=1]
+	%cond791 = seteq int %reg246, 0		; <bool> [#uses=1]
+	br bool %cond791, label %UnifiedExitNode, label %bb35
+
+bb35:		; preds = %bb34
+	store int -1, int* %yychar
+	br label %bb4
+
+bb36:		; preds = %bb20, %bb4
+	%reg468 = phi int [ %cast709, %bb20 ], [ %cast599, %bb4 ]		; <int> [#uses=31]
+	%reg468-idxcast = cast int %reg468 to long		; <long> [#uses=2]
+	%reg796 = getelementptr [25 x short]* %yylen, long 0, long %reg468-idxcast		; <short*> [#uses=1]
+	%reg254 = load short* %reg796		; <short> [#uses=2]
+	%reg259 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=1]
+	%reg254-idxcast = cast short %reg254 to long		; <long> [#uses=1]
+	%reg254-idxcast-scale = mul long %reg254-idxcast, -1		; <long> [#uses=1]
+	%reg254-idxcast-scale-offset = add long %reg254-idxcast-scale, 1		; <long> [#uses=1]
+	%reg261.idx1 = getelementptr %YYSTYPE* %reg259, long %reg254-idxcast-scale-offset, uint 0		; <%IntList*> [#uses=1]
+	%reg261 = load %IntList* %reg261.idx1		; <%IntList> [#uses=1]
+	store %IntList %reg261, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	%cond812 = seteq int %reg468, 13		; <bool> [#uses=1]
+	br bool %cond812, label %bb85, label %bb37
+
+bb37:		; preds = %bb36
+	%cond814 = setgt int %reg468, 13		; <bool> [#uses=1]
+	br bool %cond814, label %bb56, label %bb38
+
+bb38:		; preds = %bb37
+	%cond817 = seteq int %reg468, 7		; <bool> [#uses=1]
+	br bool %cond817, label %bb79, label %bb39
+
+bb39:		; preds = %bb38
+	%cond819 = setgt int %reg468, 7		; <bool> [#uses=1]
+	br bool %cond819, label %bb48, label %bb40
+
+bb40:		; preds = %bb39
+	%cond822 = seteq int %reg468, 4		; <bool> [#uses=1]
+	br bool %cond822, label %bb76, label %bb41
+
+bb41:		; preds = %bb40
+	%cond824 = setgt int %reg468, 4		; <bool> [#uses=1]
+	br bool %cond824, label %bb45, label %bb42
+
+bb42:		; preds = %bb41
+	%cond827 = seteq int %reg468, 2		; <bool> [#uses=1]
+	br bool %cond827, label %bb74, label %bb43
+
+bb43:		; preds = %bb42
+	%cond829 = seteq int %reg468, 3		; <bool> [#uses=1]
+	br bool %cond829, label %bb75, label %bb97
+
+bb45:		; preds = %bb41
+	%cond831 = seteq int %reg468, 5		; <bool> [#uses=1]
+	br bool %cond831, label %bb77, label %bb46
+
+bb46:		; preds = %bb45
+	%cond833 = seteq int %reg468, 6		; <bool> [#uses=1]
+	br bool %cond833, label %bb78, label %bb97
+
+bb48:		; preds = %bb39
+	%cond835 = seteq int %reg468, 10		; <bool> [#uses=1]
+	br bool %cond835, label %bb82, label %bb49
+
+bb49:		; preds = %bb48
+	%cond837 = setgt int %reg468, 10		; <bool> [#uses=1]
+	br bool %cond837, label %bb53, label %bb50
+
+bb50:		; preds = %bb49
+	%cond840 = seteq int %reg468, 8		; <bool> [#uses=1]
+	br bool %cond840, label %bb80, label %bb51
+
+bb51:		; preds = %bb50
+	%cond842 = seteq int %reg468, 9		; <bool> [#uses=1]
+	br bool %cond842, label %bb81, label %bb97
+
+bb53:		; preds = %bb49
+	%cond844 = seteq int %reg468, 11		; <bool> [#uses=1]
+	br bool %cond844, label %bb83, label %bb54
+
+bb54:		; preds = %bb53
+	%cond846 = seteq int %reg468, 12		; <bool> [#uses=1]
+	br bool %cond846, label %bb84, label %bb97
+
+bb56:		; preds = %bb37
+	%cond848 = seteq int %reg468, 19		; <bool> [#uses=1]
+	br bool %cond848, label %bb91, label %bb57
+
+bb57:		; preds = %bb56
+	%cond850 = setgt int %reg468, 19		; <bool> [#uses=1]
+	br bool %cond850, label %bb66, label %bb58
+
+bb58:		; preds = %bb57
+	%cond853 = seteq int %reg468, 16		; <bool> [#uses=1]
+	br bool %cond853, label %bb88, label %bb59
+
+bb59:		; preds = %bb58
+	%cond855 = setgt int %reg468, 16		; <bool> [#uses=1]
+	br bool %cond855, label %bb63, label %bb60
+
+bb60:		; preds = %bb59
+	%cond858 = seteq int %reg468, 14		; <bool> [#uses=1]
+	br bool %cond858, label %bb86, label %bb61
+
+bb61:		; preds = %bb60
+	%cond860 = seteq int %reg468, 15		; <bool> [#uses=1]
+	br bool %cond860, label %bb87, label %bb97
+
+bb63:		; preds = %bb59
+	%cond862 = seteq int %reg468, 17		; <bool> [#uses=1]
+	br bool %cond862, label %bb89, label %bb64
+
+bb64:		; preds = %bb63
+	%cond864 = seteq int %reg468, 18		; <bool> [#uses=1]
+	br bool %cond864, label %bb90, label %bb97
+
+bb66:		; preds = %bb57
+	%cond866 = seteq int %reg468, 22		; <bool> [#uses=1]
+	br bool %cond866, label %bb94, label %bb67
+
+bb67:		; preds = %bb66
+	%cond868 = setgt int %reg468, 22		; <bool> [#uses=1]
+	br bool %cond868, label %bb71, label %bb68
+
+bb68:		; preds = %bb67
+	%cond871 = seteq int %reg468, 20		; <bool> [#uses=1]
+	br bool %cond871, label %bb92, label %bb69
+
+bb69:		; preds = %bb68
+	%cond873 = seteq int %reg468, 21		; <bool> [#uses=1]
+	br bool %cond873, label %bb93, label %bb97
+
+bb71:		; preds = %bb67
+	%cond875 = seteq int %reg468, 23		; <bool> [#uses=1]
+	br bool %cond875, label %bb95, label %bb72
+
+bb72:		; preds = %bb71
+	%cond877 = seteq int %reg468, 24		; <bool> [#uses=1]
+	br bool %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, long -2, uint 0		; <%IntList*> [#uses=1]
+	%reg264 = load %IntList* %reg264.idx1		; <%IntList> [#uses=1]
+	%reg265.idx = getelementptr %YYSTYPE* %reg262, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg265 = load %IntList* %reg265.idx		; <%IntList> [#uses=1]
+	%cast889 = cast %IntList %reg265 to %List		; <%List> [#uses=1]
+	%cast890 = cast %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, long 0, uint 0)
+	br label %bb97
+
+bb77:		; preds = %bb45
+	%reg269 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%cast894 = getelementptr %YYSTYPE* %reg269, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg271 = load %IntList* %cast894		; <%IntList> [#uses=1]
+	%reg271 = cast %IntList %reg271 to sbyte*		; <sbyte*> [#uses=1]
+	%reg272.idx1 = getelementptr %YYSTYPE* %reg269, long -1, uint 0		; <%IntList*> [#uses=1]
+	%reg272 = load %IntList* %reg272.idx1		; <%IntList> [#uses=1]
+	%cast901 = cast %IntList %reg272 to %List		; <%List> [#uses=1]
+	%reg901 = call %List %newList( sbyte* %reg271, %List %cast901 )		; <%List> [#uses=1]
+	cast %List %reg901 to %IntList		; <%IntList>:0 [#uses=1]
+	store %IntList %0, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb78:		; preds = %bb46
+	%reg275 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=1]
+	%reg277.idx = getelementptr %YYSTYPE* %reg275, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg277 = load %IntList* %reg277.idx		; <%IntList> [#uses=1]
+	%cast907 = cast %IntList %reg277 to %List		; <%List> [#uses=1]
+	%reg907 = call %Arity %newArity( int -1, %List %cast907 )		; <%Arity> [#uses=1]
+	cast %Arity %reg907 to %IntList		; <%IntList>:1 [#uses=1]
+	store %IntList %1, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb79:		; preds = %bb38
+	store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	%reg281 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=1]
+	%cast912 = getelementptr %YYSTYPE* %reg281, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg282 = load %IntList* %cast912		; <%IntList> [#uses=1]
+	%reg282 = cast %IntList %reg282 to %List		; <%List> [#uses=1]
+	call void %doGram( %List %reg282 )
+	br label %bb97
+
+bb80:		; preds = %bb50
+	store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	%reg285 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=1]
+	%cast917 = getelementptr %YYSTYPE* %reg285, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg286 = load %IntList* %cast917		; <%IntList> [#uses=1]
+	%reg286 = cast %IntList %reg286 to sbyte*		; <sbyte*> [#uses=1]
+	call void %doStart( sbyte* %reg286 )
+	br label %bb97
+
+bb81:		; preds = %bb51
+	store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb82:		; preds = %bb48
+	%reg290 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%cast923 = getelementptr %YYSTYPE* %reg290, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg292 = load %IntList* %cast923		; <%IntList> [#uses=1]
+	%reg292 = cast %IntList %reg292 to sbyte*		; <sbyte*> [#uses=1]
+	%reg293.idx1 = getelementptr %YYSTYPE* %reg290, long -1, uint 0		; <%IntList*> [#uses=1]
+	%reg293 = load %IntList* %reg293.idx1		; <%IntList> [#uses=1]
+	%cast930 = cast %IntList %reg293 to %List		; <%List> [#uses=1]
+	%reg930 = call %List %newList( sbyte* %reg292, %List %cast930 )		; <%List> [#uses=1]
+	cast %List %reg930 to %IntList		; <%IntList>:2 [#uses=1]
+	store %IntList %2, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb83:		; preds = %bb53
+	store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb84:		; preds = %bb54
+	%reg298 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%cast936 = getelementptr %YYSTYPE* %reg298, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg300 = load %IntList* %cast936		; <%IntList> [#uses=1]
+	%reg300 = cast %IntList %reg300 to sbyte*		; <sbyte*> [#uses=1]
+	%reg301.idx1 = getelementptr %YYSTYPE* %reg298, long -1, uint 0		; <%IntList*> [#uses=1]
+	%reg301 = load %IntList* %reg301.idx1		; <%IntList> [#uses=1]
+	%cast943 = cast %IntList %reg301 to %List		; <%List> [#uses=1]
+	%reg943 = call %List %newList( sbyte* %reg300, %List %cast943 )		; <%List> [#uses=1]
+	cast %List %reg943 to %IntList		; <%IntList>:3 [#uses=1]
+	store %IntList %3, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb85:		; preds = %bb36
+	%reg304 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%cast9521 = getelementptr %YYSTYPE* %reg304, long -2, uint 0		; <%IntList*> [#uses=1]
+	%reg306 = load %IntList* %cast9521		; <%IntList> [#uses=1]
+	%reg306 = cast %IntList %reg306 to sbyte*		; <sbyte*> [#uses=1]
+	%cast953 = cast %YYSTYPE* %reg304 to int*		; <int*> [#uses=1]
+	%reg307 = load int* %cast953		; <int> [#uses=1]
+	%reg955 = call %Binding %newBinding( sbyte* %reg306, int %reg307 )		; <%Binding> [#uses=1]
+	cast %Binding %reg955 to %IntList		; <%IntList>:4 [#uses=1]
+	store %IntList %4, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb86:		; preds = %bb60
+	store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb87:		; preds = %bb61
+	%reg312 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%cast961 = getelementptr %YYSTYPE* %reg312, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg314 = load %IntList* %cast961		; <%IntList> [#uses=1]
+	%reg314 = cast %IntList %reg314 to sbyte*		; <sbyte*> [#uses=1]
+	%reg315.idx1 = getelementptr %YYSTYPE* %reg312, long -1, uint 0		; <%IntList*> [#uses=1]
+	%reg315 = load %IntList* %reg315.idx1		; <%IntList> [#uses=1]
+	%cast968 = cast %IntList %reg315 to %List		; <%List> [#uses=1]
+	%reg968 = call %List %newList( sbyte* %reg314, %List %cast968 )		; <%List> [#uses=1]
+	cast %List %reg968 to %IntList		; <%IntList>:5 [#uses=1]
+	store %IntList %5, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb88:		; preds = %bb58
+	%reg318 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=4]
+	%cast9791 = getelementptr %YYSTYPE* %reg318, long -6, uint 0		; <%IntList*> [#uses=1]
+	%reg322 = load %IntList* %cast9791		; <%IntList> [#uses=1]
+	%reg322 = cast %IntList %reg322 to sbyte*		; <sbyte*> [#uses=1]
+	%reg323.idx1 = getelementptr %YYSTYPE* %reg318, long -4, uint 0		; <%IntList*> [#uses=1]
+	%reg323 = load %IntList* %reg323.idx1		; <%IntList> [#uses=1]
+	%reg987 = getelementptr %YYSTYPE* %reg318, long -2		; <%YYSTYPE*> [#uses=1]
+	%cast989 = cast %YYSTYPE* %reg987 to int*		; <int*> [#uses=1]
+	%reg324 = load int* %cast989		; <int> [#uses=1]
+	%reg325.idx1 = getelementptr %YYSTYPE* %reg318, long -1, uint 0		; <%IntList*> [#uses=1]
+	%reg325 = load %IntList* %reg325.idx1		; <%IntList> [#uses=1]
+	%cast998 = cast %IntList %reg323 to %PatternAST		; <%PatternAST> [#uses=1]
+	%reg996 = call %RuleAST %newRuleAST( sbyte* %reg322, %PatternAST %cast998, int %reg324, %IntList %reg325 )		; <%RuleAST> [#uses=1]
+	cast %RuleAST %reg996 to %IntList		; <%IntList>:6 [#uses=1]
+	store %IntList %6, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb89:		; preds = %bb63
+	%reg328 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=1]
+	%cast1002 = getelementptr %YYSTYPE* %reg328, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg329 = load %IntList* %cast1002		; <%IntList> [#uses=1]
+	%reg329 = cast %IntList %reg329 to sbyte*		; <sbyte*> [#uses=1]
+	%reg1004 = call %PatternAST %newPatternAST( sbyte* %reg329, %List null )		; <%PatternAST> [#uses=1]
+	cast %PatternAST %reg1004 to %IntList		; <%IntList>:7 [#uses=1]
+	store %IntList %7, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb90:		; preds = %bb64
+	%reg333 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%cast10131 = getelementptr %YYSTYPE* %reg333, long -1, uint 0		; <%IntList*> [#uses=1]
+	%reg335 = load %IntList* %cast10131		; <%IntList> [#uses=1]
+	%reg335 = cast %IntList %reg335 to sbyte*		; <sbyte*> [#uses=1]
+	%reg1015 = call %List %newList( sbyte* %reg335, %List null )		; <%List> [#uses=1]
+	%cast10211 = getelementptr %YYSTYPE* %reg333, long -3, uint 0		; <%IntList*> [#uses=1]
+	%reg338 = load %IntList* %cast10211		; <%IntList> [#uses=1]
+	%reg338 = cast %IntList %reg338 to sbyte*		; <sbyte*> [#uses=1]
+	%reg1023 = call %PatternAST %newPatternAST( sbyte* %reg338, %List %reg1015 )		; <%PatternAST> [#uses=1]
+	cast %PatternAST %reg1023 to %IntList		; <%IntList>:8 [#uses=1]
+	store %IntList %8, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb91:		; preds = %bb56
+	%reg341 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=3]
+	%cast10331 = getelementptr %YYSTYPE* %reg341, long -1, uint 0		; <%IntList*> [#uses=1]
+	%reg344 = load %IntList* %cast10331		; <%IntList> [#uses=1]
+	%reg344 = cast %IntList %reg344 to sbyte*		; <sbyte*> [#uses=1]
+	%reg1035 = call %List %newList( sbyte* %reg344, %List null )		; <%List> [#uses=1]
+	%cast10411 = getelementptr %YYSTYPE* %reg341, long -3, uint 0		; <%IntList*> [#uses=1]
+	%reg347 = load %IntList* %cast10411		; <%IntList> [#uses=1]
+	%reg347 = cast %IntList %reg347 to sbyte*		; <sbyte*> [#uses=1]
+	%reg1043 = call %List %newList( sbyte* %reg347, %List %reg1035 )		; <%List> [#uses=1]
+	%cast10491 = getelementptr %YYSTYPE* %reg341, long -5, uint 0		; <%IntList*> [#uses=1]
+	%reg349 = load %IntList* %cast10491		; <%IntList> [#uses=1]
+	%reg349 = cast %IntList %reg349 to sbyte*		; <sbyte*> [#uses=1]
+	%reg1051 = call %PatternAST %newPatternAST( sbyte* %reg349, %List %reg1043 )		; <%PatternAST> [#uses=1]
+	cast %PatternAST %reg1051 to %IntList		; <%IntList>:9 [#uses=1]
+	store %IntList %9, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb92:		; preds = %bb68
+	store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb93:		; preds = %bb69
+	%reg354 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%reg1059 = getelementptr %YYSTYPE* %reg354, long -2		; <%YYSTYPE*> [#uses=1]
+	%cast1061 = cast %YYSTYPE* %reg1059 to int*		; <int*> [#uses=1]
+	%reg356 = load int* %cast1061		; <int> [#uses=1]
+	%reg357.idx1 = getelementptr %YYSTYPE* %reg354, long -1, uint 0		; <%IntList*> [#uses=1]
+	%reg357 = load %IntList* %reg357.idx1		; <%IntList> [#uses=1]
+	%reg1068 = call %IntList %newIntList( int %reg356, %IntList %reg357 )		; <%IntList> [#uses=1]
+	store %IntList %reg1068, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb94:		; preds = %bb66
+	store %IntList null, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb95:		; preds = %bb71
+	%reg362 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%reg1076 = getelementptr %YYSTYPE* %reg362, long -1		; <%YYSTYPE*> [#uses=1]
+	%cast1078 = cast %YYSTYPE* %reg1076 to int*		; <int*> [#uses=1]
+	%reg364 = load int* %cast1078		; <int> [#uses=1]
+	%reg365.idx = getelementptr %YYSTYPE* %reg362, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg365 = load %IntList* %reg365.idx		; <%IntList> [#uses=1]
+	%reg1081 = call %IntList %newIntList( int %reg364, %IntList %reg365 )		; <%IntList> [#uses=1]
+	store %IntList %reg1081, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)
+	br label %bb97
+
+bb96:		; preds = %bb72
+	%reg368 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%reg1088 = getelementptr %YYSTYPE* %reg368, long -1		; <%YYSTYPE*> [#uses=1]
+	%cast1090 = cast %YYSTYPE* %reg1088 to int*		; <int*> [#uses=1]
+	%reg370 = load int* %cast1090		; <int> [#uses=1]
+	%reg371.idx = getelementptr %YYSTYPE* %reg368, long 0, uint 0		; <%IntList*> [#uses=1]
+	%reg371 = load %IntList* %reg371.idx		; <%IntList> [#uses=1]
+	%reg1093 = call %IntList %newIntList( int %reg370, %IntList %reg371 )		; <%IntList> [#uses=1]
+	store %IntList %reg1093, %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 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 = cast short %reg254 to ulong		; <ulong> [#uses=3]
+	%reg375 = add ulong %cast1097, %cast1097		; <ulong> [#uses=1]
+	%reg377 = load short** %yyssp		; <short*> [#uses=1]
+	%cast379 = cast short* %reg377 to ulong		; <ulong> [#uses=1]
+	%reg381 = sub ulong %cast379, %reg375		; <ulong> [#uses=1]
+	%cast1099 = cast ulong %reg381 to short*		; <short*> [#uses=1]
+	store short* %cast1099, short** %yyssp
+	%reg382 = load short** %yyssp		; <short*> [#uses=3]
+	%reg383 = load short* %reg382		; <short> [#uses=1]
+	%cast1103 = cast short %reg383 to int		; <int> [#uses=3]
+	%reg385 = mul ulong %cast1097, 8		; <ulong> [#uses=1]
+	%reg387 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=1]
+	%cast389 = cast %YYSTYPE* %reg387 to ulong		; <ulong> [#uses=1]
+	%reg391 = sub ulong %cast389, %reg385		; <ulong> [#uses=1]
+	%cast1108 = cast ulong %reg391 to %YYSTYPE*		; <%YYSTYPE*> [#uses=1]
+	store %YYSTYPE* %cast1108, %YYSTYPE** %yyvsp
+	%reg1111 = getelementptr [25 x short]* %yylhs, long 0, long %reg468-idxcast		; <short*> [#uses=1]
+	%reg398 = load short* %reg1111		; <short> [#uses=2]
+	%cast1116 = cast short %reg398 to int		; <int> [#uses=1]
+	%cond1117 = setne int %cast1103, 0		; <bool> [#uses=1]
+	br bool %cond1117, label %bb104, label %bb98
+
+bb98:		; preds = %bb97
+	%cond1119 = setne int %cast1116, 0		; <bool> [#uses=1]
+	br bool %cond1119, label %bb104, label %bb99
+
+bb99:		; preds = %bb98
+	%reg1122 = getelementptr short* %reg382, long 1		; <short*> [#uses=2]
+	store short* %reg1122, short** %yyssp
+	store short 1, short* %reg1122
+	%reg403 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%reg1128 = getelementptr %YYSTYPE* %reg403, long 1		; <%YYSTYPE*> [#uses=1]
+	store %YYSTYPE* %reg1128, %YYSTYPE** %yyvsp
+	%reg406 = load %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)		; <%IntList> [#uses=1]
+	%reg1128.idx1 = getelementptr %YYSTYPE* %reg403, long 1, uint 0		; <%IntList*> [#uses=1]
+	store %IntList %reg406, %IntList* %reg1128.idx1
+	%reg407 = load int* %yychar		; <int> [#uses=1]
+	%cond1135 = setge int %reg407, 0		; <bool> [#uses=1]
+	br bool %cond1135, label %bb102, label %bb100
+
+bb100:		; preds = %bb99
+	%reg1139 = call int %yylex( )		; <int> [#uses=1]
+	store int %reg1139, int* %yychar
+	%reg409 = load int* %yychar		; <int> [#uses=1]
+	%cond1141 = setge int %reg409, 0		; <bool> [#uses=1]
+	br bool %cond1141, label %bb102, label %bb101
+
+bb101:		; preds = %bb100
+	store int 0, int* %yychar
+	br label %bb102
+
+bb102:		; preds = %bb101, %bb100, %bb99
+	%reg411 = load int* %yychar		; <int> [#uses=1]
+	%cond1146 = setne int %reg411, 0		; <bool> [#uses=1]
+	br bool %cond1146, label %bb4, label %UnifiedExitNode
+
+bb104:		; preds = %bb98, %bb97
+	%reg398-idxcast = cast short %reg398 to long		; <long> [#uses=2]
+	%reg1150 = getelementptr [12 x short]* %yygindex, long 0, long %reg398-idxcast		; <short*> [#uses=1]
+	%reg418 = load short* %reg1150		; <short> [#uses=1]
+	%cast1155 = cast short %reg418 to int		; <int> [#uses=2]
+	%cond1156 = seteq int %cast1155, 0		; <bool> [#uses=1]
+	br bool %cond1156, label %bb109, label %bb105
+
+bb105:		; preds = %bb104
+	%reg473 = add int %cast1155, %cast1103		; <int> [#uses=3]
+	%cond1158 = setlt int %reg473, 0		; <bool> [#uses=1]
+	br bool %cond1158, label %bb109, label %bb106
+
+bb106:		; preds = %bb105
+	%cond1161 = setgt int %reg473, 262		; <bool> [#uses=1]
+	br bool %cond1161, label %bb109, label %bb107
+
+bb107:		; preds = %bb106
+	%reg473-idxcast = cast int %reg473 to long		; <long> [#uses=2]
+	%reg1166 = getelementptr [263 x short]* %yycheck, long 0, long %reg473-idxcast		; <short*> [#uses=1]
+	%reg428 = load short* %reg1166		; <short> [#uses=1]
+	%cast1171 = cast short %reg428 to int		; <int> [#uses=1]
+	%cond1172 = setne int %cast1171, %cast1103		; <bool> [#uses=1]
+	br bool %cond1172, label %bb109, label %bb108
+
+bb108:		; preds = %bb107
+	%reg1175 = getelementptr [263 x short]* %yytable, long 0, long %reg473-idxcast		; <short*> [#uses=1]
+	%reg435 = load short* %reg1175		; <short> [#uses=1]
+	%cast1180 = cast short %reg435 to uint		; <uint> [#uses=1]
+	br label %bb110
+
+bb109:		; preds = %bb107, %bb106, %bb105, %bb104
+	%reg1183 = getelementptr [12 x short]* %yydgoto, long 0, long %reg398-idxcast		; <short*> [#uses=1]
+	%reg442 = load short* %reg1183		; <short> [#uses=1]
+	%cast1188 = cast short %reg442 to uint		; <uint> [#uses=1]
+	br label %bb110
+
+bb110:		; preds = %bb109, %bb108
+	%reg476 = phi uint [ %cast1188, %bb109 ], [ %cast1180, %bb108 ]		; <uint> [#uses=2]
+	%cast1189 = cast short* %reg382 to sbyte*		; <sbyte*> [#uses=1]
+	%reg444 = load short** %yysslim		; <short*> [#uses=1]
+	%cast1190 = cast short* %reg444 to sbyte*		; <sbyte*> [#uses=1]
+	%cond1191 = setlt sbyte* %cast1189, %cast1190		; <bool> [#uses=1]
+	br bool %cond1191, label %bb112, label %bb111
+
+bb111:		; preds = %bb110
+	%reg1193 = call int %yygrowstack( )		; <int> [#uses=1]
+	%cond1193 = setne int %reg1193, 0		; <bool> [#uses=1]
+	br bool %cond1193, label %bb113, label %bb112
+
+bb112:		; preds = %bb111, %bb110
+	%reg446 = load short** %yyssp		; <short*> [#uses=1]
+	%reg1196 = getelementptr short* %reg446, long 1		; <short*> [#uses=2]
+	store short* %reg1196, short** %yyssp
+	%cast1357 = cast uint %reg476 to short		; <short> [#uses=1]
+	store short %cast1357, short* %reg1196
+	%reg449 = load %YYSTYPE** %yyvsp		; <%YYSTYPE*> [#uses=2]
+	%reg1202 = getelementptr %YYSTYPE* %reg449, long 1		; <%YYSTYPE*> [#uses=1]
+	store %YYSTYPE* %reg1202, %YYSTYPE** %yyvsp
+	%reg452 = load %IntList* getelementptr (%YYSTYPE* %yyval, long 0, uint 0)		; <%IntList> [#uses=1]
+	%reg1202.idx1 = getelementptr %YYSTYPE* %reg449, long 1, uint 0		; <%IntList*> [#uses=1]
+	store %IntList %reg452, %IntList* %reg1202.idx1
+	br label %bb4
+
+bb113:		; preds = %bb111, %bb30, %bb13, %bb2
+	call void %yyerror( sbyte* getelementptr ([20 x sbyte]* %.LC1, long 0, long 0) )
+	br label %UnifiedExitNode
+
+UnifiedExitNode:		; preds = %bb113, %bb102, %bb34, %bb32
+	%UnifiedRetVal = phi int [ 1, %bb113 ], [ 1, %bb34 ], [ 1, %bb32 ], [ 0, %bb102 ]		; <int> [#uses=1]
+	ret int %UnifiedRetVal
+}
+
+declare %List %newList(sbyte*, %List)
+
+declare %IntList %newIntList(int, %IntList)
+
+declare void %doStart(sbyte*)
+
+declare void %yyerror(sbyte*)
+
+declare void %doSpec(%List, %List)
+
+declare %Arity %newArity(int, %List)
+
+declare %Binding %newBinding(sbyte*, int)
+
+declare %PatternAST %newPatternAST(sbyte*, %List)
+
+declare %RuleAST %newRuleAST(sbyte*, %PatternAST, int, %IntList)
+
+declare void %yyfinished()
+
+declare int %yylex()
+
+declare void %doGram(%List)
+
+declare int %yygrowstack()
diff --git a/test/CodeGen/Generic/ConstantExprLowering.llx b/test/CodeGen/Generic/ConstantExprLowering.llx
new file mode 100644
index 0000000..afb6530
--- /dev/null
+++ b/test/CodeGen/Generic/ConstantExprLowering.llx
@@ -0,0 +1,26 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%.str_1 = internal constant [16 x sbyte] c"%d %d %d %d %d\0A\00"
+
+%XA = external global int
+%XB = external global int
+
+implementation   ; Functions:
+
+declare int %printf(sbyte*, ...)
+
+void %test(int %A, int %B, int %C, int %D) {
+entry:
+        %t1 = setlt int %A, 0
+	br bool %t1, label %less, label %not_less
+less:    
+        br label %not_less
+not_less:	
+	%t2 = phi int [ sub ( int cast (int* %XA to int), 
+			       int cast (int* %XB to int) ), %less], 
+                      [ sub ( int cast (int* %XA to int), 
+			       int cast (int* %XB to int) ), %entry]
+	%tmp.39 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([16 x sbyte]*  %.str_1, long 0, long 0), int %t2 )
+	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 0000000..11294e1
--- /dev/null
+++ b/test/CodeGen/Generic/GC/alloc_loop.ll
@@ -0,0 +1,54 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+implementation
+
+declare sbyte* %llvm_gc_allocate(uint)
+declare void %llvm_gc_initialize(uint)
+
+declare void %llvm.gcroot(sbyte**, sbyte*)
+declare void %llvm.gcwrite(sbyte*, sbyte*, sbyte**)
+
+int %main() {
+entry:
+	%A = alloca sbyte*
+	%B = alloca sbyte**
+
+	call void %llvm_gc_initialize(uint 1048576)  ; Start with 1MB heap
+
+        ;; void *A;
+	call void %llvm.gcroot(sbyte** %A, sbyte* null)
+
+        ;; A = gcalloc(10);
+	%Aptr = call sbyte* %llvm_gc_allocate(uint 10)
+	store sbyte* %Aptr, sbyte** %A
+
+        ;; void **B;
+	%tmp.1 = cast sbyte*** %B to sbyte **
+	call void %llvm.gcroot(sbyte** %tmp.1, sbyte* null)
+
+	;; B = gcalloc(4);
+	%B = call sbyte* %llvm_gc_allocate(uint 8)
+	%tmp.2 = cast sbyte* %B to sbyte**
+	store sbyte** %tmp.2, sbyte*** %B
+
+	;; *B = A;
+	%B.1 = load sbyte*** %B
+	%A.1 = load sbyte** %A
+	call void %llvm.gcwrite(sbyte* %A.1, sbyte* %B, sbyte** %B.1)
+	
+	br label %AllocLoop
+
+AllocLoop:
+	%i = phi uint [ 0, %entry ], [ %indvar.next, %AllocLoop ]
+        ;; Allocated mem: allocated memory is immediately dead.
+	call sbyte* %llvm_gc_allocate(uint 100)
+	
+	%indvar.next = add uint %i, 1
+	%exitcond = seteq uint %indvar.next, 10000000
+	br bool %exitcond, label %Exit, label %AllocLoop
+
+Exit:
+	ret int 0
+}
+
+declare void %__main()
diff --git a/test/CodeGen/Generic/GC/dg.exp b/test/CodeGen/Generic/GC/dg.exp
new file mode 100644
index 0000000..879685c
--- /dev/null
+++ b/test/CodeGen/Generic/GC/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]]
diff --git a/test/CodeGen/Generic/Makefile b/test/CodeGen/Generic/Makefile
new file mode 100644
index 0000000..d228f69
--- /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 0000000..37bfffa
--- /dev/null
+++ b/test/CodeGen/Generic/SwitchLowering.ll
@@ -0,0 +1,27 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | grep cmp | wc -l | grep 1
+; PR964
+
+sbyte* %FindChar(sbyte* %CurPtr) {
+entry:
+	br label %bb
+
+bb:		; preds = %bb, %entry
+	%indvar = phi uint [ 0, %entry ], [ %indvar.next, %bb ]		; <uint> [#uses=3]
+	%CurPtr_addr.0.rec = cast uint %indvar to int		; <int> [#uses=1]
+	%CurPtr_addr.0 = getelementptr sbyte* %CurPtr, uint %indvar		; <sbyte*> [#uses=1]
+	%tmp = load sbyte* %CurPtr_addr.0		; <sbyte> [#uses=2]
+	%tmp2.rec = add int %CurPtr_addr.0.rec, 1		; <int> [#uses=1]
+	%tmp2 = getelementptr sbyte* %CurPtr, int %tmp2.rec		; <sbyte*> [#uses=1]
+	%indvar.next = add uint %indvar, 1		; <uint> [#uses=1]
+	switch sbyte %tmp, label %bb [
+		 sbyte 0, label %bb7
+		 sbyte 120, label %bb7
+	]
+
+bb7:		; preds = %bb, %bb
+	%tmp = cast sbyte %tmp to ubyte		; <ubyte> [#uses=1]
+	tail call void %foo( ubyte %tmp )
+	ret sbyte* %tmp2
+}
+
+declare void %foo(ubyte)
diff --git a/test/CodeGen/Generic/addc-fold2.ll b/test/CodeGen/Generic/addc-fold2.ll
new file mode 100644
index 0000000..8f3cdd07
--- /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/badCallArgLRLLVM.ll b/test/CodeGen/Generic/badCallArgLRLLVM.ll
new file mode 100644
index 0000000..734d2b2
--- /dev/null
+++ b/test/CodeGen/Generic/badCallArgLRLLVM.ll
@@ -0,0 +1,32 @@
+; RUN: llvm-upgrade < %s | llvm-as | 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 
+;
+implementation   ; Functions:
+
+declare int %getInt(int)
+
+int %main(int %argc, sbyte** %argv) {
+bb0:					;[#uses=0]
+        br label %bb2
+
+bb1:
+	%reg222 = call int (int)* %getInt(int %reg218) ;; ARG #1 HAS NO LR
+	%reg110 = add int %reg222, 1
+	%b = setle int %reg110, 0
+	br bool %b, label %bb2, label %bb3
+
+bb2:
+	%reg218 = call int (int)* %getInt(int %argc)   ;; THIS CALL NOT YET SEEN
+	br label %bb1
+
+bb3:
+	ret int %reg110
+}
+
diff --git a/test/CodeGen/Generic/badFoldGEP.ll b/test/CodeGen/Generic/badFoldGEP.ll
new file mode 100644
index 0000000..63acd46
--- /dev/null
+++ b/test/CodeGen/Generic/badFoldGEP.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-upgrade %s | llvm-as | 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 { sbyte*, int, int*, int, int, int*, %Domain* }
+%domain_array = uninitialized global [497 x %Domain] 
+
+implementation; Functions:
+
+declare void %opaque([497 x %Domain]*)
+
+int %main(int %argc, sbyte** %argv) {
+bb0:					;[#uses=0]
+	call void %opaque([497 x %Domain]* %domain_array)
+	%cann-indvar-idxcast = cast int %argc to long
+        %reg841 = getelementptr [497 x %Domain]* %domain_array, long 0, long %cann-indvar-idxcast, uint 3
+        %reg846 = getelementptr int* %reg841, long 1
+        %reg820 = load int* %reg846
+	ret int %reg820
+}
diff --git a/test/CodeGen/Generic/badarg6.ll b/test/CodeGen/Generic/badarg6.ll
new file mode 100644
index 0000000..542e6b3
--- /dev/null
+++ b/test/CodeGen/Generic/badarg6.ll
@@ -0,0 +1,38 @@
+; RUN: llvm-upgrade < %s | llvm-as | 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 sbyte] c"\09\09M = %g, I = %g, V = %g\0A\09\09O = %g, E = %g\0A\0A\00"           ; <[44 x sbyte]*>
+
+implementation;
+
+declare int %printf(sbyte*, ...)
+
+declare double %opaque(double)
+
+int %main(int %argc, sbyte** %argv) {
+
+bb25:
+	%b = setle int %argc, 2
+	br bool %b, label %bb42, label %bb43
+
+bb42:
+	%reg315 = call double (double)* %opaque(double 3.0)
+	%reg316 = call double (double)* %opaque(double 3.1)
+	%reg317 = call double (double)* %opaque(double 3.2)
+	%reg318 = call double (double)* %opaque(double 3.3)
+	%reg319 = call double (double)* %opaque(double 3.4)
+	br label %bb43
+
+bb43:
+        %reg321 = phi double [ 2.000000e-01, %bb25 ], [ %reg315, %bb42 ]        
+        %reg322 = phi double [ 6.000000e+00, %bb25 ], [ %reg316, %bb42 ]        
+        %reg323 = phi double [ 0xBFF0000000000000, %bb25 ], [ %reg317, %bb42 ]  
+        %reg324 = phi double [ 0xBFF0000000000000, %bb25 ], [ %reg318, %bb42 ]  
+        %reg325 = phi double [ 1.000000e+00, %bb25 ], [ %reg319, %bb42 ]        
+
+	%reg609 = call int (sbyte*, ...)* %printf( sbyte* getelementptr ([44 x sbyte]* %.LC12, long 0, long 0), double %reg325, double %reg324, double %reg323, double %reg322, double %reg321 )
+
+	ret int 0
+}
diff --git a/test/CodeGen/Generic/badlive.ll b/test/CodeGen/Generic/badlive.ll
new file mode 100644
index 0000000..8c08153
--- /dev/null
+++ b/test/CodeGen/Generic/badlive.ll
@@ -0,0 +1,30 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+implementation
+
+int "main"()
+begin
+bb0:
+	%reg109 = malloc int, uint 100
+	br label %bb2
+
+bb2:
+	%cann-indvar1 = phi int [ 0, %bb0 ], [ %add1-indvar1, %bb2 ]
+	%reg127 = mul int %cann-indvar1, 2
+	%add1-indvar1 = add int %cann-indvar1, 1
+	store int 999, int * %reg109
+	%cond1015 = setle int 1, 99
+	%reg128 = add int %reg127, 2
+	br bool %cond1015, label %bb2, label %bb4
+
+bb4:					;[#uses=3]
+	%cann-indvar = phi uint [ %add1-indvar, %bb4 ], [ 0, %bb2 ]
+	%add1-indvar = add uint %cann-indvar, 1		; <uint> [#uses=1]
+	store int 333, int * %reg109
+	%reg131 = add uint %add1-indvar, 3		; <int> [#uses=1]
+	%cond1017 = setle uint %reg131, 99		; <bool> [#uses=1]
+	br bool %cond1017, label %bb4, label %bb5
+
+bb5:
+	ret int 0
+end
diff --git a/test/CodeGen/Generic/bit-intrinsics.ll b/test/CodeGen/Generic/bit-intrinsics.ll
new file mode 100644
index 0000000..427387f
--- /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(i32 %x, i32 %rep, i32 %hi, i32 %lo)
+declare i16 @llvm.part.set.i16.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(i32 %A, i32 27, i32 8, i32 0)
+  %b = call i16 @llvm.part.set.i16.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(i32 %x, i32 %hi, i32 %lo)
+declare i16 @llvm.part.select.i16.i16(i16 %x, i32 %hi, i32 %lo)
+define i32 @test_part_select(i32 %A, i16 %B) {
+  %a = call i32 @llvm.part.select.i32.i32(i32 %A, i32 8, i32 0)
+  %b = call i16 @llvm.part.select.i16.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 0000000..ad9bc8e
--- /dev/null
+++ b/test/CodeGen/Generic/bool-to-double.ll
@@ -0,0 +1,5 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+double %test(bool %X) {
+        %Y = cast bool %X to double
+        ret double %Y
+}
diff --git a/test/CodeGen/Generic/call-ret0.ll b/test/CodeGen/Generic/call-ret0.ll
new file mode 100644
index 0000000..44c30d3
--- /dev/null
+++ b/test/CodeGen/Generic/call-ret0.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+int %foo(int %x) {
+  ret int %x
+}
+
+int %main() {  
+  %r = call int %foo(int 0) 
+  ret int %r
+}
diff --git a/test/CodeGen/Generic/call-ret42.ll b/test/CodeGen/Generic/call-ret42.ll
new file mode 100644
index 0000000..b0a480f
--- /dev/null
+++ b/test/CodeGen/Generic/call-ret42.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+int %foo(int %x) {
+  ret int 42
+}
+
+int %main() {  
+  %r = call int %foo(int 15) 
+  ret int %r
+}
diff --git a/test/CodeGen/Generic/call-void.ll b/test/CodeGen/Generic/call-void.ll
new file mode 100644
index 0000000..64e6336
--- /dev/null
+++ b/test/CodeGen/Generic/call-void.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+void %foo() {
+  ret void
+}
+
+int %main() {  
+  call void ()* %foo() 
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/call2-ret0.ll b/test/CodeGen/Generic/call2-ret0.ll
new file mode 100644
index 0000000..55be5c6
--- /dev/null
+++ b/test/CodeGen/Generic/call2-ret0.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+int %bar(int %x) {
+  ret int 0
+}
+
+int %foo(int %x) {
+  %q = call int %bar(int 1)
+  ret int %q
+}
+
+int %main() {  
+  %r = call int %foo(int 2) 
+  ret int %r
+}
diff --git a/test/CodeGen/Generic/cast-fp.ll b/test/CodeGen/Generic/cast-fp.ll
new file mode 100644
index 0000000..8359329
--- /dev/null
+++ b/test/CodeGen/Generic/cast-fp.ll
@@ -0,0 +1,49 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%a_fstr = internal constant [8 x sbyte] c"a = %f\0A\00"
+%a_lstr = internal constant [10 x sbyte] c"a = %lld\0A\00"
+%a_dstr = internal constant [8 x sbyte] c"a = %d\0A\00"
+
+%b_dstr = internal constant [8 x sbyte] c"b = %d\0A\00"
+%b_fstr = internal constant [8 x sbyte] c"b = %f\0A\00"
+
+declare int %printf(sbyte*, ...)
+%A = global double 2.0
+%B = global int 2
+
+int %main() {  
+  ;; A
+  %a = load double* %A
+  %a_fs = getelementptr [8 x sbyte]* %a_fstr, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %a_fs, double %a)
+
+  ;; cast double to long
+  %a_d2l = cast double %a to long
+  %a_ls = getelementptr [10 x sbyte]* %a_lstr, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %a_ls, long %a_d2l)
+
+  ;; cast double to int
+  %a_d2i = cast double %a to int
+  %a_ds = getelementptr [8 x sbyte]* %a_dstr, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %a_ds, int %a_d2i)
+
+  ;; cast double to sbyte
+  %a_d2sb = cast double %a to sbyte
+  call int (sbyte*, ...)* %printf(sbyte* %a_ds, sbyte %a_d2sb)
+
+  ;; cast int to sbyte
+  %a_d2i2sb = cast int %a_d2i to sbyte
+  call int (sbyte*, ...)* %printf(sbyte* %a_ds, sbyte %a_d2i2sb)
+
+  ;; B
+  %b = load int* %B
+  %b_ds = getelementptr [8 x sbyte]* %b_dstr, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %b_ds, int %b)
+
+  ;; cast int to double
+  %b_i2d = cast int %b to double
+  %b_fs = getelementptr [8 x sbyte]* %b_fstr, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %b_fs, double %b_i2d)
+
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/constindices.ll b/test/CodeGen/Generic/constindices.ll
new file mode 100644
index 0000000..b176144
--- /dev/null
+++ b/test/CodeGen/Generic/constindices.ll
@@ -0,0 +1,56 @@
+; RUN: llvm-upgrade %s | llvm-as | llc
+
+; Test that a sequence of constant indices are folded correctly
+; into the equivalent offset at compile-time.
+
+%MixedA = type { float, [15 x int], sbyte, float }
+
+%MixedB = type { float, %MixedA, float }
+
+%fmtArg = internal global [44 x sbyte] c"sqrt(2) = %g\0Aexp(1) = %g\0Api = %g\0Afive = %g\0A\00"; <[44 x sbyte]*> [#uses=1]
+
+implementation
+
+declare int "printf"(sbyte*, ...)
+
+int "main"()
+begin
+	%ScalarA = alloca %MixedA
+	%ScalarB = alloca %MixedB
+	%ArrayA  = alloca %MixedA, uint 4
+	%ArrayB  = alloca %MixedB, uint 3
+
+	%I1 = getelementptr %MixedA* %ScalarA, long 0, uint 0	
+	store float 1.4142, float *%I1
+	%I2 = getelementptr %MixedB* %ScalarB, long 0, uint 1, uint 0 
+	store float 2.7183, float *%I2
+	
+  	%fptrA = getelementptr %MixedA* %ArrayA, long 1, uint 0 
+	%fptrB = getelementptr %MixedB* %ArrayB, long 2, uint 1, uint 0 
+	
+	store float 3.1415, float* %fptrA
+	store float 5.0,    float* %fptrB
+	
+	;; Test that a sequence of GEPs with constant indices are folded right
+	%fptrA1 = getelementptr %MixedA* %ArrayA, long 3	  ; &ArrayA[3]
+	%fptrA2 = getelementptr %MixedA* %fptrA1, long 0, uint 1 ; &(*fptrA1).1
+	%fptrA3 = getelementptr [15 x int]* %fptrA2, long 0, long 8 ; &(*fptrA2)[8]
+	store int 5, int* %fptrA3	; ArrayA[3].1[8] = 5
+
+	%sqrtTwo = load float *%I1
+	%exp     = load float *%I2
+	%I3 = getelementptr %MixedA* %ArrayA, long 1, uint 0 
+	%pi      = load float* %I3
+	%I4 = getelementptr %MixedB* %ArrayB, long 2, uint 1, uint 0  
+	%five    = load float* %I4
+		 
+	%dsqrtTwo = cast float %sqrtTwo to double
+	%dexp     = cast float %exp to double
+	%dpi      = cast float %pi to double
+	%dfive    = cast float %five to double
+		  
+	%castFmt = getelementptr [44 x sbyte]* %fmtArg, long 0, long 0
+	call int (sbyte*, ...)* %printf(sbyte* %castFmt, double %dsqrtTwo, double %dexp, double %dpi, double %dfive)
+	
+	ret int 0
+end
diff --git a/test/CodeGen/Generic/debug-info.ll b/test/CodeGen/Generic/debug-info.ll
new file mode 100644
index 0000000..49f693a
--- /dev/null
+++ b/test/CodeGen/Generic/debug-info.ll
@@ -0,0 +1,19 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+%lldb.compile_unit = type { uint, ushort, ushort, sbyte*, sbyte*, sbyte*, {  }* }
+%d.compile_unit7 = external global %lldb.compile_unit		; <%lldb.compile_unit*> [#uses=1]
+
+implementation   ; Functions:
+
+declare void %llvm.dbg.stoppoint(uint, uint, %lldb.compile_unit*)
+
+void %rb_raise(int, ...) {
+entry:
+	br bool false, label %strlen.exit, label %no_exit.i
+
+no_exit.i:		; preds = %entry
+	ret void
+
+strlen.exit:		; preds = %entry
+	call void %llvm.dbg.stoppoint(uint 4358, uint 0, %lldb.compile_unit* %d.compile_unit7 )		; <{  }*> [#uses=0]
+	unreachable
+}
diff --git a/test/CodeGen/Generic/dg.exp b/test/CodeGen/Generic/dg.exp
new file mode 100644
index 0000000..879685c
--- /dev/null
+++ b/test/CodeGen/Generic/dg.exp
@@ -0,0 +1,3 @@
+load_lib llvm.exp
+
+RunLLVMTests [lsort [glob -nocomplain $srcdir/$subdir/*.{ll,llx,c,cpp,tr}]]
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 0000000..7452c7e
--- /dev/null
+++ b/test/CodeGen/Generic/div-neg-power-2.ll
@@ -0,0 +1,6 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+int %test(int %X) {
+  %Y = div int %X, -2
+  ret int %Y
+}
diff --git a/test/CodeGen/Generic/fneg-fabs.ll b/test/CodeGen/Generic/fneg-fabs.ll
new file mode 100644
index 0000000..3dc4588
--- /dev/null
+++ b/test/CodeGen/Generic/fneg-fabs.ll
@@ -0,0 +1,26 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+double %fneg(double %X) {
+	%Y = sub double -0.0, %X
+	ret double %Y
+}
+
+float %fnegf(float %X) {
+	%Y = sub float -0.0, %X
+	ret float %Y
+}
+
+declare double %fabs(double)
+declare float %fabsf(float)
+
+
+double %fabstest(double %X) {
+	%Y = call double %fabs(double %X)
+	ret double %Y
+}
+
+float %fabsftest(float %X) {
+	%Y = call float %fabsf(float %X)
+	ret float %Y
+}
+
diff --git a/test/CodeGen/Generic/fp_to_int.ll b/test/CodeGen/Generic/fp_to_int.ll
new file mode 100644
index 0000000..a99c5b5
--- /dev/null
+++ b/test/CodeGen/Generic/fp_to_int.ll
@@ -0,0 +1,67 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+sbyte %test1(double %X) {
+	%tmp.1 = cast double %X to sbyte
+	ret sbyte %tmp.1
+}
+short %test2(double %X) {
+	%tmp.1 = cast double %X to short
+	ret short %tmp.1
+}
+int %test3(double %X) {
+	%tmp.1 = cast double %X to int
+	ret int %tmp.1
+}
+long %test4(double %X) {
+	%tmp.1 = cast double %X to long
+	ret long %tmp.1
+}
+ubyte %test1u(double %X) {
+	%tmp.1 = cast double %X to ubyte
+	ret ubyte %tmp.1
+}
+ushort %test2u(double %X) {
+	%tmp.1 = cast double %X to ushort
+	ret ushort %tmp.1
+}
+uint %test3u(double %X) {
+	%tmp.1 = cast double %X to uint
+	ret uint %tmp.1
+}
+ulong %test4u(double %X) {
+	%tmp.1 = cast double %X to ulong
+	ret ulong %tmp.1
+}
+
+sbyte %test1f(float %X) {
+	%tmp.1 = cast float %X to sbyte
+	ret sbyte %tmp.1
+}
+short %test2f(float %X) {
+	%tmp.1 = cast float %X to short
+	ret short %tmp.1
+}
+int %test3f(float %X) {
+	%tmp.1 = cast float %X to int
+	ret int %tmp.1
+}
+long %test4f(float %X) {
+	%tmp.1 = cast float %X to long
+	ret long %tmp.1
+}
+ubyte %test1uf(float %X) {
+	%tmp.1 = cast float %X to ubyte
+	ret ubyte %tmp.1
+}
+ushort %test2uf(float %X) {
+	%tmp.1 = cast float %X to ushort
+	ret ushort %tmp.1
+}
+uint %test3uf(float %X) {
+	%tmp.1 = cast float %X to uint
+	ret uint %tmp.1
+}
+ulong %test4uf(float %X) {
+	%tmp.1 = cast float %X to ulong
+	ret ulong %tmp.1
+}
diff --git a/test/CodeGen/Generic/fpowi-promote.ll b/test/CodeGen/Generic/fpowi-promote.ll
new file mode 100644
index 0000000..55c2d2a
--- /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 0000000..ec085ec
--- /dev/null
+++ b/test/CodeGen/Generic/fwdtwice.ll
@@ -0,0 +1,28 @@
+; RUN: llvm-upgrade %s | llvm-as | 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 teh 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.
+
+
+int %SumArray(int %Num) {
+        %Num = alloca int
+        br label %Top
+Top:
+        store int %Num, int * %Num
+        %reg108 = load int * %Num
+        %cast1006 = cast int %reg108 to uint
+        %cond1001 = setle uint %cast1006, 0
+	br bool %cond1001, label %bb6, label %Top
+
+bb6:
+	ret int 42
+}
diff --git a/test/CodeGen/Generic/global-ret0.ll b/test/CodeGen/Generic/global-ret0.ll
new file mode 100644
index 0000000..dfe6aef
--- /dev/null
+++ b/test/CodeGen/Generic/global-ret0.ll
@@ -0,0 +1,8 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%g = global int 0
+
+int %main() {  
+  %h = load int* %g
+  ret int %h
+}
diff --git a/test/CodeGen/Generic/hello.ll b/test/CodeGen/Generic/hello.ll
new file mode 100644
index 0000000..d9e9d58
--- /dev/null
+++ b/test/CodeGen/Generic/hello.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%.str_1 = internal constant [7 x sbyte] c"hello\0A\00"
+
+declare int %printf(sbyte*, ...)
+
+int %main() {  
+  %s = getelementptr [7 x sbyte]* %.str_1, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %s)
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/i128-addsub.ll b/test/CodeGen/Generic/i128-addsub.ll
new file mode 100644
index 0000000..10f0acc
--- /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 0000000..9a67084
--- /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/intrinsics.ll b/test/CodeGen/Generic/intrinsics.ll
new file mode 100644
index 0000000..eb3148a
--- /dev/null
+++ b/test/CodeGen/Generic/intrinsics.ll
@@ -0,0 +1,31 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+;; SQRT
+declare float %llvm.sqrt.f32(float)
+declare double %llvm.sqrt.f64(double)
+double %test_sqrt(float %F) {
+	%G = call float %llvm.sqrt.f32(float %F)
+	%H = cast float %G to double
+	%I = call double %llvm.sqrt.f64(double %H)
+	ret double %I
+}
+
+; SIN
+declare float %sinf(float)
+declare double %sin(double)
+double %test_sin(float %F) {
+	%G = call float %sinf(float %F)
+	%H = cast float %G to double
+	%I = call double %sin(double %H)
+	ret double %I
+}
+
+; COS
+declare float %cosf(float)
+declare double %cos(double)
+double %test_cos(float %F) {
+	%G = call float %cosf(float %F)
+	%H = cast float %G to double
+	%I = call double %cos(double %H)
+	ret double %I
+}
diff --git a/test/CodeGen/Generic/isunord.ll b/test/CodeGen/Generic/isunord.ll
new file mode 100644
index 0000000..1495bd0
--- /dev/null
+++ b/test/CodeGen/Generic/isunord.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+; XFAIL: ia64
+
+
+declare bool %llvm.isunordered.f64(double, double)
+
+bool %test(double %X, double %Y) {
+  %tmp27 = call bool %llvm.isunordered.f64( double %X, double %Y)
+  ret bool %tmp27
+}
diff --git a/test/CodeGen/Generic/llvm-ct-intrinsics.ll b/test/CodeGen/Generic/llvm-ct-intrinsics.ll
new file mode 100644
index 0000000..014d261
--- /dev/null
+++ b/test/CodeGen/Generic/llvm-ct-intrinsics.ll
@@ -0,0 +1,59 @@
+; Make sure this testcase is supported by all code generators
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+declare ulong %llvm.ctpop.i64(ulong)
+declare uint %llvm.ctpop.i32(uint)
+declare ushort %llvm.ctpop.i16(ushort)
+declare ubyte %llvm.ctpop.i8(ubyte)
+
+void %ctpoptest(ubyte %A, ushort %B, uint %C, ulong %D, 
+                ubyte *%AP, ushort* %BP, uint* %CP, ulong* %DP) {
+	%a = call ubyte %llvm.ctpop.i8(ubyte %A)
+	%b = call ushort %llvm.ctpop.i16(ushort %B)
+	%c = call uint %llvm.ctpop.i32(uint %C)
+	%d = call ulong %llvm.ctpop.i64(ulong %D)
+
+	store ubyte %a, ubyte* %AP
+	store ushort %b, ushort* %BP
+	store uint   %c, uint* %CP
+	store ulong  %d, ulong* %DP
+	ret void
+}
+
+declare ulong %llvm.ctlz.i64(ulong)
+declare uint %llvm.ctlz.i32(uint)
+declare ushort %llvm.ctlz.i16(ushort)
+declare ubyte %llvm.ctlz.i8(ubyte)
+
+void %ctlztest(ubyte %A, ushort %B, uint %C, ulong %D, 
+               ubyte *%AP, ushort* %BP, uint* %CP, ulong* %DP) {
+	%a = call ubyte %llvm.ctlz.i8(ubyte %A)
+	%b = call ushort %llvm.ctlz.i16(ushort %B)
+	%c = call uint %llvm.ctlz.i32(uint %C)
+	%d = call ulong %llvm.ctlz.i64(ulong %D)
+
+	store ubyte %a, ubyte* %AP
+	store ushort %b, ushort* %BP
+	store uint   %c, uint* %CP
+	store ulong  %d, ulong* %DP
+	ret void
+}
+
+declare ulong %llvm.cttz.i64(ulong)
+declare uint %llvm.cttz.i32(uint)
+declare ushort %llvm.cttz.i16(ushort)
+declare ubyte %llvm.cttz.i8(ubyte)
+
+void %cttztest(ubyte %A, ushort %B, uint %C, ulong %D, 
+               ubyte *%AP, ushort* %BP, uint* %CP, ulong* %DP) {
+	%a = call ubyte %llvm.cttz.i8(ubyte %A)
+	%b = call ushort %llvm.cttz.i16(ushort %B)
+	%c = call uint %llvm.cttz.i32(uint %C)
+	%d = call ulong %llvm.cttz.i64(ulong %D)
+
+	store ubyte %a, ubyte* %AP
+	store ushort %b, ushort* %BP
+	store uint   %c, uint* %CP
+	store ulong  %d, ulong* %DP
+	ret void
+}
diff --git a/test/CodeGen/Generic/negintconst.ll b/test/CodeGen/Generic/negintconst.ll
new file mode 100644
index 0000000..020b6bb
--- /dev/null
+++ b/test/CodeGen/Generic/negintconst.ll
@@ -0,0 +1,51 @@
+; RUN: llvm-upgrade %s | llvm-as | 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 sbyte] c"ioff = %u\09fval = 0x%p\09&fval[2] = 0x%p\0A\00"; <[39 x sbyte]*> [#uses=1]
+
+implementation
+
+declare int "printf"(sbyte*, ...)
+
+int "main"()
+begin
+	%fval   = alloca %Results, uint 4
+	%i      = add uint 1, 0					; i = 1
+	%iscale = mul uint %i, 4294967295			; i*-1 = -1
+	%ioff   = add uint %iscale, 3				; 3+(-i) = 2
+	%ioff   = cast uint %ioff to long
+	%fptr   = getelementptr %Results* %fval, long %ioff	; &fval[2]
+	%castFmt = getelementptr [39 x sbyte]* %fmtArg, long 0, long 0
+	call int (sbyte*, ...)* %printf(sbyte* %castFmt, uint %ioff, %Results* %fval, %Results* %fptr)
+	ret int 0
+end
diff --git a/test/CodeGen/Generic/nested-select.ll b/test/CodeGen/Generic/nested-select.ll
new file mode 100644
index 0000000..192d29f
--- /dev/null
+++ b/test/CodeGen/Generic/nested-select.ll
@@ -0,0 +1,20 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc -o /dev/null -f
+
+; Test that select of a select works
+
+%typedef.tree = type opaque
+
+implementation
+
+int %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 = cast bool false to int            ; <int> [#uses=1]
+        %tmp.55 = setge double 0.000000e+00, 1.000000e+00               ; <bool> [#uses=1]
+        %tmp.66 = div double 0.000000e+00, 0.000000e+00         ; <double> [#uses=1]
+	br label %N
+N:
+        %result.1.1 = select bool %tmp.55, int 0, int %result.1.0               ; <int> [#uses=1]
+        %tmp.75 = setge double %tmp.66, 1.000000e+00            ; <bool> [#uses=1]
+        %retval1 = select bool %tmp.75, int 0, int %result.1.1          ; <int> [#uses=1]
+        ret int %retval1
+}
+
diff --git a/test/CodeGen/Generic/phi-immediate-factoring.ll b/test/CodeGen/Generic/phi-immediate-factoring.ll
new file mode 100644
index 0000000..cec1b43
--- /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} | wc -l | grep 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/print-add.ll b/test/CodeGen/Generic/print-add.ll
new file mode 100644
index 0000000..ef224a1
--- /dev/null
+++ b/test/CodeGen/Generic/print-add.ll
@@ -0,0 +1,18 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%.str_1 = internal constant [4 x sbyte] c"%d\0A\00"
+
+declare int %printf(sbyte*, ...)
+
+int %main() {  
+  %f = getelementptr [4 x sbyte]* %.str_1, long 0, long 0
+  %d = add int 1, 0
+  call int (sbyte*, ...)* %printf(sbyte* %f, int %d)
+  %e = add int 38, 2
+  call int (sbyte*, ...)* %printf(sbyte* %f, int %e)
+  %g = add int %d, %d
+  %h = add int %e, %g
+  call int (sbyte*, ...)* %printf(sbyte* %f, int %h)
+  ret int 0
+}
+
diff --git a/test/CodeGen/Generic/print-arith-fp.ll b/test/CodeGen/Generic/print-arith-fp.ll
new file mode 100644
index 0000000..cfa7583
--- /dev/null
+++ b/test/CodeGen/Generic/print-arith-fp.ll
@@ -0,0 +1,76 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%a_str = internal constant [8 x sbyte] c"a = %f\0A\00"
+%b_str = internal constant [8 x sbyte] c"b = %f\0A\00"
+;; binary ops: arith
+%add_str = internal constant [12 x sbyte] c"a + b = %f\0A\00"
+%sub_str = internal constant [12 x sbyte] c"a - b = %f\0A\00"
+%mul_str = internal constant [12 x sbyte] c"a * b = %f\0A\00"
+%div_str = internal constant [12 x sbyte] c"b / a = %f\0A\00"
+%rem_str = internal constant [13 x sbyte] c"b %% a = %f\0A\00"
+;; binary ops: setcc
+%lt_str  = internal constant [12 x sbyte] c"a < b = %d\0A\00"
+%le_str  = internal constant [13 x sbyte] c"a <= b = %d\0A\00"
+%gt_str  = internal constant [12 x sbyte] c"a > b = %d\0A\00"
+%ge_str  = internal constant [13 x sbyte] c"a >= b = %d\0A\00"
+%eq_str  = internal constant [13 x sbyte] c"a == b = %d\0A\00"
+%ne_str  = internal constant [13 x sbyte] c"a != b = %d\0A\00"
+
+declare int %printf(sbyte*, ...)
+%A = global double 2.0
+%B = global double 5.0
+
+int %main() {  
+  ;; main vars
+  %a = load double* %A
+  %b = load double* %B
+
+  %a_s = getelementptr [8 x sbyte]* %a_str, long 0, long 0
+  %b_s = getelementptr [8 x sbyte]* %b_str, long 0, long 0
+  
+  call int (sbyte*, ...)* %printf(sbyte* %a_s, double %a)
+  call int (sbyte*, ...)* %printf(sbyte* %b_s, double %b)
+
+  ;; arithmetic
+  %add_r  = add double %a, %b
+  %sub_r  = sub double %a, %b
+  %mul_r  = mul double %a, %b
+  %div_r  = div double %b, %a
+  %rem_r  = rem double %b, %a
+
+  %add_s = getelementptr [12 x sbyte]* %add_str, long 0, long 0
+  %sub_s = getelementptr [12 x sbyte]* %sub_str, long 0, long 0
+  %mul_s = getelementptr [12 x sbyte]* %mul_str, long 0, long 0
+  %div_s = getelementptr [12 x sbyte]* %div_str, long 0, long 0
+  %rem_s = getelementptr [13 x sbyte]* %rem_str, long 0, long 0
+
+  call int (sbyte*, ...)* %printf(sbyte* %add_s, double %add_r)
+  call int (sbyte*, ...)* %printf(sbyte* %sub_s, double %sub_r)
+  call int (sbyte*, ...)* %printf(sbyte* %mul_s, double %mul_r)
+  call int (sbyte*, ...)* %printf(sbyte* %div_s, double %div_r)
+  call int (sbyte*, ...)* %printf(sbyte* %rem_s, double %rem_r)
+
+  ;; setcc
+  %lt_r = setlt double %a, %b
+  %le_r = setle double %a, %b
+  %gt_r = setgt double %a, %b 
+  %ge_r = setge double %a, %b
+  %eq_r = seteq double %a, %b
+  %ne_r = setne double %a, %b
+  
+  %lt_s = getelementptr [12 x sbyte]* %lt_str, long 0, long 0
+  %le_s = getelementptr [13 x sbyte]* %le_str, long 0, long 0
+  %gt_s = getelementptr [12 x sbyte]* %gt_str, long 0, long 0
+  %ge_s = getelementptr [13 x sbyte]* %ge_str, long 0, long 0
+  %eq_s = getelementptr [13 x sbyte]* %eq_str, long 0, long 0
+  %ne_s = getelementptr [13 x sbyte]* %ne_str, long 0, long 0
+
+  call int (sbyte*, ...)* %printf(sbyte* %lt_s, bool %lt_r)
+  call int (sbyte*, ...)* %printf(sbyte* %le_s, bool %le_r)
+  call int (sbyte*, ...)* %printf(sbyte* %gt_s, bool %gt_r)
+  call int (sbyte*, ...)* %printf(sbyte* %ge_s, bool %ge_r)
+  call int (sbyte*, ...)* %printf(sbyte* %eq_s, bool %eq_r)
+  call int (sbyte*, ...)* %printf(sbyte* %ne_s, bool %ne_r)
+
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/print-arith-int.ll b/test/CodeGen/Generic/print-arith-int.ll
new file mode 100644
index 0000000..708abec
--- /dev/null
+++ b/test/CodeGen/Generic/print-arith-int.ll
@@ -0,0 +1,102 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%a_str = internal constant [8 x sbyte] c"a = %d\0A\00"
+%b_str = internal constant [8 x sbyte] c"b = %d\0A\00"
+;; binary ops: arith
+%add_str = internal constant [12 x sbyte] c"a + b = %d\0A\00"
+%sub_str = internal constant [12 x sbyte] c"a - b = %d\0A\00"
+%mul_str = internal constant [12 x sbyte] c"a * b = %d\0A\00"
+%div_str = internal constant [12 x sbyte] c"b / a = %d\0A\00"
+%rem_str = internal constant [13 x sbyte] c"b \% a = %d\0A\00"
+;; binary ops: setcc
+%lt_str  = internal constant [12 x sbyte] c"a < b = %d\0A\00"
+%le_str  = internal constant [13 x sbyte] c"a <= b = %d\0A\00"
+%gt_str  = internal constant [12 x sbyte] c"a > b = %d\0A\00"
+%ge_str  = internal constant [13 x sbyte] c"a >= b = %d\0A\00"
+%eq_str  = internal constant [13 x sbyte] c"a == b = %d\0A\00"
+%ne_str  = internal constant [13 x sbyte] c"a != b = %d\0A\00"
+;; logical
+%and_str = internal constant [12 x sbyte] c"a & b = %d\0A\00"
+%or_str  = internal constant [12 x sbyte] c"a | b = %d\0A\00"
+%xor_str = internal constant [12 x sbyte] c"a ^ b = %d\0A\00"
+%shl_str = internal constant [13 x sbyte] c"b << a = %d\0A\00"
+%shr_str = internal constant [13 x sbyte] c"b >> a = %d\0A\00"
+
+declare int %printf(sbyte*, ...)
+%A = global int 2
+%B = global int 5
+
+int %main() {  
+  ;; main vars
+  %a = load int* %A
+  %b = load int* %B
+
+  %a_s = getelementptr [8 x sbyte]* %a_str, long 0, long 0
+  %b_s = getelementptr [8 x sbyte]* %b_str, long 0, long 0
+  
+  call int (sbyte*, ...)* %printf(sbyte* %a_s, int %a)
+  call int (sbyte*, ...)* %printf(sbyte* %b_s, int %b)
+
+  ;; arithmetic
+  %add_r  = add int %a, %b
+  %sub_r  = sub int %a, %b
+  %mul_r  = mul int %a, %b
+  %div_r  = div int %b, %a
+  %rem_r  = rem int %b, %a
+
+  %add_s = getelementptr [12 x sbyte]* %add_str, long 0, long 0
+  %sub_s = getelementptr [12 x sbyte]* %sub_str, long 0, long 0
+  %mul_s = getelementptr [12 x sbyte]* %mul_str, long 0, long 0
+  %div_s = getelementptr [12 x sbyte]* %div_str, long 0, long 0
+  %rem_s = getelementptr [13 x sbyte]* %rem_str, long 0, long 0
+
+  call int (sbyte*, ...)* %printf(sbyte* %add_s, int %add_r)
+  call int (sbyte*, ...)* %printf(sbyte* %sub_s, int %sub_r)
+  call int (sbyte*, ...)* %printf(sbyte* %mul_s, int %mul_r)
+  call int (sbyte*, ...)* %printf(sbyte* %div_s, int %div_r)
+  call int (sbyte*, ...)* %printf(sbyte* %rem_s, int %rem_r)
+
+  ;; setcc
+  %lt_r = setlt int %a, %b
+  %le_r = setle int %a, %b
+  %gt_r = setgt int %a, %b 
+  %ge_r = setge int %a, %b
+  %eq_r = seteq int %a, %b
+  %ne_r = setne int %a, %b
+  
+  %lt_s = getelementptr [12 x sbyte]* %lt_str, long 0, long 0
+  %le_s = getelementptr [13 x sbyte]* %le_str, long 0, long 0
+  %gt_s = getelementptr [12 x sbyte]* %gt_str, long 0, long 0
+  %ge_s = getelementptr [13 x sbyte]* %ge_str, long 0, long 0
+  %eq_s = getelementptr [13 x sbyte]* %eq_str, long 0, long 0
+  %ne_s = getelementptr [13 x sbyte]* %ne_str, long 0, long 0
+
+  call int (sbyte*, ...)* %printf(sbyte* %lt_s, bool %lt_r)
+  call int (sbyte*, ...)* %printf(sbyte* %le_s, bool %le_r)
+  call int (sbyte*, ...)* %printf(sbyte* %gt_s, bool %gt_r)
+  call int (sbyte*, ...)* %printf(sbyte* %ge_s, bool %ge_r)
+  call int (sbyte*, ...)* %printf(sbyte* %eq_s, bool %eq_r)
+  call int (sbyte*, ...)* %printf(sbyte* %ne_s, bool %ne_r)
+
+  ;; logical
+  %and_r = and int %a, %b
+  %or_r  = or  int %a, %b
+  %xor_r = xor int %a, %b
+  %u = cast int %a to ubyte
+  %shl_r = shl int %b, ubyte %u
+  %shr_r = shr int %b, ubyte %u
+  
+  %and_s = getelementptr [12 x sbyte]* %and_str, long 0, long 0
+  %or_s  = getelementptr [12 x sbyte]* %or_str,  long 0, long 0
+  %xor_s = getelementptr [12 x sbyte]* %xor_str, long 0, long 0
+  %shl_s = getelementptr [13 x sbyte]* %shl_str, long 0, long 0
+  %shr_s = getelementptr [13 x sbyte]* %shr_str, long 0, long 0
+
+  call int (sbyte*, ...)* %printf(sbyte* %and_s, int %and_r)
+  call int (sbyte*, ...)* %printf(sbyte* %or_s,  int %or_r)
+  call int (sbyte*, ...)* %printf(sbyte* %xor_s, int %xor_r)
+  call int (sbyte*, ...)* %printf(sbyte* %shl_s, int %shl_r)
+  call int (sbyte*, ...)* %printf(sbyte* %shr_s, int %shr_r)
+
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/print-int.ll b/test/CodeGen/Generic/print-int.ll
new file mode 100644
index 0000000..27cf637
--- /dev/null
+++ b/test/CodeGen/Generic/print-int.ll
@@ -0,0 +1,13 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%.str_1 = internal constant [4 x sbyte] c"%d\0A\00"
+
+declare int %printf(sbyte*, ...)
+
+int %main() {  
+  %f = getelementptr [4 x sbyte]* %.str_1, long 0, long 0
+  %d = add int 0, 0
+  %tmp.0 = call int (sbyte*, ...)* %printf(sbyte* %f, int %d)
+  ret int 0
+}
+
diff --git a/test/CodeGen/Generic/print-mul-exp.ll b/test/CodeGen/Generic/print-mul-exp.ll
new file mode 100644
index 0000000..d5f5f93
--- /dev/null
+++ b/test/CodeGen/Generic/print-mul-exp.ll
@@ -0,0 +1,57 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%a_str = internal constant [8 x sbyte] c"a = %d\0A\00"
+%a_mul_str = internal constant [13 x sbyte] c"a * %d = %d\0A\00"
+%A = global int 2
+declare int %printf(sbyte*, ...)
+
+int %main() {  
+  %a = load int* %A
+  %a_s = getelementptr [8 x sbyte]* %a_str, long 0, long 0
+  %a_mul_s = getelementptr [13 x sbyte]* %a_mul_str, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %a_s, int %a)
+
+  %r_0 = mul int %a, 0
+  %r_1 = mul int %a, 1
+  %r_2 = mul int %a, 2
+  %r_3 = mul int %a, 3
+  %r_4 = mul int %a, 4
+  %r_5 = mul int %a, 5
+  %r_6 = mul int %a, 6
+  %r_7 = mul int %a, 7
+  %r_8 = mul int %a, 8
+  %r_9 = mul int %a, 9
+  %r_10 = mul int %a, 10
+  %r_11 = mul int %a, 11
+  %r_12 = mul int %a, 12
+  %r_13 = mul int %a, 13
+  %r_14 = mul int %a, 14
+  %r_15 = mul int %a, 15
+  %r_16 = mul int %a, 16
+  %r_17 = mul int %a, 17
+  %r_18 = mul int %a, 18
+  %r_19 = mul int %a, 19
+
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 0, int %r_0)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 1, int %r_1)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 2, int %r_2)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 3, int %r_3)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 4, int %r_4)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 5, int %r_5)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 6, int %r_6)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 7, int %r_7)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 8, int %r_8)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 9, int %r_9)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 10, int %r_10)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 11, int %r_11)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 12, int %r_12)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 13, int %r_13)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 14, int %r_14)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 15, int %r_15)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 16, int %r_16)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 17, int %r_17)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 18, int %r_18)
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int 19, int %r_19)
+
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/print-mul.ll b/test/CodeGen/Generic/print-mul.ll
new file mode 100644
index 0000000..911c73e
--- /dev/null
+++ b/test/CodeGen/Generic/print-mul.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%a_str = internal constant [8 x sbyte] c"a = %d\0A\00"
+%b_str = internal constant [8 x sbyte] c"b = %d\0A\00"
+
+;; mul
+%a_mul_str = internal constant [13 x sbyte] c"a * %d = %d\0A\00"
+
+declare int %printf(sbyte*, ...)
+%A = global int 2
+%B = global int 5
+
+int %main() {  
+entry:
+  %a = load int* %A
+  %b = load int* %B
+  %a_s = getelementptr [8 x sbyte]* %a_str, long 0, long 0
+  %b_s = getelementptr [8 x sbyte]* %b_str, long 0, long 0
+  %a_mul_s = getelementptr [13 x sbyte]* %a_mul_str, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %a_s, int %a)
+  call int (sbyte*, ...)* %printf(sbyte* %b_s, int %b)
+  br label %shl_test
+
+shl_test:
+  ;; test mul by 0-255
+  %s = phi int [ 0, %entry ], [ %s_inc, %shl_test ]
+  %result = mul int %a, %s
+  call int (sbyte*, ...)* %printf(sbyte* %a_mul_s, int %s, int %result)
+  %s_inc = add int %s, 1 
+  %done = seteq int %s, 256
+  br bool %done, label %fini, label %shl_test
+
+fini:
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/print-shift.ll b/test/CodeGen/Generic/print-shift.ll
new file mode 100644
index 0000000..4f699d5
--- /dev/null
+++ b/test/CodeGen/Generic/print-shift.ll
@@ -0,0 +1,35 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%a_str = internal constant [8 x sbyte] c"a = %d\0A\00"
+%b_str = internal constant [8 x sbyte] c"b = %d\0A\00"
+
+;; shl
+%a_shl_str = internal constant [14 x sbyte] c"a << %d = %d\0A\00"
+
+declare int %printf(sbyte*, ...)
+%A = global int 2
+%B = global int 5
+
+int %main() {  
+entry:
+  %a = load int* %A
+  %b = load int* %B
+  %a_s = getelementptr [8 x sbyte]* %a_str, long 0, long 0
+  %b_s = getelementptr [8 x sbyte]* %b_str, long 0, long 0
+  %a_shl_s = getelementptr [14 x sbyte]* %a_shl_str, long 0, long 0
+  call int (sbyte*, ...)* %printf(sbyte* %a_s, int %a)
+  call int (sbyte*, ...)* %printf(sbyte* %b_s, int %b)
+  br label %shl_test
+
+shl_test:
+  ;; test left shifts 0-31
+  %s = phi ubyte [ 0, %entry ], [ %s_inc, %shl_test ]
+  %result = shl int %a, ubyte %s
+  call int (sbyte*, ...)* %printf(sbyte* %a_shl_s, ubyte %s, int %result)
+  %s_inc = add ubyte %s, 1 
+  %done = seteq ubyte %s, 32
+  br bool %done, label %fini, label %shl_test
+
+fini:
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/ret0.ll b/test/CodeGen/Generic/ret0.ll
new file mode 100644
index 0000000..4d0d10b
--- /dev/null
+++ b/test/CodeGen/Generic/ret0.ll
@@ -0,0 +1,5 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+int %main() {  
+  ret int 0
+}
diff --git a/test/CodeGen/Generic/ret42.ll b/test/CodeGen/Generic/ret42.ll
new file mode 100644
index 0000000..88d3c98
--- /dev/null
+++ b/test/CodeGen/Generic/ret42.ll
@@ -0,0 +1,5 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+int %main() {  
+  ret int 42
+}
diff --git a/test/CodeGen/Generic/sched.ll b/test/CodeGen/Generic/sched.ll
new file mode 100644
index 0000000..ed2f44e
--- /dev/null
+++ b/test/CodeGen/Generic/sched.ll
@@ -0,0 +1,33 @@
+; RUN: llvm-upgrade %s | llvm-as | llc
+
+implementation
+declare int "printf"(sbyte*, int, float)
+
+
+int "testissue"(int %i, float %x, float %y)
+begin
+	br label %bb1
+bb1:
+	%x1 = mul float %x, %y			;; x1
+	%y1 = mul float %y, 0.75		;; y1
+	%z1 = add float %x1, %y1		;; z1 = x1 + y1
+	
+	%x2 = mul float %x, 0.5			;; x2
+	%y2 = mul float %y, 0.9			;; y2
+	%z2 = add float %x2, %y2		;; z2 = x2 + y2
+	
+	%z3 = add float %z1, %z2		;; z3 = z1 + z2
+	    
+	%i1 = shl int   %i, ubyte 3		;; i1
+	%j1 = add int   %i, 7			;; j1
+	%m1 = add int   %i1, %j1		;; k1 = i1 + j1
+;;	%m1 = div int   %k1, 99			;; m1 = k1 / 99
+	
+	%b  = setle int %m1, 6			;; (m1 <= 6)?
+	br bool %b, label %bb1, label %bb2
+
+bb2:
+	%Msg = cast ulong 0 to sbyte *
+	call int %printf(sbyte* %Msg, int %m1, float %z3)
+	ret int 0
+end
diff --git a/test/CodeGen/Generic/select.ll b/test/CodeGen/Generic/select.ll
new file mode 100644
index 0000000..edf3641
--- /dev/null
+++ b/test/CodeGen/Generic/select.ll
@@ -0,0 +1,209 @@
+; RUN: llvm-upgrade %s | llvm-as | llc
+
+%AConst    = constant int 123
+
+%Domain = type { sbyte*, int, int*, int, int, int*, %Domain* }
+
+implementation
+
+; Test setting values of different constants in registers.
+; 
+void "testConsts"(int %N, float %X)
+begin
+; <label>:0
+	%a = add int %N, 1		; 1 should be put in immed field
+	%i = add int %N, 12345678	; constant has to be loaded
+	%b = add short 4, 3		; one of the operands shd be immed
+	%c = add float %X, 0.0		; will this be optimzzed?
+	%d = add float %X, 3.1415	; constant has to be loaded
+	%f = add uint 4294967295, 10    ; result shd be  9   (not in immed fld)
+	%g = add ushort 20, 65535	; result shd be 19 (65536 in immed fld)
+	%j = add ushort 65535, 30	; result shd be 29   (not in immed fld)
+	%h = add ubyte  40, 255		; result shd be 39   (255 in immed fld)
+	%k = add ubyte  255, 50		; result shd be 49   (not in immed fld)
+	
+	ret void
+end
+
+; 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.
+; 
+void "unusedBool"(int * %x, int * %y)
+begin
+; <label>:0				;		[#uses=0]
+	seteq int * %x, %y		; <bool>:0	[#uses=1]
+	xor bool %0, true		; <bool>:1	[#uses=0]
+	setne int * %x, %y		; <bool>:2	[#uses=0]
+	ret void
+end
+
+; 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
+; 
+void "mergeConstants"(int * %x, int * %y)
+begin
+; <label>:0
+	br label %Top
+Top:
+	phi int    [ 0,    %0 ], [ 1,    %Top ], [ 524288, %Next ]
+	phi float  [ 0.0,  %0 ], [ 1.0,  %Top ], [ 2.0,    %Next ]
+	phi double [ 0.5,  %0 ], [ 1.5,  %Top ], [ 2.5,    %Next ]
+	phi bool   [ true, %0 ], [ false,%Top ], [ true,   %Next ]
+	br bool true, label %Top, label %Next
+Next:
+	br label %Top
+end
+
+
+
+; 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
+;  
+int* "castconst"(float)
+begin
+; <label>:0
+	%castbig   = cast ulong 99999999 to int
+	%castsmall = cast ulong 1        to int
+	%usebig    = add int %castbig, %castsmall
+		
+	%castglob = cast int* %AConst to long*
+	%dummyl   = load long* %castglob
+	
+	%castnull = cast ulong 0 to int*
+	ret int* %castnull
+end
+
+
+
+; Test branch-on-comparison-with-zero, in two ways:
+; 1. can be folded
+; 2. cannot be folded because result of comparison is used twice
+;
+void "testbool"(int %A, int %B) {
+	br label %Top
+Top:
+	%D = add int %A, %B
+	%E = sub int %D, -4
+	%C = setle int %E, 0
+	br bool %C, label %retlbl, label %loop
+
+loop:
+	%F = add int %A, %B
+	%G = sub int %D, -4
+	%D = setle int %G, 0
+	%E = xor bool %D, true
+	br bool %E, label %loop, label %Top
+
+retlbl:
+	ret void
+end
+
+
+;; Test use of a boolean result in cast operations.
+;; Requires converting a condition code result into a 0/1 value in a reg.
+;; 
+implementation
+
+int %castbool(int %A, int %B) {
+bb0:						; [#uses=0]
+    %cond213 = setlt int %A, %B			; <bool> [#uses=1]
+    %cast110 = cast bool %cond213 to ubyte      ; <ubyte> [#uses=1]
+    %cast109 = cast ubyte %cast110 to int       ; <int> [#uses=1]
+    ret int %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.
+;; 
+bool %boolexpr(bool %b, int %N) {
+    %b2 = setge int %N, 0
+    %b3 = and bool %b, %b2
+    ret bool %b3
+}
+
+
+; Test branch on floating point comparison
+;
+void "testfloatbool"(float %x, float %y)   ; Def %0, %1 - float
+begin
+; <label>:0
+	br label %Top
+Top:
+	%p = add float %x, %y    ; Def 2 - float
+	%z = sub float %x, %y    ; Def 3 - float
+	%b = setle float %p, %z	 ; Def 0 - bool
+	%c = xor bool %b, true	 ; Def 1 - bool
+	br bool %b, label %Top, label %goon
+goon:
+	ret void
+end
+
+
+; 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.
+;
+int "checkForward"(int %N, int* %A)
+begin
+
+bb2:		;;<label>
+	%reg114 = shl int %N, ubyte 2		;;
+	%cast115 = cast int %reg114 to long	;; reg114 will be propagated
+	%cast116 = cast int* %A to long		;; %A will be propagated 
+	%reg116  = add long %cast116, %cast115	;;
+	%castPtr = cast long %reg116 to int*    ;; %A will be propagated 
+	%reg118 = load int* %castPtr		;;
+	%cast117 = cast int %reg118 to long	;; reg118 will be copied 'cos
+	%reg159 = add long 1234567, %cast117	;;  cast117 has 2 uses, here
+	%reg160 = add long 7654321, %cast117	;;  and here.
+	ret int 0
+end
+
+
+; Test case for unary NOT operation constructed from XOR.
+; 
+void "checkNot"(bool %b, int %i)
+begin
+	%notB = xor bool %b, true
+	%notI = xor int %i, -1
+	%F    = setge int %notI, 100
+	%J    = add int %i, %i
+	%andNotB = and bool %F, %notB		;; should get folded with notB
+	%andNotI = and int %J, %notI		;; should get folded with notI
+
+	%notB2 = xor bool true, %b		;; should become XNOR
+	%notI2 = xor int -1, %i			;; should become XNOR
+
+	ret void
+end
+
+
+; Test case for folding getelementptr into a load/store
+;
+int "checkFoldGEP"(%Domain* %D, long %idx)
+begin
+        %reg841 = getelementptr %Domain* %D, long 0, uint 1
+        %reg820 = load int* %reg841
+        ret int %reg820
+end
diff --git a/test/CodeGen/Generic/shift-int64.ll b/test/CodeGen/Generic/shift-int64.ll
new file mode 100644
index 0000000..a5ab37d
--- /dev/null
+++ b/test/CodeGen/Generic/shift-int64.ll
@@ -0,0 +1,11 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+long %test_imm(long %X) {
+   %Y = shr long %X, ubyte 17 
+   ret long %Y
+}
+
+long %test_variable(long %X, ubyte %Amt) {
+   %Y = shr long %X, ubyte %Amt
+   ret long %Y
+}
diff --git a/test/CodeGen/Generic/spillccr.ll b/test/CodeGen/Generic/spillccr.ll
new file mode 100644
index 0000000..6ae7506
--- /dev/null
+++ b/test/CodeGen/Generic/spillccr.ll
@@ -0,0 +1,50 @@
+; RUN: llvm-upgrade %s | llvm-as | 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*, int (uint)*, int }
+	%struct.hash_entry = type { uint, sbyte*, %HashEntry }
+	%struct.vert_st = type { int, %Vertex, %Hash }
+%HashRange = uninitialized global int		; <int*> [#uses=1]
+%.LC0 = internal global [13 x sbyte] c"Make phase 2\00"		; <[13 x sbyte]*> [#uses=1]
+%.LC1 = internal global [13 x sbyte] c"Make phase 3\00"		; <[13 x sbyte]*> [#uses=1]
+%.LC2 = internal global [13 x sbyte] c"Make phase 4\00"		; <[13 x sbyte]*> [#uses=1]
+%.LC3 = internal global [15 x sbyte] c"Make returning\00"		; <[15 x sbyte]*> [#uses=1]
+
+implementation   ; Functions:
+
+%Graph %MakeGraph(int %numvert, int %numproc) {
+bb1:					;[#uses=1]
+	%reg111 = add int %numproc, -1		; <int> [#uses=3]
+	%cond275 = setlt int %reg111, 1		; <bool> [#uses=2]
+	%cond276 = setle int %reg111, 0		; <bool> [#uses=1]
+	%cond277 = setge int %numvert, 0		; <bool> [#uses=2]
+	%reg162 = add int %numvert, 3		; <int> [#uses=2]
+	br bool %cond275, label %bb7, label %bb4
+
+bb4:
+	br bool %cond276, label %bb7, label %bb5
+
+bb5:
+	br bool %cond277, label %bb7, label %bb6
+
+bb6:					;[#uses=2]
+	ret %Graph null
+
+bb7:					;[#uses=2]
+	ret %Graph null
+}
+
diff --git a/test/CodeGen/Generic/stacksave-restore.ll b/test/CodeGen/Generic/stacksave-restore.ll
new file mode 100644
index 0000000..65cf6c1
--- /dev/null
+++ b/test/CodeGen/Generic/stacksave-restore.ll
@@ -0,0 +1,12 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+declare sbyte* %llvm.stacksave()
+declare void %llvm.stackrestore(sbyte*)
+
+int *%test(uint %N) {
+	%tmp = call sbyte* %llvm.stacksave()
+	%P = alloca int, uint %N
+	call void %llvm.stackrestore(sbyte* %tmp)
+	%Q = alloca int, uint %N
+	ret int* %P
+}
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 0000000..ef986e0
--- /dev/null
+++ b/test/CodeGen/Generic/switch-crit-edge-constant.ll
@@ -0,0 +1,55 @@
+; PR925
+; RUN: llvm-upgrade < %s | llvm-as | llc -march=x86 | \
+; RUN:   grep mov.*str1 | wc -l | grep 1
+
+target endian = little
+target pointersize = 32
+target triple = "i686-apple-darwin8.7.2"
+%str1 = internal constant [5 x sbyte] c"bonk\00"		; <[5 x sbyte]*> [#uses=1]
+%str2 = internal constant [5 x sbyte] c"bork\00"		; <[5 x sbyte]*> [#uses=1]
+%str = internal constant [8 x sbyte] c"perfwap\00"		; <[8 x sbyte]*> [#uses=1]
+
+implementation   ; Functions:
+
+void %foo(int %C) {
+entry:
+	switch int %C, label %bb2 [
+		 int 1, label %blahaha
+		 int 2, label %blahaha
+		 int 3, label %blahaha
+		 int 4, label %blahaha
+		 int 5, label %blahaha
+		 int 6, label %blahaha
+		 int 7, label %blahaha
+		 int 8, label %blahaha
+		 int 9, label %blahaha
+		 int 10, label %blahaha
+	]
+
+bb2:		; preds = %entry
+	%tmp5 = and int %C, 123		; <int> [#uses=1]
+	%tmp = seteq int %tmp5, 0		; <bool> [#uses=1]
+	br bool %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 sbyte* [ getelementptr ([8 x sbyte]* %str, int 0, uint 0), %cond_true ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str1, int 0, uint 0), %entry ], [ getelementptr ([5 x sbyte]* %str2, int 0, uint 0), %bb2 ]		; <sbyte*> [#uses=13]
+	%tmp8 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp10 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp12 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp14 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp16 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp18 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp20 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp22 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp24 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp26 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp28 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp30 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	%tmp32 = tail call int (sbyte*, ...)* %printf( sbyte* %s.0 )		; <int> [#uses=0]
+	ret void
+}
+
+declare int %printf(sbyte*, ...)
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 0000000..6552cb1
--- /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 | wc -l | grep 1
+; RUN: grep \\\$6 %t | wc -l | grep 2 
+; RUN: grep 1024 %t | wc -l | grep 1 
+; RUN: grep 1023 %t | wc -l | grep 1 
+; RUN: grep 119  %t | wc -l | grep 1 
+; RUN: grep JTI %t | wc -l | grep 2 
+; RUN: grep jg %t | wc -l | grep 1 
+; RUN: grep ja %t | wc -l | grep 1 
+; RUN: grep js %t | wc -l | grep 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 0000000..71dbc26
--- /dev/null
+++ b/test/CodeGen/Generic/switch-lower-feature.ll
@@ -0,0 +1,29 @@
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep \$7 | wc -l | grep 1
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep \$6 | wc -l | grep 1
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep 1024 | wc -l | grep 1
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep jb | wc -l | grep 2
+; RUN: llvm-as < %s | llc -march=x86 -o - | grep je | wc -l | grep 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 0000000..b1aad3f
--- /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/vector-constantexpr.ll b/test/CodeGen/Generic/vector-constantexpr.ll
new file mode 100644
index 0000000..31b60a4
--- /dev/null
+++ b/test/CodeGen/Generic/vector-constantexpr.ll
@@ -0,0 +1,10 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc
+	
+void ""(float* %inregs, float* %outregs) {
+        %a_addr.i = alloca <4 x float>          ; <<4 x float>*> [#uses=1]
+        store <4 x float> < float extractelement (<4 x float> undef, uint 3), float extractelement (<4 x float> undef, uint 0), float extractelement (<4 x float> undef, uint 1), float extractelement (<4 x float> undef, uint 2) >, <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 0000000..0f7e03b
--- /dev/null
+++ b/test/CodeGen/Generic/vector-identity-shuffle.ll
@@ -0,0 +1,15 @@
+; RUN: llvm-upgrade < %s | llvm-as | llc 
+
+void %test(<4 x float> *%tmp2.i) {
+	%tmp2.i = load <4x float>* %tmp2.i
+       %xFloat0.48 = extractelement <4 x float> %tmp2.i, uint 0                ; <float> [#uses=1]
+        %inFloat0.49 = insertelement <4 x float> undef, float %xFloat0.48, uint 0               ; <<4 x float>> [#uses=1]
+        %xFloat1.50 = extractelement <4 x float> %tmp2.i, uint 1                ; <float> [#uses=1]
+        %inFloat1.52 = insertelement <4 x float> %inFloat0.49, float %xFloat1.50, uint 1                ; <<4 x float>> [#uses=1]
+        %xFloat2.53 = extractelement <4 x float> %tmp2.i, uint 2                ; <float> [#uses=1]
+        %inFloat2.55 = insertelement <4 x float> %inFloat1.52, float %xFloat2.53, uint 2                ; <<4 x float>> [#uses=1]
+        %xFloat3.56 = extractelement <4 x float> %tmp2.i, uint 3                ; <float> [#uses=1]
+        %inFloat3.58 = insertelement <4 x float> %inFloat2.55, float %xFloat3.56, uint 3                ; <<4 x float>> [#uses=4]
+	store <4 x float> %inFloat3.58, <4x float>* %tmp2.i
+	ret void
+}
diff --git a/test/CodeGen/Generic/vector.ll b/test/CodeGen/Generic/vector.ll
new file mode 100644
index 0000000..59f554b
--- /dev/null
+++ b/test/CodeGen/Generic/vector.ll
@@ -0,0 +1,156 @@
+; Test that vectors are scalarized/lowered correctly.
+; RUN: llvm-upgrade < %s | llvm-as | llc
+
+%f1 = type <1 x float>
+%f2 = type <2 x float>
+%f4 = type <4 x float>
+%i4 = type <4 x int>
+%f8 = type <8 x float>
+%d8 = type <8 x double>
+
+implementation
+
+;;; TEST HANDLING OF VARIOUS VECTOR SIZES
+
+void %test_f1(%f1 *%P, %f1* %Q, %f1 *%S) {
+  %p = load %f1 *%P
+  %q = load %f1* %Q
+  %R = add %f1 %p, %q
+  store %f1 %R, %f1 *%S
+  ret void
+}
+
+void %test_f2(%f2 *%P, %f2* %Q, %f2 *%S) {
+  %p = load %f2* %P
+  %q = load %f2* %Q
+  %R = add %f2 %p, %q
+  store %f2 %R, %f2 *%S
+  ret void
+}
+
+void %test_f4(%f4 *%P, %f4* %Q, %f4 *%S) {
+  %p = load %f4* %P
+  %q = load %f4* %Q
+  %R = add %f4 %p, %q
+  store %f4 %R, %f4 *%S
+  ret void
+}
+
+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
+}
+
+void %test_fmul(%f8 *%P, %f8* %Q, %f8 *%S) {
+  %p = load %f8* %P
+  %q = load %f8* %Q
+  %R = mul %f8 %p, %q
+  store %f8 %R, %f8 *%S
+  ret void
+}
+
+void %test_div(%f8 *%P, %f8* %Q, %f8 *%S) {
+  %p = load %f8* %P
+  %q = load %f8* %Q
+  %R = div %f8 %p, %q
+  store %f8 %R, %f8 *%S
+  ret void
+}
+
+;;; TEST VECTOR CONSTRUCTS
+
+void %test_cst(%f4 *%P, %f4 *%S) {
+  %p = load %f4* %P
+  %R = add %f4 %p, <float 0.1, float 1.0, float 2.0, float 4.5>
+  store %f4 %R, %f4 *%S
+  ret void
+}
+
+void %test_zero(%f4 *%P, %f4 *%S) {
+  %p = load %f4* %P
+  %R = add %f4 %p, zeroinitializer
+  store %f4 %R, %f4 *%S
+  ret void
+}
+
+void %test_undef(%f4 *%P, %f4 *%S) {
+  %p = load %f4* %P
+  %R = add %f4 %p, undef
+  store %f4 %R, %f4 *%S
+  ret void
+}
+
+void %test_constant_insert(%f4 *%S) {
+  %R = insertelement %f4 zeroinitializer, float 10.0, uint 0
+  store %f4 %R, %f4 *%S
+  ret void
+}
+
+void %test_variable_buildvector(float %F, %f4 *%S) {
+  %R = insertelement %f4 zeroinitializer, float %F, uint 0
+  store %f4 %R, %f4 *%S
+  ret void
+}
+
+void %test_scalar_to_vector(float %F, %f4 *%S) {
+  %R = insertelement %f4 undef, float %F, uint 0   ;; R = scalar_to_vector F
+  store %f4 %R, %f4 *%S
+  ret void
+}
+
+float %test_extract_elt(%f8 *%P) {
+  %p = load %f8* %P
+  %R = extractelement %f8 %p, uint 3
+  ret float %R
+}
+
+double %test_extract_elt2(%d8 *%P) {
+  %p = load %d8* %P
+  %R = extractelement %d8 %p, uint 3
+  ret double %R
+}
+
+void %test_cast_1(<4 x float>* %b, <4 x int>* %a) {
+  %tmp = load <4 x float>* %b
+  %tmp2 = add <4 x float> %tmp, <float 1.0, float 2.0, float 3.0, float 4.0>
+  %tmp3 = cast <4 x float> %tmp2 to <4 x int>
+  %tmp4 = add <4 x int> %tmp3, <int 1, int 2, int 3, int 4>
+  store <4 x int> %tmp4, <4 x int>* %a
+  ret void
+}
+
+void %test_cast_2(<8 x float>* %a, <8 x int>* %b) {
+  %T = load <8 x float>* %a
+  %T2 = cast <8 x float> %T to <8 x int>
+  store <8 x int> %T2, <8 x int>* %b
+  ret void
+}
+
+
+;;; TEST IMPORTANT IDIOMS
+
+void %splat(%f4* %P, %f4* %Q, float %X) {
+        %tmp = insertelement %f4 undef, float %X, uint 0
+        %tmp2 = insertelement %f4 %tmp, float %X, uint 1
+        %tmp4 = insertelement %f4 %tmp2, float %X, uint 2
+        %tmp6 = insertelement %f4 %tmp4, float %X, uint 3
+	%q = load %f4* %Q
+	%R = add %f4 %q, %tmp6
+        store %f4 %R, %f4* %P
+        ret void
+}
+
+void %splat_i4(%i4* %P, %i4* %Q, int %X) {
+        %tmp = insertelement %i4 undef, int %X, uint 0
+        %tmp2 = insertelement %i4 %tmp, int %X, uint 1
+        %tmp4 = insertelement %i4 %tmp2, int %X, uint 2
+        %tmp6 = insertelement %i4 %tmp4, int %X, uint 3
+	%q = load %i4* %Q
+	%R = add %i4 %q, %tmp6
+        store %i4 %R, %i4* %P
+        ret void
+}
+