Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(747)

Unified Diff: test/NaCl/Bitcode/bccompress.ll

Issue 939073008: Rebased PNaCl localmods in LLVM to 223109 (Closed)
Patch Set: undo localmod Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « test/NaCl/Bitcode/bcanalyzer-width.ll ('k') | test/NaCl/Bitcode/bcdist.ll » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: test/NaCl/Bitcode/bccompress.ll
diff --git a/test/NaCl/Bitcode/bccompress.ll b/test/NaCl/Bitcode/bccompress.ll
new file mode 100644
index 0000000000000000000000000000000000000000..d853d833f0307562aa39f4f0ad97d46917471f62
--- /dev/null
+++ b/test/NaCl/Bitcode/bccompress.ll
@@ -0,0 +1,998 @@
+; Simple test to see if pnacl-bccompress maintains bitcode.
+
+; Test 1: Show that we generate the same disassembled code.
+; RUN: llvm-as < %s | pnacl-freeze -allow-local-symbol-tables \
+; RUN: | pnacl-bccompress \
+; RUN: | pnacl-thaw -allow-local-symbol-tables \
+; RUN: | llvm-dis - | FileCheck %s
+
+; Test 2: Show that both the precompressed, and the compressed versions
+; of the bitcode contain the same records.
+; RUN: llvm-as < %s | pnacl-freeze \
+; RUN: | pnacl-bcanalyzer -operands-per-line=6 -dump-records \
+; RUN: | FileCheck %s --check-prefix DUMP
+; RUN: llvm-as < %s | pnacl-freeze | pnacl-bccompress \
+; RUN: | pnacl-bcanalyzer -operands-per-line=6 -dump-records \
+; RUN: | FileCheck %s --check-prefix DUMP
+
+@bytes7 = internal global [7 x i8] c"abcdefg"
+; CHECK: @bytes7 = internal global [7 x i8] c"abcdefg"
+
+@ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
+; CHECK-NEXT: @ptr_to_ptr = internal global i32 ptrtoint (i32* @ptr to i32)
+
+@ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32)
+; CHECK-NEXT: @ptr_to_func = internal global i32 ptrtoint (void ()* @func to i32)
+
+@compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
+; CHECK-NEXT: @compound = internal global <{ [3 x i8], i32 }> <{ [3 x i8] c"foo", i32 ptrtoint (void ()* @func to i32) }>
+
+@ptr = internal global i32 ptrtoint ([7 x i8]* @bytes7 to i32)
+; CHECK-NEXT: @ptr = internal global i32 ptrtoint ([7 x i8]* @bytes7 to i32)
+
+@addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
+; CHECK-NEXT: @addend_ptr = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 1)
+
+@addend_negative = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
+; CHECK-NEXT: @addend_negative = internal global i32 add (i32 ptrtoint (i32* @ptr to i32), i32 -1)
+
+@addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 1)
+; CHECK-NEXT: @addend_array1 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 1)
+
+@addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 7)
+; CHECK-NEXT: @addend_array2 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 7)
+
+@addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 9)
+; CHECK-NEXT: @addend_array3 = internal global i32 add (i32 ptrtoint ([7 x i8]* @bytes7 to i32), i32 9)
+
+@addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
+; CHECK-NEXT: @addend_struct1 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 1)
+
+@addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
+; CHECK-NEXT: @addend_struct2 = internal global i32 add (i32 ptrtoint (<{ [3 x i8], i32 }>* @compound to i32), i32 4)
+
+@ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align 8
+; CHECK-NEXT: @ptr_to_func_align = internal global i32 ptrtoint (void ()* @func to i32), align 8
+
+@char = internal constant [1 x i8] c"0"
+; CHECK-NEXT: @char = internal constant [1 x i8] c"0"
+
+@short = internal constant [2 x i8] zeroinitializer
+; CHECK-NEXT: @short = internal constant [2 x i8] zeroinitializer
+
+@bytes = internal global [4 x i8] c"abcd"
+; CHECK-NEXT: @bytes = internal global [4 x i8] c"abcd"
+
+declare i32 @bar(i32)
+; CHECK: declare i32 @bar(i32)
+
+define void @func() {
+ ret void
+}
+
+; CHECK: define void @func() {
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @AllocCastSimple() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = ptrtoint i8* %1 to i32
+ %3 = bitcast [4 x i8]* @bytes to i32*
+ store i32 %2, i32* %3, align 1
+ ret void
+}
+
+; CHECK: define void @AllocCastSimple() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
+; CHECK-NEXT: %3 = bitcast [4 x i8]* @bytes to i32*
+; CHECK-NEXT: store i32 %2, i32* %3, align 1
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @AllocCastSimpleReversed() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = ptrtoint i8* %1 to i32
+ %3 = bitcast [4 x i8]* @bytes to i32*
+ store i32 %2, i32* %3, align 1
+ ret void
+}
+
+; CHECK: define void @AllocCastSimpleReversed() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
+; CHECK-NEXT: %3 = bitcast [4 x i8]* @bytes to i32*
+; CHECK-NEXT: store i32 %2, i32* %3, align 1
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @AllocCastDelete() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = alloca i8, i32 4, align 8
+ ret void
+}
+
+; CHECK: define void @AllocCastDelete() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @AllocCastOpt() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = ptrtoint i8* %1 to i32
+ %3 = bitcast [4 x i8]* @bytes to i32*
+ store i32 %2, i32* %3, align 1
+ store i32 %2, i32* %3, align 1
+ ret void
+}
+
+; CHECK: define void @AllocCastOpt() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
+; CHECK-NEXT: %3 = bitcast [4 x i8]* @bytes to i32*
+; CHECK-NEXT: store i32 %2, i32* %3, align 1
+; CHECK-NEXT: store i32 %2, i32* %3, align 1
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @AllocBitcast(i32) {
+ %2 = alloca i8, i32 4, align 8
+ %3 = add i32 %0, 1
+ %4 = ptrtoint i8* %2 to i32
+ %5 = bitcast [4 x i8]* @bytes to i32*
+ store i32 %4, i32* %5, align 1
+ ret void
+}
+
+; CHECK: define void @AllocBitcast(i32) {
+; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %3 = add i32 %0, 1
+; CHECK-NEXT: %4 = ptrtoint i8* %2 to i32
+; CHECK-NEXT: %5 = bitcast [4 x i8]* @bytes to i32*
+; CHECK-NEXT: store i32 %4, i32* %5, align 1
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @StoreGlobal() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = ptrtoint [4 x i8]* @bytes to i32
+ %3 = bitcast i8* %1 to i32*
+ store i32 %2, i32* %3, align 1
+ ret void
+}
+
+; CHECK: define void @StoreGlobal() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = ptrtoint [4 x i8]* @bytes to i32
+; CHECK-NEXT: %3 = bitcast i8* %1 to i32*
+; CHECK-NEXT: store i32 %2, i32* %3, align 1
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @StoreGlobalCastsReversed() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = ptrtoint [4 x i8]* @bytes to i32
+ %3 = bitcast i8* %1 to i32*
+ store i32 %2, i32* %3, align 1
+ ret void
+}
+
+; CHECK: define void @StoreGlobalCastsReversed() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = ptrtoint [4 x i8]* @bytes to i32
+; CHECK-NEXT: %3 = bitcast i8* %1 to i32*
+; CHECK-NEXT: store i32 %2, i32* %3, align 1
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define i32 @StoreGlobalCastPtr2Int() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = ptrtoint [4 x i8]* @bytes to i32
+ %3 = bitcast i8* %1 to i32*
+ store i32 %2, i32* %3, align 1
+ ret i32 0
+}
+
+; CHECK: define i32 @StoreGlobalCastPtr2Int() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = ptrtoint [4 x i8]* @bytes to i32
+; CHECK-NEXT: %3 = bitcast i8* %1 to i32*
+; CHECK-NEXT: store i32 %2, i32* %3, align 1
+; CHECK-NEXT: ret i32 0
+; CHECK-NEXT: }
+
+define void @CastAddAlloca() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = add i32 1, 2
+ %3 = ptrtoint i8* %1 to i32
+ %4 = add i32 %3, 2
+ %5 = add i32 1, %3
+ %6 = add i32 %3, %3
+ ret void
+}
+
+; CHECK: define void @CastAddAlloca() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = add i32 1, 2
+; CHECK-NEXT: %3 = ptrtoint i8* %1 to i32
+; CHECK-NEXT: %4 = add i32 %3, 2
+; CHECK-NEXT: %5 = add i32 1, %3
+; CHECK-NEXT: %6 = add i32 %3, %3
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @CastAddGlobal() {
+ %1 = add i32 1, 2
+ %2 = ptrtoint [4 x i8]* @bytes to i32
+ %3 = add i32 %2, 2
+ %4 = add i32 1, %2
+ %5 = add i32 %2, %2
+ ret void
+}
+
+; CHECK: define void @CastAddGlobal() {
+; CHECK-NEXT: %1 = add i32 1, 2
+; CHECK-NEXT: %2 = ptrtoint [4 x i8]* @bytes to i32
+; CHECK-NEXT: %3 = add i32 %2, 2
+; CHECK-NEXT: %4 = add i32 1, %2
+; CHECK-NEXT: %5 = add i32 %2, %2
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @CastBinop() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = ptrtoint i8* %1 to i32
+ %3 = ptrtoint [4 x i8]* @bytes to i32
+ %4 = sub i32 %2, %3
+ %5 = mul i32 %2, %3
+ %6 = udiv i32 %2, %3
+ %7 = urem i32 %2, %3
+ %8 = srem i32 %2, %3
+ %9 = shl i32 %2, %3
+ %10 = lshr i32 %2, %3
+ %11 = ashr i32 %2, %3
+ %12 = and i32 %2, %3
+ %13 = or i32 %2, %3
+ %14 = xor i32 %2, %3
+ ret void
+}
+
+; CHECK: define void @CastBinop() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
+; CHECK-NEXT: %3 = ptrtoint [4 x i8]* @bytes to i32
+; CHECK-NEXT: %4 = sub i32 %2, %3
+; CHECK-NEXT: %5 = mul i32 %2, %3
+; CHECK-NEXT: %6 = udiv i32 %2, %3
+; CHECK-NEXT: %7 = urem i32 %2, %3
+; CHECK-NEXT: %8 = srem i32 %2, %3
+; CHECK-NEXT: %9 = shl i32 %2, %3
+; CHECK-NEXT: %10 = lshr i32 %2, %3
+; CHECK-NEXT: %11 = ashr i32 %2, %3
+; CHECK-NEXT: %12 = and i32 %2, %3
+; CHECK-NEXT: %13 = or i32 %2, %3
+; CHECK-NEXT: %14 = xor i32 %2, %3
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @TestSavedPtrToInt() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = ptrtoint i8* %1 to i32
+ %3 = add i32 %2, 0
+ %4 = call i32 @bar(i32 %2)
+ ret void
+}
+
+; CHECK: define void @TestSavedPtrToInt() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = ptrtoint i8* %1 to i32
+; CHECK-NEXT: %3 = add i32 %2, 0
+; CHECK-NEXT: %4 = call i32 @bar(i32 %2)
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @CastSelect() {
+ %1 = alloca i8, i32 4, align 8
+ %2 = select i1 true, i32 1, i32 2
+ %3 = ptrtoint i8* %1 to i32
+ %4 = select i1 true, i32 %3, i32 2
+ %5 = ptrtoint [4 x i8]* @bytes to i32
+ %6 = select i1 true, i32 1, i32 %5
+ %7 = select i1 true, i32 %3, i32 %5
+ %8 = select i1 true, i32 %5, i32 %3
+ ret void
+}
+
+; CHECK: define void @CastSelect() {
+; CHECK-NEXT: %1 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %2 = select i1 true, i32 1, i32 2
+; CHECK-NEXT: %3 = ptrtoint i8* %1 to i32
+; CHECK-NEXT: %4 = select i1 true, i32 %3, i32 2
+; CHECK-NEXT: %5 = ptrtoint [4 x i8]* @bytes to i32
+; CHECK-NEXT: %6 = select i1 true, i32 1, i32 %5
+; CHECK-NEXT: %7 = select i1 true, i32 %3, i32 %5
+; CHECK-NEXT: %8 = select i1 true, i32 %5, i32 %3
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @PhiBackwardRefs(i1) {
+ %2 = alloca i8, i32 4, align 8
+ %3 = alloca i8, i32 4, align 8
+ br i1 %0, label %true, label %false
+
+true: ; preds = %1
+ %4 = bitcast i8* %2 to i32*
+ %5 = load i32* %4
+ %6 = ptrtoint i8* %3 to i32
+ br label %merge
+
+false: ; preds = %1
+ %7 = bitcast i8* %2 to i32*
+ %8 = load i32* %7
+ %9 = ptrtoint i8* %3 to i32
+ br label %merge
+
+merge: ; preds = %false, %true
+ %10 = phi i32 [ %6, %true ], [ %9, %false ]
+ %11 = phi i32 [ %5, %true ], [ %8, %false ]
+ ret void
+}
+
+; CHECK: define void @PhiBackwardRefs(i1) {
+; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %3 = alloca i8, i32 4, align 8
+; CHECK-NEXT: br i1 %0, label %true, label %false
+; CHECK: true: ; preds = %1
+; CHECK-NEXT: %4 = bitcast i8* %2 to i32*
+; CHECK-NEXT: %5 = load i32* %4
+; CHECK-NEXT: %6 = ptrtoint i8* %3 to i32
+; CHECK-NEXT: br label %merge
+; CHECK: false: ; preds = %1
+; CHECK-NEXT: %7 = bitcast i8* %2 to i32*
+; CHECK-NEXT: %8 = load i32* %7
+; CHECK-NEXT: %9 = ptrtoint i8* %3 to i32
+; CHECK-NEXT: br label %merge
+; CHECK: merge: ; preds = %false, %true
+; CHECK-NEXT: %10 = phi i32 [ %6, %true ], [ %9, %false ]
+; CHECK-NEXT: %11 = phi i32 [ %5, %true ], [ %8, %false ]
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @PhiForwardRefs(i1) {
+ br label %start
+
+merge: ; preds = %false, %true
+ %2 = phi i32 [ %11, %true ], [ %11, %false ]
+ %3 = phi i32 [ %5, %true ], [ %7, %false ]
+ ret void
+
+true: ; preds = %start
+ %4 = inttoptr i32 %9 to i32*
+ %5 = load i32* %4
+ br label %merge
+
+false: ; preds = %start
+ %6 = inttoptr i32 %9 to i32*
+ %7 = load i32* %6
+ br label %merge
+
+start: ; preds = %1
+ %8 = alloca i8, i32 4, align 8
+ %9 = ptrtoint i8* %8 to i32
+ %10 = alloca i8, i32 4, align 8
+ %11 = ptrtoint i8* %10 to i32
+ br i1 %0, label %true, label %false
+}
+
+; CHECK: define void @PhiForwardRefs(i1) {
+; CHECK-NEXT: br label %start
+; CHECK: merge: ; preds = %false, %true
+; CHECK-NEXT: %2 = phi i32 [ %11, %true ], [ %11, %false ]
+; CHECK-NEXT: %3 = phi i32 [ %5, %true ], [ %7, %false ]
+; CHECK-NEXT: ret void
+; CHECK: true: ; preds = %start
+; CHECK-NEXT: %4 = inttoptr i32 %9 to i32*
+; CHECK-NEXT: %5 = load i32* %4
+; CHECK-NEXT: br label %merge
+; CHECK: false: ; preds = %start
+; CHECK-NEXT: %6 = inttoptr i32 %9 to i32*
+; CHECK-NEXT: %7 = load i32* %6
+; CHECK-NEXT: br label %merge
+; CHECK: start: ; preds = %1
+; CHECK-NEXT: %8 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %9 = ptrtoint i8* %8 to i32
+; CHECK-NEXT: %10 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %11 = ptrtoint i8* %10 to i32
+; CHECK-NEXT: br i1 %0, label %true, label %false
+; CHECK-NEXT: }
+
+define void @PhiMergeCast(i1) {
+ %2 = alloca i8, i32 4, align 8
+ %3 = alloca i8, i32 4, align 8
+ br i1 %0, label %true, label %false
+
+true: ; preds = %1
+ %4 = bitcast i8* %2 to i32*
+ %5 = load i32* %4
+ %6 = ptrtoint i8* %3 to i32
+ %7 = add i32 %5, %6
+ br label %merge
+
+false: ; preds = %1
+ %8 = bitcast i8* %2 to i32*
+ %9 = load i32* %8
+ %10 = ptrtoint i8* %3 to i32
+ br label %merge
+
+merge: ; preds = %false, %true
+ %11 = phi i32 [ %6, %true ], [ %10, %false ]
+ %12 = phi i32 [ %5, %true ], [ %9, %false ]
+ ret void
+}
+
+; CHECK: define void @PhiMergeCast(i1) {
+; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
+; CHECK-NEXT: %3 = alloca i8, i32 4, align 8
+; CHECK-NEXT: br i1 %0, label %true, label %false
+; CHECK: true: ; preds = %1
+; CHECK-NEXT: %4 = bitcast i8* %2 to i32*
+; CHECK-NEXT: %5 = load i32* %4
+; CHECK-NEXT: %6 = ptrtoint i8* %3 to i32
+; CHECK-NEXT: %7 = add i32 %5, %6
+; CHECK-NEXT: br label %merge
+; CHECK: false: ; preds = %1
+; CHECK-NEXT: %8 = bitcast i8* %2 to i32*
+; CHECK-NEXT: %9 = load i32* %8
+; CHECK-NEXT: %10 = ptrtoint i8* %3 to i32
+; CHECK-NEXT: br label %merge
+; CHECK: merge: ; preds = %false, %true
+; CHECK-NEXT: %11 = phi i32 [ %6, %true ], [ %10, %false ]
+; CHECK-NEXT: %12 = phi i32 [ %5, %true ], [ %9, %false ]
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @LongReachingCasts(i1) {
+ %2 = alloca i8, i32 4, align 8
+ br i1 %0, label %Split1, label %Split2
+
+Split1: ; preds = %1
+ br i1 %0, label %b1, label %b2
+
+Split2: ; preds = %1
+ br i1 %0, label %b3, label %b4
+
+b1: ; preds = %Split1
+ %3 = ptrtoint i8* %2 to i32
+ %4 = bitcast [4 x i8]* @bytes to i32*
+ store i32 %3, i32* %4, align 1
+ store i32 %3, i32* %4, align 1
+ ret void
+
+b2: ; preds = %Split1
+ %5 = ptrtoint i8* %2 to i32
+ %6 = bitcast [4 x i8]* @bytes to i32*
+ store i32 %5, i32* %6, align 1
+ store i32 %5, i32* %6, align 1
+ ret void
+
+b3: ; preds = %Split2
+ %7 = ptrtoint i8* %2 to i32
+ %8 = bitcast [4 x i8]* @bytes to i32*
+ store i32 %7, i32* %8, align 1
+ store i32 %7, i32* %8, align 1
+ ret void
+
+b4: ; preds = %Split2
+ %9 = ptrtoint i8* %2 to i32
+ %10 = bitcast [4 x i8]* @bytes to i32*
+ store i32 %9, i32* %10, align 1
+ store i32 %9, i32* %10, align 1
+ ret void
+}
+
+; CHECK: define void @LongReachingCasts(i1) {
+; CHECK-NEXT: %2 = alloca i8, i32 4, align 8
+; CHECK-NEXT: br i1 %0, label %Split1, label %Split2
+; CHECK: Split1: ; preds = %1
+; CHECK-NEXT: br i1 %0, label %b1, label %b2
+; CHECK: Split2: ; preds = %1
+; CHECK-NEXT: br i1 %0, label %b3, label %b4
+; CHECK: b1: ; preds = %Split1
+; CHECK-NEXT: %3 = ptrtoint i8* %2 to i32
+; CHECK-NEXT: %4 = bitcast [4 x i8]* @bytes to i32*
+; CHECK-NEXT: store i32 %3, i32* %4, align 1
+; CHECK-NEXT: store i32 %3, i32* %4, align 1
+; CHECK-NEXT: ret void
+; CHECK: b2: ; preds = %Split1
+; CHECK-NEXT: %5 = ptrtoint i8* %2 to i32
+; CHECK-NEXT: %6 = bitcast [4 x i8]* @bytes to i32*
+; CHECK-NEXT: store i32 %5, i32* %6, align 1
+; CHECK-NEXT: store i32 %5, i32* %6, align 1
+; CHECK-NEXT: ret void
+; CHECK: b3: ; preds = %Split2
+; CHECK-NEXT: %7 = ptrtoint i8* %2 to i32
+; CHECK-NEXT: %8 = bitcast [4 x i8]* @bytes to i32*
+; CHECK-NEXT: store i32 %7, i32* %8, align 1
+; CHECK-NEXT: store i32 %7, i32* %8, align 1
+; CHECK-NEXT: ret void
+; CHECK: b4: ; preds = %Split2
+; CHECK-NEXT: %9 = ptrtoint i8* %2 to i32
+; CHECK-NEXT: %10 = bitcast [4 x i8]* @bytes to i32*
+; CHECK-NEXT: store i32 %9, i32* %10, align 1
+; CHECK-NEXT: store i32 %9, i32* %10, align 1
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+define void @SwitchVariable(i32) {
+ switch i32 %0, label %l1 [
+ i32 1, label %l2
+ i32 2, label %l2
+ i32 4, label %l3
+ i32 5, label %l3
+ ]
+ ; No predecessors!
+ br label %end
+
+l1: ; preds = %1
+ br label %end
+
+l2: ; preds = %1, %1
+ br label %end
+
+l3: ; preds = %1, %1
+ br label %end
+
+end: ; preds = %l3, %l2, %l1, %2
+ ret void
+}
+
+; CHECK: define void @SwitchVariable(i32) {
+; CHECK-NEXT: switch i32 %0, label %l1 [
+; CHECK-NEXT: i32 1, label %l2
+; CHECK-NEXT: i32 2, label %l2
+; CHECK-NEXT: i32 4, label %l3
+; CHECK-NEXT: i32 5, label %l3
+; CHECK-NEXT: ]
+; CHECK-NEXT: ; No predecessors!
+; CHECK-NEXT: br label %end
+; CHECK: l1: ; preds = %1
+; CHECK-NEXT: br label %end
+; CHECK: l2: ; preds = %1, %1
+; CHECK-NEXT: br label %end
+; CHECK: l3: ; preds = %1, %1
+; CHECK-NEXT: br label %end
+; CHECK: end: ; preds = %l3, %l2, %l1, %2
+; CHECK-NEXT: ret void
+; CHECK-NEXT: }
+
+; DUMP: PNaCl Version: 2
+
+; DUMP: <MODULE_BLOCK>
+; DUMP-NEXT: <VERSION op0=1/>
+; DUMP-NEXT: <BLOCKINFO_BLOCK/>
+; DUMP-NEXT: <TYPE_BLOCK_ID>
+; DUMP-NEXT: <NUMENTRY op0=9/>
+; DUMP-NEXT: <INTEGER op0=32/>
+; DUMP-NEXT: <VOID/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: <INTEGER op0=1/>
+; DUMP-NEXT: <FUNCTION op0=0 op1=1/>
+; DUMP-NEXT: <FUNCTION op0=0 op1=1 op2=3/>
+; DUMP-NEXT: <FUNCTION op0=0 op1=0 op2=0/>
+; DUMP-NEXT: <FUNCTION op0=0 op1=1 op2=0/>
+; DUMP-NEXT: <FUNCTION op0=0 op1=0/>
+; DUMP-NEXT: </TYPE_BLOCK_ID>
+; DUMP-NEXT: <FUNCTION op0=6 op1=0 op2=1 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=7 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=8 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=4 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=5 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <FUNCTION op0=7 op1=0 op2=0 op3=0/>
+; DUMP-NEXT: <GLOBALVAR_BLOCK>
+; DUMP-NEXT: <COUNT op0=16/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <DATA op0=97 op1=98 op2=99 op3=100 op4=101 op5=102
+; DUMP-NEXT: op6=103/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=24/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=1/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <COMPOUND op0=2/>
+; DUMP-NEXT: <DATA op0=102 op1=111 op2=111/>
+; DUMP-NEXT: <RELOC op0=1/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=20/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=24 op1=1/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=24 op1=4294967295/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=20 op1=1/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=20 op1=7/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=20 op1=9/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=23 op1=1/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <RELOC op0=23 op1=4/>
+; DUMP-NEXT: <VAR op0=4 op1=0/>
+; DUMP-NEXT: <RELOC op0=1/>
+; DUMP-NEXT: <VAR op0=0 op1=1/>
+; DUMP-NEXT: <DATA op0=48/>
+; DUMP-NEXT: <VAR op0=0 op1=1/>
+; DUMP-NEXT: <ZEROFILL op0=2/>
+; DUMP-NEXT: <VAR op0=0 op1=0/>
+; DUMP-NEXT: <DATA op0=97 op1=98 op2=99 op3=100/>
+; DUMP-NEXT: </GLOBALVAR_BLOCK>
+; DUMP-NEXT: <VALUE_SYMTAB>
+; DUMP-NEXT: <ENTRY op0=2 op1=65 op2=108 op3=108 op4=111 op5=99
+; DUMP-NEXT: op6=67 op7=97 op8=115 op9=116 op10=83 op11=105
+; DUMP-NEXT: op12=109 op13=112 op14=108 op15=101/>
+; DUMP-NEXT: <ENTRY op0=10 op1=67 op2=97 op3=115 op4=116 op5=65
+; DUMP-NEXT: op6=100 op7=100 op8=65 op9=108 op10=108 op11=111
+; DUMP-NEXT: op12=99 op13=97/>
+; DUMP-NEXT: <ENTRY op0=20 op1=98 op2=121 op3=116 op4=101 op5=115
+; DUMP-NEXT: op6=55/>
+; DUMP-NEXT: <ENTRY op0=23 op1=99 op2=111 op3=109 op4=112 op5=111
+; DUMP-NEXT: op6=117 op7=110 op8=100/>
+; DUMP-NEXT: <ENTRY op0=5 op1=65 op2=108 op3=108 op4=111 op5=99
+; DUMP-NEXT: op6=67 op7=97 op8=115 op9=116 op10=79 op11=112
+; DUMP-NEXT: op12=116/>
+; DUMP-NEXT: <ENTRY op0=32 op1=112 op2=116 op3=114 op4=95 op5=116
+; DUMP-NEXT: op6=111 op7=95 op8=102 op9=117 op10=110 op11=99
+; DUMP-NEXT: op12=95 op13=97 op14=108 op15=105 op16=103 op17=110/>
+; DUMP-NEXT: <ENTRY op0=18 op1=76 op2=111 op3=110 op4=103 op5=82
+; DUMP-NEXT: op6=101 op7=97 op8=99 op9=104 op10=105 op11=110
+; DUMP-NEXT: op12=103 op13=67 op14=97 op15=115 op16=116 op17=115/>
+; DUMP-NEXT: <ENTRY op0=15 op1=80 op2=104 op3=105 op4=66 op5=97
+; DUMP-NEXT: op6=99 op7=107 op8=119 op9=97 op10=114 op11=100
+; DUMP-NEXT: op12=82 op13=101 op14=102 op15=115/>
+; DUMP-NEXT: <ENTRY op0=26 op1=97 op2=100 op3=100 op4=101 op5=110
+; DUMP-NEXT: op6=100 op7=95 op8=110 op9=101 op10=103 op11=97
+; DUMP-NEXT: op12=116 op13=105 op14=118 op15=101/>
+; DUMP-NEXT: <ENTRY op0=6 op1=65 op2=108 op3=108 op4=111 op5=99
+; DUMP-NEXT: op6=66 op7=105 op8=116 op9=99 op10=97 op11=115
+; DUMP-NEXT: op12=116/>
+; DUMP-NEXT: <ENTRY op0=24 op1=112 op2=116 op3=114/>
+; DUMP-NEXT: <ENTRY op0=25 op1=97 op2=100 op3=100 op4=101 op5=110
+; DUMP-NEXT: op6=100 op7=95 op8=112 op9=116 op10=114/>
+; DUMP-NEXT: <ENTRY op0=19 op1=83 op2=119 op3=105 op4=116 op5=99
+; DUMP-NEXT: op6=104 op7=86 op8=97 op9=114 op10=105 op11=97
+; DUMP-NEXT: op12=98 op13=108 op14=101/>
+; DUMP-NEXT: <ENTRY op0=0 op1=98 op2=97 op3=114/>
+; DUMP-NEXT: <ENTRY op0=33 op1=99 op2=104 op3=97 op4=114/>
+; DUMP-NEXT: <ENTRY op0=3 op1=65 op2=108 op3=108 op4=111 op5=99
+; DUMP-NEXT: op6=67 op7=97 op8=115 op9=116 op10=83 op11=105
+; DUMP-NEXT: op12=109 op13=112 op14=108 op15=101 op16=82 op17=101
+; DUMP-NEXT: op18=118 op19=101 op20=114 op21=115 op22=101 op23=100/>
+; DUMP-NEXT: <ENTRY op0=22 op1=112 op2=116 op3=114 op4=95 op5=116
+; DUMP-NEXT: op6=111 op7=95 op8=102 op9=117 op10=110 op11=99/>
+; DUMP-NEXT: <ENTRY op0=12 op1=67 op2=97 op3=115 op4=116 op5=66
+; DUMP-NEXT: op6=105 op7=110 op8=111 op9=112/>
+; DUMP-NEXT: <ENTRY op0=11 op1=67 op2=97 op3=115 op4=116 op5=65
+; DUMP-NEXT: op6=100 op7=100 op8=71 op9=108 op10=111 op11=98
+; DUMP-NEXT: op12=97 op13=108/>
+; DUMP-NEXT: <ENTRY op0=16 op1=80 op2=104 op3=105 op4=70 op5=111
+; DUMP-NEXT: op6=114 op7=119 op8=97 op9=114 op10=100 op11=82
+; DUMP-NEXT: op12=101 op13=102 op14=115/>
+; DUMP-NEXT: <ENTRY op0=35 op1=98 op2=121 op3=116 op4=101 op5=115/>
+; DUMP-NEXT: <ENTRY op0=4 op1=65 op2=108 op3=108 op4=111 op5=99
+; DUMP-NEXT: op6=67 op7=97 op8=115 op9=116 op10=68 op11=101
+; DUMP-NEXT: op12=108 op13=101 op14=116 op15=101/>
+; DUMP-NEXT: <ENTRY op0=14 op1=67 op2=97 op3=115 op4=116 op5=83
+; DUMP-NEXT: op6=101 op7=108 op8=101 op9=99 op10=116/>
+; DUMP-NEXT: <ENTRY op0=1 op1=102 op2=117 op3=110 op4=99/>
+; DUMP-NEXT: <ENTRY op0=21 op1=112 op2=116 op3=114 op4=95 op5=116
+; DUMP-NEXT: op6=111 op7=95 op8=112 op9=116 op10=114/>
+; DUMP-NEXT: <ENTRY op0=27 op1=97 op2=100 op3=100 op4=101 op5=110
+; DUMP-NEXT: op6=100 op7=95 op8=97 op9=114 op10=114 op11=97
+; DUMP-NEXT: op12=121 op13=49/>
+; DUMP-NEXT: <ENTRY op0=28 op1=97 op2=100 op3=100 op4=101 op5=110
+; DUMP-NEXT: op6=100 op7=95 op8=97 op9=114 op10=114 op11=97
+; DUMP-NEXT: op12=121 op13=50/>
+; DUMP-NEXT: <ENTRY op0=29 op1=97 op2=100 op3=100 op4=101 op5=110
+; DUMP-NEXT: op6=100 op7=95 op8=97 op9=114 op10=114 op11=97
+; DUMP-NEXT: op12=121 op13=51/>
+; DUMP-NEXT: <ENTRY op0=34 op1=115 op2=104 op3=111 op4=114 op5=116/>
+; DUMP-NEXT: <ENTRY op0=30 op1=97 op2=100 op3=100 op4=101 op5=110
+; DUMP-NEXT: op6=100 op7=95 op8=115 op9=116 op10=114 op11=117
+; DUMP-NEXT: op12=99 op13=116 op14=49/>
+; DUMP-NEXT: <ENTRY op0=31 op1=97 op2=100 op3=100 op4=101 op5=110
+; DUMP-NEXT: op6=100 op7=95 op8=115 op9=116 op10=114 op11=117
+; DUMP-NEXT: op12=99 op13=116 op14=50/>
+; DUMP-NEXT: <ENTRY op0=13 op1=84 op2=101 op3=115 op4=116 op5=83
+; DUMP-NEXT: op6=97 op7=118 op8=101 op9=100 op10=80 op11=116
+; DUMP-NEXT: op12=114 op13=84 op14=111 op15=73 op16=110 op17=116/>
+; DUMP-NEXT: <ENTRY op0=17 op1=80 op2=104 op3=105 op4=77 op5=101
+; DUMP-NEXT: op6=114 op7=103 op8=101 op9=67 op10=97 op11=115
+; DUMP-NEXT: op12=116/>
+; DUMP-NEXT: <ENTRY op0=8 op1=83 op2=116 op3=111 op4=114 op5=101
+; DUMP-NEXT: op6=71 op7=108 op8=111 op9=98 op10=97 op11=108
+; DUMP-NEXT: op12=67 op13=97 op14=115 op15=116 op16=115 op17=82
+; DUMP-NEXT: op18=101 op19=118 op20=101 op21=114 op22=115 op23=101
+; DUMP-NEXT: op24=100/>
+; DUMP-NEXT: <ENTRY op0=7 op1=83 op2=116 op3=111 op4=114 op5=101
+; DUMP-NEXT: op6=71 op7=108 op8=111 op9=98 op10=97 op11=108/>
+; DUMP-NEXT: <ENTRY op0=9 op1=83 op2=116 op3=111 op4=114 op5=101
+; DUMP-NEXT: op6=71 op7=108 op8=111 op9=98 op10=97 op11=108
+; DUMP-NEXT: op12=67 op13=97 op14=115 op15=116 op16=80 op17=116
+; DUMP-NEXT: op18=114 op19=50 op20=73 op21=110 op22=116/>
+; DUMP-NEXT: </VALUE_SYMTAB>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_STORE op0=3 op1=1 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_STORE op0=3 op1=1 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_STORE op0=3 op1=1 op2=1/>
+; DUMP-NEXT: <INST_STORE op0=3 op1=1 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: <INTEGER op0=2/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
+; DUMP-NEXT: <INST_BINOP op0=4 op1=2 op2=0/>
+; DUMP-NEXT: <INST_STORE op0=6 op1=2 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_STORE op0=1 op1=3 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_STORE op0=1 op1=3 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: <INTEGER op0=0/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
+; DUMP-NEXT: <INST_STORE op0=1 op1=4 op2=1/>
+; DUMP-NEXT: <INST_RET op0=2/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=2/>
+; DUMP-NEXT: <INTEGER op0=4/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_BINOP op0=4 op1=3 op2=0/>
+; DUMP-NEXT: <INST_BINOP op0=2 op1=4 op2=0/>
+; DUMP-NEXT: <INST_BINOP op0=6 op1=3 op2=0/>
+; DUMP-NEXT: <INST_BINOP op0=4 op1=4 op2=0/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=2/>
+; DUMP-NEXT: <INTEGER op0=4/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_BINOP op0=2 op1=1 op2=0/>
+; DUMP-NEXT: <INST_BINOP op0=4 op1=2 op2=0/>
+; DUMP-NEXT: <INST_BINOP op0=4 op1=5 op2=0/>
+; DUMP-NEXT: <INST_BINOP op0=6 op1=6 op2=0/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_BINOP op0=1 op1=3 op2=1/>
+; DUMP-NEXT: <INST_BINOP op0=2 op1=4 op2=2/>
+; DUMP-NEXT: <INST_BINOP op0=3 op1=5 op2=3/>
+; DUMP-NEXT: <INST_BINOP op0=4 op1=6 op2=5/>
+; DUMP-NEXT: <INST_BINOP op0=5 op1=7 op2=6/>
+; DUMP-NEXT: <INST_BINOP op0=6 op1=8 op2=7/>
+; DUMP-NEXT: <INST_BINOP op0=7 op1=9 op2=8/>
+; DUMP-NEXT: <INST_BINOP op0=8 op1=10 op2=9/>
+; DUMP-NEXT: <INST_BINOP op0=9 op1=11 op2=10/>
+; DUMP-NEXT: <INST_BINOP op0=10 op1=12 op2=11/>
+; DUMP-NEXT: <INST_BINOP op0=11 op1=13 op2=12/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: <INTEGER op0=0/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
+; DUMP-NEXT: <INST_BINOP op0=1 op1=2 op2=0/>
+; DUMP-NEXT: <INST_CALL op0=0 op1=40 op2=2/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=1/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=2/>
+; DUMP-NEXT: <INTEGER op0=4/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: <SETTYPE op0=3/>
+; DUMP-NEXT: <INTEGER op0=3/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
+; DUMP-NEXT: <INST_VSELECT op0=5 op1=4 op2=2/>
+; DUMP-NEXT: <INST_VSELECT op0=2 op1=5 op2=3/>
+; DUMP-NEXT: <INST_VSELECT op0=7 op1=8 op2=4/>
+; DUMP-NEXT: <INST_VSELECT op0=4 op1=9 op2=5/>
+; DUMP-NEXT: <INST_VSELECT op0=10 op1=5 op2=6/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=4/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
+; DUMP-NEXT: <INST_BR op0=1 op1=2 op2=4/>
+; DUMP-NEXT: <INST_LOAD op0=2 op1=0 op2=0/>
+; DUMP-NEXT: <INST_BR op0=3/>
+; DUMP-NEXT: <INST_LOAD op0=3 op1=0 op2=0/>
+; DUMP-NEXT: <INST_BR op0=3/>
+; DUMP-NEXT: <INST_PHI op0=0 op1=6 op2=1 op3=6 op4=2/>
+; DUMP-NEXT: <INST_PHI op0=0 op1=6 op2=1 op3=4 op4=2/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=5/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_BR op0=4/>
+; DUMP-NEXT: <FORWARDTYPEREF op0=43 op1=0/>
+; DUMP-NEXT: <INST_PHI op0=0 op1=11 op2=2 op3=11 op4=3/>
+; DUMP-NEXT: <FORWARDTYPEREF op0=40 op1=0/>
+; DUMP-NEXT: <FORWARDTYPEREF op0=41 op1=0/>
+; DUMP-NEXT: <INST_PHI op0=0 op1=3 op2=2 op3=5 op4=3/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: <FORWARDTYPEREF op0=42 op1=0/>
+; DUMP-NEXT: <INST_LOAD op0=4294967294 op1=0 op2=0/>
+; DUMP-NEXT: <INST_BR op0=1/>
+; DUMP-NEXT: <INST_LOAD op0=4294967295 op1=0 op2=0/>
+; DUMP-NEXT: <INST_BR op0=1/>
+; DUMP-NEXT: <INST_ALLOCA op0=5 op1=4/>
+; DUMP-NEXT: <INST_ALLOCA op0=6 op1=4/>
+; DUMP-NEXT: <INST_BR op0=2 op1=3 op2=8/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=4/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_ALLOCA op0=2 op1=4/>
+; DUMP-NEXT: <INST_BR op0=1 op1=2 op2=4/>
+; DUMP-NEXT: <INST_LOAD op0=2 op1=0 op2=0/>
+; DUMP-NEXT: <INST_BINOP op0=1 op1=2 op2=0/>
+; DUMP-NEXT: <INST_BR op0=3/>
+; DUMP-NEXT: <INST_LOAD op0=4 op1=0 op2=0/>
+; DUMP-NEXT: <INST_BR op0=3/>
+; DUMP-NEXT: <INST_PHI op0=0 op1=8 op2=1 op3=8 op4=2/>
+; DUMP-NEXT: <INST_PHI op0=0 op1=8 op2=1 op3=4 op4=2/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=7/>
+; DUMP-NEXT: <CONSTANTS_BLOCK>
+; DUMP-NEXT: <SETTYPE op0=0/>
+; DUMP-NEXT: <INTEGER op0=8/>
+; DUMP-NEXT: </CONSTANTS_BLOCK>
+; DUMP-NEXT: <INST_ALLOCA op0=1 op1=4/>
+; DUMP-NEXT: <INST_BR op0=1 op1=2 op2=3/>
+; DUMP-NEXT: <INST_BR op0=3 op1=4 op2=3/>
+; DUMP-NEXT: <INST_BR op0=5 op1=6 op2=3/>
+; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
+; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
+; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
+; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
+; DUMP-NEXT: <INST_STORE op0=4 op1=1 op2=1/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT: <FUNCTION_BLOCK>
+; DUMP-NEXT: <DECLAREBLOCKS op0=6/>
+; DUMP-NEXT: <INST_SWITCH op0=0 op1=1 op2=2 op3=4 op4=1 op5=1
+; DUMP-NEXT: op6=2 op7=3 op8=1 op9=1 op10=4 op11=3
+; DUMP-NEXT: op12=1 op13=1 op14=8 op15=4 op16=1 op17=1
+; DUMP-NEXT: op18=10 op19=4/>
+; DUMP-NEXT: <INST_BR op0=5/>
+; DUMP-NEXT: <INST_BR op0=5/>
+; DUMP-NEXT: <INST_BR op0=5/>
+; DUMP-NEXT: <INST_BR op0=5/>
+; DUMP-NEXT: <INST_RET/>
+; DUMP-NEXT: </FUNCTION_BLOCK>
+; DUMP-NEXT:</MODULE_BLOCK>
+
+
« no previous file with comments | « test/NaCl/Bitcode/bcanalyzer-width.ll ('k') | test/NaCl/Bitcode/bcdist.ll » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698