merge all the "crash tests" into crash.ll
authorChris Lattner <sabre@nondot.org>
Mon, 24 Jan 2011 03:37:34 +0000 (03:37 +0000)
committerChris Lattner <sabre@nondot.org>
Mon, 24 Jan 2011 03:37:34 +0000 (03:37 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@124101 91177308-0d34-0410-b5e6-96231b3b80d8

15 files changed:
test/Transforms/ScalarRepl/2003-05-30-InvalidIndices.ll [deleted file]
test/Transforms/ScalarRepl/2003-05-30-MultiLevel.ll [deleted file]
test/Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll [deleted file]
test/Transforms/ScalarRepl/2006-01-24-IllegalUnionPromoteCrash.ll [deleted file]
test/Transforms/ScalarRepl/2006-04-20-PromoteCrash.ll [deleted file]
test/Transforms/ScalarRepl/2006-10-23-PointerUnionCrash.ll [deleted file]
test/Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll [deleted file]
test/Transforms/ScalarRepl/2007-03-19-CanonicalizeMemcpy.ll [deleted file]
test/Transforms/ScalarRepl/2009-01-09-scalarrepl-empty.ll [deleted file]
test/Transforms/ScalarRepl/2009-04-21-ZeroLengthMemSet.ll [deleted file]
test/Transforms/ScalarRepl/2009-05-08-I1Crash.ll [deleted file]
test/Transforms/ScalarRepl/2009-06-01-BitcastIntPadding.ll [deleted file]
test/Transforms/ScalarRepl/2009-08-16-VLA.ll [deleted file]
test/Transforms/ScalarRepl/2010-11-24-IndirectVoid.ll [deleted file]
test/Transforms/ScalarRepl/crash.ll

diff --git a/test/Transforms/ScalarRepl/2003-05-30-InvalidIndices.ll b/test/Transforms/ScalarRepl/2003-05-30-InvalidIndices.ll
deleted file mode 100644 (file)
index b147ec9..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-; RUN: opt < %s -scalarrepl
-
-define void @main() {
-       %E = alloca { { i32, float, double, i64 }, { i32, float, double, i64 } }        ; <{ { i32, float, double, i64 }, { i32, float, double, i64 } }*> [#uses=1]
-       %tmp.151 = getelementptr { { i32, float, double, i64 }, { i32, float, double, i64 } }* %E, i64 0, i32 1, i32 3          ; <i64*> [#uses=0]
-       ret void
-}
-
diff --git a/test/Transforms/ScalarRepl/2003-05-30-MultiLevel.ll b/test/Transforms/ScalarRepl/2003-05-30-MultiLevel.ll
deleted file mode 100644 (file)
index 89c0b05..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-; RUN: opt < %s -scalarrepl
-
-define i32 @test() {
-       %X = alloca { [4 x i32] }               ; <{ [4 x i32] }*> [#uses=1]
-       %Y = getelementptr { [4 x i32] }* %X, i64 0, i32 0, i64 2               ; <i32*> [#uses=2]
-       store i32 4, i32* %Y
-       %Z = load i32* %Y               ; <i32> [#uses=1]
-       ret i32 %Z
-}
-
diff --git a/test/Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll b/test/Transforms/ScalarRepl/2005-12-14-UnionPromoteCrash.ll
deleted file mode 100644 (file)
index ea23c31..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-; RUN: opt < %s -scalarrepl -disable-output
-
-target datalayout = "E-p:32:32"
-       %struct.rtx_def = type { [2 x i8], i32, [1 x %union.rtunion_def] }
-       %union.rtunion_def = type { i32 }
-
-define void @find_reloads() {
-entry:
-       %c_addr.i = alloca i8           ; <i8*> [#uses=1]
-       switch i32 0, label %return [
-                i32 36, label %label.7
-                i32 34, label %label.7
-                i32 41, label %label.5
-       ]
-label.5:               ; preds = %entry
-       ret void
-label.7:               ; preds = %entry, %entry
-       br i1 false, label %then.4, label %switchexit.0
-then.4:                ; preds = %label.7
-       %tmp.0.i = bitcast i8* %c_addr.i to i32*                ; <i32*> [#uses=1]
-       store i32 44, i32* %tmp.0.i
-       ret void
-switchexit.0:          ; preds = %label.7
-       ret void
-return:                ; preds = %entry
-       ret void
-}
-
diff --git a/test/Transforms/ScalarRepl/2006-01-24-IllegalUnionPromoteCrash.ll b/test/Transforms/ScalarRepl/2006-01-24-IllegalUnionPromoteCrash.ll
deleted file mode 100644 (file)
index 03c7452..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-; RUN: opt < %s -scalarrepl -disable-output
-
-target datalayout = "E-p:32:32"
-
-define i32 @test(i64 %L) {
-       %X = alloca i32         ; <i32*> [#uses=2]
-       %Y = bitcast i32* %X to i64*            ; <i64*> [#uses=1]
-       store i64 0, i64* %Y
-       %Z = load i32* %X               ; <i32> [#uses=1]
-       ret i32 %Z
-}
-
diff --git a/test/Transforms/ScalarRepl/2006-04-20-PromoteCrash.ll b/test/Transforms/ScalarRepl/2006-04-20-PromoteCrash.ll
deleted file mode 100644 (file)
index 63840f1..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-; RUN: opt < %s -scalarrepl -disable-output
-
-define void @output_toc() {
-entry:
-       %buf = alloca [256 x i8], align 16              ; <[256 x i8]*> [#uses=1]
-       %name = alloca i8*, align 4             ; <i8**> [#uses=1]
-       %real_name = alloca i8*, align 4                ; <i8**> [#uses=0]
-       %"alloca point" = bitcast i32 0 to i32          ; <i32> [#uses=0]
-       %buf.upgrd.1 = bitcast [256 x i8]* %buf to i8*          ; <i8*> [#uses=1]
-       store i8* %buf.upgrd.1, i8** %name
-       call void @abort( )
-       unreachable
-return:                ; No predecessors!
-       ret void
-}
-
-declare void @abort()
-
diff --git a/test/Transforms/ScalarRepl/2006-10-23-PointerUnionCrash.ll b/test/Transforms/ScalarRepl/2006-10-23-PointerUnionCrash.ll
deleted file mode 100644 (file)
index dcd7e53..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-; RUN: opt < %s -scalarrepl -disable-output
-; END.
-target datalayout = "e-p:32:32"
-target triple = "i686-apple-darwin8.7.2"
-
-define void @glgProcessColor() {
-entry:
-       %source_ptr = alloca i8*, align 4               ; <i8**> [#uses=2]
-       br i1 false, label %bb1357, label %cond_next583
-cond_next583:          ; preds = %entry
-       ret void
-bb1357:                ; preds = %entry
-       br i1 false, label %bb1365, label %bb27055
-bb1365:                ; preds = %bb1357
-       switch i32 0, label %cond_next10377 [
-                i32 0, label %bb4679
-                i32 1, label %bb4679
-                i32 2, label %bb4679
-                i32 3, label %bb4679
-                i32 4, label %bb5115
-                i32 5, label %bb6651
-                i32 6, label %bb7147
-                i32 7, label %bb8683
-                i32 8, label %bb9131
-                i32 9, label %bb9875
-                i32 10, label %bb4679
-                i32 11, label %bb4859
-                i32 12, label %bb4679
-                i32 16, label %bb10249
-       ]
-bb4679:                ; preds = %bb1365, %bb1365, %bb1365, %bb1365, %bb1365, %bb1365
-       ret void
-bb4859:                ; preds = %bb1365
-       ret void
-bb5115:                ; preds = %bb1365
-       ret void
-bb6651:                ; preds = %bb1365
-       ret void
-bb7147:                ; preds = %bb1365
-       ret void
-bb8683:                ; preds = %bb1365
-       ret void
-bb9131:                ; preds = %bb1365
-       ret void
-bb9875:                ; preds = %bb1365
-       %source_ptr9884 = bitcast i8** %source_ptr to i8**              ; <i8**> [#uses=1]
-       %tmp9885 = load i8** %source_ptr9884            ; <i8*> [#uses=0]
-       ret void
-bb10249:               ; preds = %bb1365
-       %source_ptr10257 = bitcast i8** %source_ptr to i16**            ; <i16**> [#uses=1]
-       %tmp10258 = load i16** %source_ptr10257         ; <i16*> [#uses=0]
-       ret void
-cond_next10377:                ; preds = %bb1365
-       ret void
-bb27055:               ; preds = %bb1357
-       ret void
-}
diff --git a/test/Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll b/test/Transforms/ScalarRepl/2006-12-11-SROA-Crash.ll
deleted file mode 100644 (file)
index 2606203..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-; RUN: opt < %s -scalarrepl -disable-output
-; PR1045
-
-target datalayout = "e-p:32:32"
-target triple = "i686-pc-linux-gnu"
-       %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>" = type { %"struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block"* }
-       %"struct.__gnu_cxx::bitmap_allocator<char>" = type { i8 }
-       %"struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block" = type { [8 x i8] }
-
-define void @_ZN9__gnu_cxx16bitmap_allocatorIwE27_M_deallocate_single_objectEPw() {
-entry:
-       %this_addr.i = alloca %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*                ; <%"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"**> [#uses=3]
-       %tmp = alloca %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>", align 4                ; <%"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
-       store %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp, %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i
-       %tmp.i = load %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i          ; <%"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
-       %tmp.i.upgrd.1 = bitcast %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp.i to %"struct.__gnu_cxx::bitmap_allocator<char>"*              ; <%"struct.__gnu_cxx::bitmap_allocator<char>"*> [#uses=0]
-       %tmp1.i = load %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i         ; <%"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
-       %tmp.i.upgrd.2 = getelementptr %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp1.i, i32 0, i32 0         ; <%"struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block"**> [#uses=0]
-       unreachable
-}
diff --git a/test/Transforms/ScalarRepl/2007-03-19-CanonicalizeMemcpy.ll b/test/Transforms/ScalarRepl/2007-03-19-CanonicalizeMemcpy.ll
deleted file mode 100644 (file)
index bd49106..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-; RUN: opt < %s -scalarrepl -disable-output
-
-target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:64:64-v128:128:128-a0:0:64"
-target triple = "arm-apple-darwin8"
-       %struct.CGPoint = type { float, float }
-       %struct.aal_big_range_t = type { i32, i32 }
-       %struct.aal_callback_t = type { i8* (i8*, i32)*, void (i8*, i8*)* }
-       %struct.aal_edge_pool_t = type { %struct.aal_edge_pool_t*, i32, i32, [0 x %struct.aal_edge_t] }
-       %struct.aal_edge_t = type { %struct.CGPoint, %struct.CGPoint, i32 }
-       %struct.aal_range_t = type { i16, i16 }
-       %struct.aal_span_pool_t = type { %struct.aal_span_pool_t*, [341 x %struct.aal_span_t] }
-       %struct.aal_span_t = type { %struct.aal_span_t*, %struct.aal_big_range_t }
-       %struct.aal_spanarray_t = type { [2 x %struct.aal_range_t] }
-       %struct.aal_spanbucket_t = type { i16, [2 x i8], %struct.anon }
-       %struct.aal_state_t = type { %struct.CGPoint, %struct.CGPoint, %struct.CGPoint, i32, float, float, float, float, %struct.CGPoint, %struct.CGPoint, float, float, float, float, i32, i32, i32, i32, float, float, i8*, i32, i32, %struct.aal_edge_pool_t*, %struct.aal_edge_pool_t*, i8*, %struct.aal_callback_t*, i32, %struct.aal_span_t*, %struct.aal_span_t*, %struct.aal_span_t*, %struct.aal_span_pool_t*, i8, float, i8, i32 }
-       %struct.anon = type { %struct.aal_spanarray_t }
-
-
-declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
-
-define fastcc void @aal_insert_span() {
-entry:
-       %SB = alloca %struct.aal_spanbucket_t, align 4          ; <%struct.aal_spanbucket_t*> [#uses=2]
-       br i1 false, label %cond_true, label %cond_next79
-
-cond_true:             ; preds = %entry
-       br i1 false, label %cond_next, label %cond_next114.i
-
-cond_next114.i:                ; preds = %cond_true
-       ret void
-
-cond_next:             ; preds = %cond_true
-       %SB19 = bitcast %struct.aal_spanbucket_t* %SB to i8*            ; <i8*> [#uses=1]
-       call void @llvm.memcpy.i32( i8* %SB19, i8* null, i32 12, i32 0 )
-       br i1 false, label %cond_next34, label %cond_next79
-
-cond_next34:           ; preds = %cond_next
-       %i.2.reload22 = load i32* null          ; <i32> [#uses=1]
-       %tmp51 = getelementptr %struct.aal_spanbucket_t* %SB, i32 0, i32 2, i32 0, i32 0, i32 %i.2.reload22, i32 1              ; <i16*> [#uses=0]
-       ret void
-
-cond_next79:           ; preds = %cond_next, %entry
-       ret void
-}
diff --git a/test/Transforms/ScalarRepl/2009-01-09-scalarrepl-empty.ll b/test/Transforms/ScalarRepl/2009-01-09-scalarrepl-empty.ll
deleted file mode 100644 (file)
index 62f7d19..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-; RUN: opt < %s -scalarrepl | llvm-dis
-; PR3304
-
-       %struct.c37304a__vrec = type { i8, %struct.c37304a__vrec___disc___XVN }
-        %struct.c37304a__vrec___disc___XVN = type {
-%struct.c37304a__vrec___disc___XVN___O }
-        %struct.c37304a__vrec___disc___XVN___O = type {  }
-
-define void @_ada_c37304a() {
-entry:
-        %v = alloca %struct.c37304a__vrec
-        %0 = getelementptr %struct.c37304a__vrec* %v, i32 0, i32 0             
-        store i8 8, i8* %0, align 1
-        unreachable
-}
diff --git a/test/Transforms/ScalarRepl/2009-04-21-ZeroLengthMemSet.ll b/test/Transforms/ScalarRepl/2009-04-21-ZeroLengthMemSet.ll
deleted file mode 100644 (file)
index c5ebf8e..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-; RUN: opt < %s -scalarrepl | llvm-dis
-; rdar://6808691
-target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
-target triple = "x86_64-apple-darwin9.0"
-       type <{ i32, i16, i8, i8, i64, i64, i16, [0 x i16] }>           
-
-define i32 @foo() {
-entry:
-       %.compoundliteral = alloca %0           
-       %tmp228 = getelementptr %0* %.compoundliteral, i32 0, i32 7
-       %tmp229 = bitcast [0 x i16]* %tmp228 to i8*             
-       call void @llvm.memset.i64(i8* %tmp229, i8 0, i64 0, i32 2)
-       unreachable
-}
-
-declare void @llvm.memset.i64(i8* nocapture, i8, i64, i32) nounwind
diff --git a/test/Transforms/ScalarRepl/2009-05-08-I1Crash.ll b/test/Transforms/ScalarRepl/2009-05-08-I1Crash.ll
deleted file mode 100644 (file)
index aa3487b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-; RUN: opt < %s -scalarrepl | llvm-dis
-; PR4146
-
- %wrapper = type { i1 }
-
-define void @f() {
-entry:
-        %w = alloca %wrapper, align 8           ; <%wrapper*> [#uses=1]
-        %0 = getelementptr %wrapper* %w, i64 0, i32 0           ; <i1*>
-        store i1 true, i1* %0
-        ret void
-}
diff --git a/test/Transforms/ScalarRepl/2009-06-01-BitcastIntPadding.ll b/test/Transforms/ScalarRepl/2009-06-01-BitcastIntPadding.ll
deleted file mode 100644 (file)
index cecbdd4..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-; RUN: opt < %s -scalarrepl
-; PR4286
-
-target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
-target triple = "x86_64-undermydesk-freebsd8.0"
-       %struct.singlebool = type <{ i8 }>
-
-define zeroext i8 @doit() nounwind {
-entry:
-       %a = alloca %struct.singlebool, align 1         ; <%struct.singlebool*> [#uses=2]
-       %storetmp.i = bitcast %struct.singlebool* %a to i1*             ; <i1*> [#uses=1]
-       store i1 true, i1* %storetmp.i
-       %tmp = getelementptr %struct.singlebool* %a, i64 0, i32 0               ; <i8*> [#uses=1]
-       %tmp1 = load i8* %tmp           ; <i8> [#uses=1]
-       ret i8 %tmp1
-}
-
diff --git a/test/Transforms/ScalarRepl/2009-08-16-VLA.ll b/test/Transforms/ScalarRepl/2009-08-16-VLA.ll
deleted file mode 100644 (file)
index d69af11..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-; RUN: opt < %s -scalarrepl -disable-opt
-
-       %struct.Item = type { [4 x i16], %struct.rule* }
-       %struct.rule = type { [4 x i16], i32, i32, i32, %struct.nonterminal*, %struct.pattern*, i8 }
-       %struct.nonterminal = type { i8*, i32, i32, i32, %struct.plankMap*, %struct.rule* }
-       %struct.plankMap = type { %struct.list*, i32, %struct.stateMap* }
-       %struct.list = type { i8*, %struct.list* }
-       %struct.stateMap = type { i8*, %struct.plank*, i32, i16* }
-       %struct.plank = type { i8*, %struct.list*, i32 }
-       %struct.pattern = type { %struct.nonterminal*, %struct.operator*, [2 x %struct.nonterminal*] }
-       %struct.operator = type { i8*, i8, i32, i32, i32, i32, %struct.table* }
-       %struct.table = type { %struct.operator*, %struct.list*, i16*, [2 x %struct.dimension*], %struct.item_set** }
-       %struct.dimension = type { i16*, %struct.Index_Map, %struct.mapping*, i32, %struct.plankMap* }
-       %struct.Index_Map = type { i32, %struct.item_set** }
-       %struct.item_set = type { i32, i32, %struct.operator*, [2 x %struct.item_set*], %struct.item_set*, i16*, %struct.Item*, %struct.Item* }
-       %struct.mapping = type { %struct.list**, i32, i32, i32, %struct.item_set** }
-
-define void @addHP_2_0() {
-bb4.i:
-       %0 = malloc [0 x %struct.Item]          ; <[0 x %struct.Item]*> [#uses=1]
-       %.sub.i.c.i = getelementptr [0 x %struct.Item]* %0, i32 0, i32 0                ; <%struct.Item*> [#uses=0]
-       unreachable
-}
diff --git a/test/Transforms/ScalarRepl/2010-11-24-IndirectVoid.ll b/test/Transforms/ScalarRepl/2010-11-24-IndirectVoid.ll
deleted file mode 100644 (file)
index 3e07b15..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-; RUN: opt -scalarrepl -disable-output %s
-; PR8680
-
-target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
-
-define void @main() nounwind {
-entry:
-  %memtmp = alloca i32, align 4
-  %0 = bitcast i32* %memtmp to void ()*
-  call void %0() nounwind
-  ret void
-}
-
index 7198e671fa440674ab275130677290b41a313875..7b62f09e86db1acad23695cc0e576356c584a183 100644 (file)
@@ -18,3 +18,243 @@ for.cond:                                         ; preds = %for.cond
 if.end:                                           ; No predecessors!
   ret void
 }
+
+
+define void @test2() {
+  %E = alloca { { i32, float, double, i64 }, { i32, float, double, i64 } }        ; <{ { i32, float, double, i64 }, { i32, float, double, i64 } }*> [#uses=1]
+  %tmp.151 = getelementptr { { i32, float, double, i64 }, { i32, float, double, i64 } }* %E, i64 0, i32 1, i32 3          ; <i64*> [#uses=0]
+  ret void
+}
+
+define i32 @test3() {
+        %X = alloca { [4 x i32] }               ; <{ [4 x i32] }*> [#uses=1]
+        %Y = getelementptr { [4 x i32] }* %X, i64 0, i32 0, i64 2               ; <i32*> [#uses=2]
+        store i32 4, i32* %Y
+        %Z = load i32* %Y               ; <i32> [#uses=1]
+        ret i32 %Z
+}
+
+
+%struct.rtx_def = type { [2 x i8], i32, [1 x %union.rtunion_def] }
+%union.rtunion_def = type { i32 }
+
+define void @test4() {
+entry:
+        %c_addr.i = alloca i8           ; <i8*> [#uses=1]
+        switch i32 0, label %return [
+                 i32 36, label %label.7
+                 i32 34, label %label.7
+                 i32 41, label %label.5
+        ]
+label.5:                ; preds = %entry
+        ret void
+label.7:                ; preds = %entry, %entry
+        br i1 false, label %then.4, label %switchexit.0
+then.4:         ; preds = %label.7
+        %tmp.0.i = bitcast i8* %c_addr.i to i32*                ; <i32*> [#uses=1]
+        store i32 44, i32* %tmp.0.i
+        ret void
+switchexit.0:           ; preds = %label.7
+        ret void
+return:         ; preds = %entry
+        ret void
+}
+
+
+define void @test5() {
+entry:
+        %source_ptr = alloca i8*, align 4               ; <i8**> [#uses=2]
+        br i1 false, label %bb1357, label %cond_next583
+cond_next583:           ; preds = %entry
+        ret void
+bb1357:         ; preds = %entry
+        br i1 false, label %bb1365, label %bb27055
+bb1365:         ; preds = %bb1357
+        switch i32 0, label %cond_next10377 [
+                 i32 0, label %bb4679
+                 i32 1, label %bb4679
+                 i32 2, label %bb4679
+                 i32 3, label %bb4679
+                 i32 4, label %bb5115
+                 i32 5, label %bb6651
+                 i32 6, label %bb7147
+                 i32 7, label %bb8683
+                 i32 8, label %bb9131
+                 i32 9, label %bb9875
+                 i32 10, label %bb4679
+                 i32 11, label %bb4859
+                 i32 12, label %bb4679
+                 i32 16, label %bb10249
+        ]
+bb4679:         ; preds = %bb1365, %bb1365, %bb1365, %bb1365, %bb1365, %bb1365
+        ret void
+bb4859:         ; preds = %bb1365
+        ret void
+bb5115:         ; preds = %bb1365
+        ret void
+bb6651:         ; preds = %bb1365
+        ret void
+bb7147:         ; preds = %bb1365
+        ret void
+bb8683:         ; preds = %bb1365
+        ret void
+bb9131:         ; preds = %bb1365
+        ret void
+bb9875:         ; preds = %bb1365
+        %source_ptr9884 = bitcast i8** %source_ptr to i8**              ; <i8**> [#uses=1]
+        %tmp9885 = load i8** %source_ptr9884            ; <i8*> [#uses=0]
+        ret void
+bb10249:                ; preds = %bb1365
+        %source_ptr10257 = bitcast i8** %source_ptr to i16**            ; <i16**> [#uses=1]
+        %tmp10258 = load i16** %source_ptr10257         ; <i16*> [#uses=0]
+        ret void
+cond_next10377:         ; preds = %bb1365
+        ret void
+bb27055:                ; preds = %bb1357
+        ret void
+}
+
+
+        %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>" = type { %"struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block"* }
+        %"struct.__gnu_cxx::bitmap_allocator<char>" = type { i8 }
+        %"struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block" = type { [8 x i8] }
+
+; PR1045
+define void @test6() {
+entry:
+        %this_addr.i = alloca %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*                ; <%"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"**> [#uses=3]
+        %tmp = alloca %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>", align 4                ; <%"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
+        store %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp, %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i
+        %tmp.i = load %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i          ; <%"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
+        %tmp.i.upgrd.1 = bitcast %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp.i to %"struct.__gnu_cxx::bitmap_allocator<char>"*              ; <%"struct.__gnu_cxx::bitmap_allocator<char>"*> [#uses=0]
+        %tmp1.i = load %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"** %this_addr.i         ; <%"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"*> [#uses=1]
+        %tmp.i.upgrd.2 = getelementptr %"struct.__gnu_cxx::balloc::_Inclusive_between<__gnu_cxx::bitmap_allocator<char>::_Alloc_block*>"* %tmp1.i, i32 0, i32 0         ; <%"struct.__gnu_cxx::bitmap_allocator<char>::_Alloc_block"**> [#uses=0]
+        unreachable
+}
+
+        %struct.CGPoint = type { float, float }
+        %struct.aal_big_range_t = type { i32, i32 }        %struct.aal_callback_t = type { i8* (i8*, i32)*, void (i8*, i8*)* }        %struct.aal_edge_pool_t = type { %struct.aal_edge_pool_t*, i32, i32, [0 x %struct.aal_edge_t] }        %struct.aal_edge_t = type { %struct.CGPoint, %struct.CGPoint, i32 }
+        %struct.aal_range_t = type { i16, i16 }
+        %struct.aal_span_pool_t = type { %struct.aal_span_pool_t*, [341 x %struct.aal_span_t] }
+        %struct.aal_span_t = type { %struct.aal_span_t*, %struct.aal_big_range_t }
+        %struct.aal_spanarray_t = type { [2 x %struct.aal_range_t] }
+        %struct.aal_spanbucket_t = type { i16, [2 x i8], %struct.anon }
+        %struct.aal_state_t = type { %struct.CGPoint, %struct.CGPoint, %struct.CGPoint, i32, float, float, float, float, %struct.CGPoint, %struct.CGPoint, float, float, float, float, i32, i32, i32, i32, float, float, i8*, i32, i32, %struct.aal_edge_pool_t*, %struct.aal_edge_pool_t*, i8*, %struct.aal_callback_t*, i32, %struct.aal_span_t*, %struct.aal_span_t*, %struct.aal_span_t*, %struct.aal_span_pool_t*, i8, float, i8, i32 }
+        %struct.anon = type { %struct.aal_spanarray_t }
+
+
+declare void @llvm.memcpy.i32(i8*, i8*, i32, i32)
+
+define fastcc void @test7() {
+entry:
+        %SB = alloca %struct.aal_spanbucket_t, align 4          ; <%struct.aal_spanbucket_t*> [#uses=2]
+        br i1 false, label %cond_true, label %cond_next79
+
+cond_true:              ; preds = %entry
+        br i1 false, label %cond_next, label %cond_next114.i
+
+cond_next114.i:         ; preds = %cond_true
+        ret void
+
+cond_next:              ; preds = %cond_true
+        %SB19 = bitcast %struct.aal_spanbucket_t* %SB to i8*            ; <i8*> [#uses=1]
+        call void @llvm.memcpy.i32( i8* %SB19, i8* null, i32 12, i32 0 )
+        br i1 false, label %cond_next34, label %cond_next79
+
+cond_next34:            ; preds = %cond_next
+        %i.2.reload22 = load i32* null          ; <i32> [#uses=1]
+        %tmp51 = getelementptr %struct.aal_spanbucket_t* %SB, i32 0, i32 2, i32 0, i32 0, i32 %i.2.reload22, i32 1      
+        ; <i16*> [#uses=0]
+        ret void
+
+cond_next79:            ; preds = %cond_next, %entry
+        ret void
+}
+
+
+       %struct.c37304a__vrec = type { i8, %struct.c37304a__vrec___disc___XVN }
+        %struct.c37304a__vrec___disc___XVN = type {
+%struct.c37304a__vrec___disc___XVN___O }
+        %struct.c37304a__vrec___disc___XVN___O = type {  }
+
+; PR3304
+define void @test8() {
+entry:
+        %v = alloca %struct.c37304a__vrec
+        %0 = getelementptr %struct.c37304a__vrec* %v, i32 0, i32 0             
+        store i8 8, i8* %0, align 1
+        unreachable
+}
+
+
+
+; rdar://6808691 - ZeroLengthMemSet
+        type <{ i32, i16, i8, i8, i64, i64, i16, [0 x i16] }>           
+
+define i32 @test9() {
+entry:
+        %.compoundliteral = alloca %0           
+        %tmp228 = getelementptr %0* %.compoundliteral, i32 0, i32 7
+        %tmp229 = bitcast [0 x i16]* %tmp228 to i8*             
+        call void @llvm.memset.i64(i8* %tmp229, i8 0, i64 0, i32 2)
+        unreachable
+}
+
+declare void @llvm.memset.i64(i8* nocapture, i8, i64, i32) nounwind
+
+
+; PR4146 - i1 handling
+%wrapper = type { i1 }
+define void @test10() {
+entry:
+        %w = alloca %wrapper, align 8           ; <%wrapper*> [#uses=1]
+        %0 = getelementptr %wrapper* %w, i64 0, i32 0           ; <i1*>
+        store i1 true, i1* %0
+        ret void
+}
+
+
+        %struct.singlebool = type <{ i8 }>
+; PR4286
+define zeroext i8 @test11() nounwind {
+entry:
+        %a = alloca %struct.singlebool, align 1         ; <%struct.singlebool*> [#uses=2]
+        %storetmp.i = bitcast %struct.singlebool* %a to i1*             ; <i1*> [#uses=1]
+        store i1 true, i1* %storetmp.i
+        %tmp = getelementptr %struct.singlebool* %a, i64 0, i32 0               ; <i8*> [#uses=1]
+        %tmp1 = load i8* %tmp           ; <i8> [#uses=1]
+        ret i8 %tmp1
+}
+
+
+       %struct.Item = type { [4 x i16], %struct.rule* }
+        %struct.rule = type { [4 x i16], i32, i32, i32, %struct.nonterminal*, %struct.pattern*, i8 }
+        %struct.nonterminal = type { i8*, i32, i32, i32, %struct.plankMap*, %struct.rule* }
+        %struct.plankMap = type { %struct.list*, i32, %struct.stateMap* }
+        %struct.list = type { i8*, %struct.list* }
+        %struct.stateMap = type { i8*, %struct.plank*, i32, i16* }
+        %struct.plank = type { i8*, %struct.list*, i32 }
+        %struct.pattern = type { %struct.nonterminal*, %struct.operator*, [2 x %struct.nonterminal*] }
+        %struct.operator = type { i8*, i8, i32, i32, i32, i32, %struct.table* }
+        %struct.table = type { %struct.operator*, %struct.list*, i16*, [2 x %struct.dimension*], %struct.item_set** }
+        %struct.dimension = type { i16*, %struct.Index_Map, %struct.mapping*, i32, %struct.plankMap* }
+        %struct.Index_Map = type { i32, %struct.item_set** }
+        %struct.item_set = type { i32, i32, %struct.operator*, [2 x %struct.item_set*], %struct.item_set*, i16*, %struct.Item*, %struct.Item* }
+        %struct.mapping = type { %struct.list**, i32, i32, i32, %struct.item_set** }
+
+; VLAs.
+define void @test12() {
+bb4.i:
+        %0 = malloc [0 x %struct.Item]          ; <[0 x %struct.Item]*> [#uses=1]
+        %.sub.i.c.i = getelementptr [0 x %struct.Item]* %0, i32 0, i32 0                ; <%struct.Item*> [#uses=0]
+        unreachable
+}
+
+; PR8680
+define void @test13() nounwind {
+entry:
+  %memtmp = alloca i32, align 4
+  %0 = bitcast i32* %memtmp to void ()*
+  call void %0() nounwind
+  ret void
+}