diff options
115 files changed, 2572 insertions, 3133 deletions
diff --git a/test/DebugInfo/funccall.ll b/test/DebugInfo/funccall.ll index cb5dab6..47fe4c2 100644 --- a/test/DebugInfo/funccall.ll +++ b/test/DebugInfo/funccall.ll @@ -1,166 +1,147 @@ -;; RUN: llvm-upgrade < %s | llvm-as | llc +;; RUN: llvm-as < %s | llc + %llvm.dbg.anchor.type = type { i32, i32 } + %llvm.dbg.basictype.type = type { i32, { }*, i8*, { }*, i32, i64, i64, i64, i32, i32 } + %llvm.dbg.compile_unit.type = type { i32, { }*, i32, i8*, i8*, i8* } + %llvm.dbg.global_variable.type = type { i32, { }*, { }*, i8*, i8*, i8*, { }*, i32, { }*, i1, i1, { }* } + %llvm.dbg.subprogram.type = type { i32, { }*, { }*, i8*, i8*, i8*, { }*, i32, { }*, i1, i1 } + %llvm.dbg.variable.type = type { i32, { }*, i8*, { }*, i32, { }* } +@llvm.dbg.subprograms = linkonce constant %llvm.dbg.anchor.type { i32 393216, i32 46 }, section "llvm.metadata" ; <%llvm.dbg.anchor.type*> [#uses=1] +@llvm.dbg.compile_units = linkonce constant %llvm.dbg.anchor.type { i32 393216, i32 17 }, section "llvm.metadata" ; <%llvm.dbg.anchor.type*> [#uses=1] +@llvm.dbg.global_variables = linkonce constant %llvm.dbg.anchor.type { i32 393216, i32 52 }, section "llvm.metadata" ; <%llvm.dbg.anchor.type*> [#uses=1] +@llvm.dbg.subprogram = internal constant %llvm.dbg.subprogram.type { + i32 393262, + { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.subprograms to { }*), + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i8* getelementptr ([4 x i8]* @str, i32 0, i32 0), + i8* getelementptr ([4 x i8]* @str, i32 0, i32 0), + i8* null, + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i32 4, + { }* null, + i1 false, + i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@str = internal constant [4 x i8] c"foo\00", section "llvm.metadata" ; <[4 x i8]*> [#uses=1] +@llvm.dbg.compile_unit = internal constant %llvm.dbg.compile_unit.type { + i32 393233, + { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.compile_units to { }*), + i32 1, + i8* getelementptr ([11 x i8]* @str1, i32 0, i32 0), + i8* getelementptr ([50 x i8]* @str2, i32 0, i32 0), + i8* getelementptr ([45 x i8]* @str3, i32 0, i32 0) }, section "llvm.metadata" ; <%llvm.dbg.compile_unit.type*> [#uses=1] +@str1 = internal constant [11 x i8] c"funccall.c\00", section "llvm.metadata" ; <[11 x i8]*> [#uses=1] +@str2 = internal constant [50 x i8] c"/Volumes/Big2/llvm/llvm/test/Regression/Debugger/\00", section "llvm.metadata" ; <[50 x i8]*> [#uses=1] +@str3 = internal constant [45 x i8] c"4.0.1 LLVM (Apple Computer, Inc. build 5421)\00", section "llvm.metadata" ; <[45 x i8]*> [#uses=1] +@llvm.dbg.variable = internal constant %llvm.dbg.variable.type { + i32 393472, + { }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*), + i8* getelementptr ([2 x i8]* @str4, i32 0, i32 0), + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i32 5, + { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*) }, section "llvm.metadata" ; <%llvm.dbg.variable.type*> [#uses=1] +@str4 = internal constant [2 x i8] c"t\00", section "llvm.metadata" ; <[2 x i8]*> [#uses=1] +@llvm.dbg.basictype = internal constant %llvm.dbg.basictype.type { + i32 393252, + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i8* getelementptr ([4 x i8]* @str15, i32 0, i32 0), + { }* null, + i32 0, + i64 32, + i64 32, + i64 0, + i32 0, + i32 5 }, section "llvm.metadata" ; <%llvm.dbg.basictype.type*> [#uses=1] +@str15 = internal constant [4 x i8] c"int\00", section "llvm.metadata" ; <[4 x i8]*> [#uses=1] +@llvm.dbg.subprogram2 = internal constant %llvm.dbg.subprogram.type { + i32 393262, + { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.subprograms to { }*), + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i8* getelementptr ([5 x i8]* @str6, i32 0, i32 0), + i8* getelementptr ([5 x i8]* @str6, i32 0, i32 0), + i8* null, + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i32 8, + { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), + i1 false, + i1 true }, section "llvm.metadata" ; <%llvm.dbg.subprogram.type*> [#uses=1] +@str6 = internal constant [5 x i8] c"main\00", section "llvm.metadata" ; <[5 x i8]*> [#uses=1] +@llvm.dbg.variable3 = internal constant %llvm.dbg.variable.type { + i32 393474, + { }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram2 to { }*), + i8* getelementptr ([7 x i8]* @str7, i32 0, i32 0), + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i32 8, + { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*) }, section "llvm.metadata" ; <%llvm.dbg.variable.type*> [#uses=1] +@str7 = internal constant [7 x i8] c"retval\00", section "llvm.metadata" ; <[7 x i8]*> [#uses=1] +@llvm.dbg.global_variable = internal constant %llvm.dbg.global_variable.type { + i32 393268, + { }* bitcast (%llvm.dbg.anchor.type* @llvm.dbg.global_variables to { }*), + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i8* getelementptr ([2 x i8]* @str4, i32 0, i32 0), + i8* getelementptr ([2 x i8]* @str4, i32 0, i32 0), + i8* null, + { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*), + i32 2, + { }* bitcast (%llvm.dbg.basictype.type* @llvm.dbg.basictype to { }*), + i1 true, + i1 true, + { }* bitcast (i32* @q to { }*) }, section "llvm.metadata" ; <%llvm.dbg.global_variable.type*> [#uses=0] +@str4.upgrd.1 = internal constant [2 x i8] c"q\00", section "llvm.metadata" ; <[2 x i8]*> [#uses=0] +@q = internal global i32 0 ; <i32*> [#uses=7] -;; Debugger type declarations -%llvm.dbg.anchor.type = type { uint, uint } -%llvm.dbg.basictype.type = type { uint, { }*, sbyte*, { }*, uint, ulong, ulong, ulong, uint, uint } -%llvm.dbg.compile_unit.type = type { uint, { }*, uint, sbyte*, sbyte*, sbyte* } -%llvm.dbg.global_variable.type = type { uint, { }*, { }*, sbyte*, sbyte*, sbyte*, { }*, uint, { }*, bool, bool, { }* } -%llvm.dbg.subprogram.type = type { uint, { }*, { }*, sbyte*, sbyte*, sbyte*, { }*, uint, { }*, bool, bool } -%llvm.dbg.variable.type = type { uint, { }*, sbyte*, { }*, uint, { }* } +declare void @llvm.dbg.func.start({ }*) -;; Debugger intrinsic declarations... -declare void %llvm.dbg.func.start({ }*) -declare void %llvm.dbg.stoppoint(uint, uint, { }*) -declare void %llvm.dbg.declare({ }*, { }*) -declare void %llvm.dbg.region.start({ }*) -declare void %llvm.dbg.region.end({ }*) +declare void @llvm.dbg.stoppoint(i32, i32, { }*) -;; Debugger anchors -%llvm.dbg.subprograms = linkonce constant %llvm.dbg.anchor.type { - uint 393216, ;; DW_TAG_anchor | version(6) - uint 46 }, section "llvm.metadata" ;; DW_TAG_subprogram -%llvm.dbg.compile_units = linkonce constant %llvm.dbg.anchor.type { - uint 393216, ;; DW_TAG_anchor | version(6) - uint 17 }, section "llvm.metadata" ;; DW_TAG_compile_unit -%llvm.dbg.global_variables = linkonce constant %llvm.dbg.anchor.type { - uint 393216, ;; DW_TAG_anchor | version(6) - uint 52 }, section "llvm.metadata" ;; DW_TAG_variable +declare void @llvm.dbg.declare({ }*, { }*) -;; Debug info -%llvm.dbg.subprogram = internal constant %llvm.dbg.subprogram.type { - uint 393262, ;; DW_TAG_subprogram | version(6) - { }* bitcast (%llvm.dbg.anchor.type* %llvm.dbg.subprograms to { }*), ;; Anchor - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Context - sbyte* getelementptr ([4 x sbyte]* %str, int 0, int 0), ;; Name - sbyte* getelementptr ([4 x sbyte]* %str, int 0, int 0), ;; Fully quanlified name - sbyte* null, ;; Linkage name - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Compile unit - uint 4, ;; Line number - { }* null, ;; Type descriptor - bool false, ;; Static? - bool true }, section "llvm.metadata" ;; External? -%str = internal constant [4 x sbyte] c"foo\00", section "llvm.metadata" - -%llvm.dbg.compile_unit = internal constant %llvm.dbg.compile_unit.type { - uint 393233, ;; DW_TAG_compile_unit | version(6) - { }* bitcast (%llvm.dbg.anchor.type* %llvm.dbg.compile_units to { }*), ;; Anchor - uint 1, ;; Language - sbyte* getelementptr ([11 x sbyte]* %str, int 0, int 0), ;; Source file - sbyte* getelementptr ([50 x sbyte]* %str, int 0, int 0), ;; Source file directory - sbyte* getelementptr ([45 x sbyte]* %str, int 0, int 0) }, section "llvm.metadata" ;; Produceer -%str = internal constant [11 x sbyte] c"funccall.c\00", section "llvm.metadata" -%str = internal constant [50 x sbyte] c"/Volumes/Big2/llvm/llvm/test/Regression/Debugger/\00", section "llvm.metadata" -%str = internal constant [45 x sbyte] c"4.0.1 LLVM (Apple Computer, Inc. build 5421)\00", section "llvm.metadata" +declare void @llvm.dbg.region.start({ }*) -%llvm.dbg.variable = internal constant %llvm.dbg.variable.type { - uint 393472, ;; DW_TAG_auto_variable | version(6) - { }* bitcast (%llvm.dbg.subprogram.type* %llvm.dbg.subprogram to { }*), ;; Context - sbyte* getelementptr ([2 x sbyte]* %str, int 0, int 0), ;; Name - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Compile unit - uint 5, ;; Line number - { }* bitcast (%llvm.dbg.basictype.type* %llvm.dbg.basictype to { }*) }, section "llvm.metadata" ;; Type -%str = internal constant [2 x sbyte] c"t\00", section "llvm.metadata" +declare void @llvm.dbg.region.end({ }*) -%llvm.dbg.basictype = internal constant %llvm.dbg.basictype.type { - uint 393252, ;; DW_TAG_base_type | version(6) - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Context - sbyte* getelementptr ([4 x sbyte]* %str1, int 0, int 0), ;; Name - { }* null, ;; Compile Unit - uint 0, ;; Line number - ulong 32, ;; Size in bits - ulong 32, ;; Align in bits - ulong 0, ;; Offset in bits - uint 0, ;; Flags - uint 5 }, section "llvm.metadata" ;; Basic type encoding -%str1 = internal constant [4 x sbyte] c"int\00", section "llvm.metadata" - -%llvm.dbg.subprogram2 = internal constant %llvm.dbg.subprogram.type { - uint 393262, ;; DW_TAG_subprogram | version(6) - { }* bitcast (%llvm.dbg.anchor.type* %llvm.dbg.subprograms to { }*), ;; Anchor - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Context - sbyte* getelementptr ([5 x sbyte]* %str, int 0, int 0), ;; Name - sbyte* getelementptr ([5 x sbyte]* %str, int 0, int 0), ;; Fully quanlified name - sbyte* null, ;; Linkage name - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Compile unit - uint 8, ;; Line number - { }* bitcast (%llvm.dbg.basictype.type* %llvm.dbg.basictype to { }*), ;; Type descriptor - bool false, ;; Static? - bool true }, section "llvm.metadata" ;; External? -%str = internal constant [5 x sbyte] c"main\00", section "llvm.metadata" - -%llvm.dbg.variable3 = internal constant %llvm.dbg.variable.type { - uint 393474, ;; DW_TAG_return_variable | version(6) - { }* bitcast (%llvm.dbg.subprogram.type* %llvm.dbg.subprogram2 to { }*), ;; Context - sbyte* getelementptr ([7 x sbyte]* %str, int 0, int 0), ;; Name - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Compile unit - uint 8, ;; Line number - { }* bitcast (%llvm.dbg.basictype.type* %llvm.dbg.basictype to { }*) }, section "llvm.metadata" ;; Type -%str = internal constant [7 x sbyte] c"retval\00", section "llvm.metadata" - -%llvm.dbg.global_variable = internal constant %llvm.dbg.global_variable.type { - uint 393268, ;; DW_TAG_variable | version(6) - { }* bitcast (%llvm.dbg.anchor.type* %llvm.dbg.global_variables to { }*), ;; Anchor - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Context - sbyte* getelementptr ([2 x sbyte]* %str4, int 0, int 0), ;; Name - sbyte* getelementptr ([2 x sbyte]* %str4, int 0, int 0), ;; Fully qualified name - sbyte* null, ;; Linkage name - { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*),;; Compile unit - uint 2, ;; Line number - { }* bitcast (%llvm.dbg.basictype.type* %llvm.dbg.basictype to { }*), ;; Type - bool true, ;; Static? - bool true, ;; External? - { }* bitcast (int* %q to { }*) }, section "llvm.metadata" ;; Variable -%str4 = internal constant [2 x sbyte] c"q\00", section "llvm.metadata" - -;; Global -%q = internal global int 0 - -implementation - -void %foo() { +define void @foo() { entry: - %t = alloca int, align 4 - "alloca point" = bitcast int 0 to int - call void %llvm.dbg.func.start( { }* bitcast (%llvm.dbg.subprogram.type* %llvm.dbg.subprogram to { }*) ) - call void %llvm.dbg.stoppoint( uint 4, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - %t = bitcast int* %t to { }* - call void %llvm.dbg.declare( { }* %t, { }* bitcast (%llvm.dbg.variable.type* %llvm.dbg.variable to { }*) ) - call void %llvm.dbg.stoppoint( uint 5, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - %tmp = load int* %q - store int %tmp, int* %t - call void %llvm.dbg.stoppoint( uint 6, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - %tmp1 = load int* %t - %tmp2 = add int %tmp1, 1 - store int %tmp2, int* %q - call void %llvm.dbg.stoppoint( uint 7, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - call void %llvm.dbg.region.end( { }* bitcast (%llvm.dbg.subprogram.type* %llvm.dbg.subprogram to { }*) ) + %t = alloca i32, align 4 ; <i32*> [#uses=3] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + call void @llvm.dbg.func.start( { }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*) ) + call void @llvm.dbg.stoppoint( i32 4, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + %t.upgrd.2 = bitcast i32* %t to { }* ; <{ }*> [#uses=1] + call void @llvm.dbg.declare( { }* %t.upgrd.2, { }* bitcast (%llvm.dbg.variable.type* @llvm.dbg.variable to { }*) ) + call void @llvm.dbg.stoppoint( i32 5, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + %tmp = load i32* @q ; <i32> [#uses=1] + store i32 %tmp, i32* %t + call void @llvm.dbg.stoppoint( i32 6, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + %tmp1 = load i32* %t ; <i32> [#uses=1] + %tmp2 = add i32 %tmp1, 1 ; <i32> [#uses=1] + store i32 %tmp2, i32* @q + call void @llvm.dbg.stoppoint( i32 7, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + call void @llvm.dbg.region.end( { }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram to { }*) ) ret void } -int %main() { +define i32 @main() { entry: - %retval = alloca int, align 4 - %tmp = alloca int, align 4 - "alloca point" = bitcast int 0 to int - call void %llvm.dbg.func.start( { }* bitcast (%llvm.dbg.subprogram.type* %llvm.dbg.subprogram2 to { }*) ) - call void %llvm.dbg.stoppoint( uint 8, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - %retval = bitcast int* %retval to { }* - call void %llvm.dbg.declare( { }* %retval, { }* bitcast (%llvm.dbg.variable.type* %llvm.dbg.variable3 to { }*) ) - call void %llvm.dbg.stoppoint( uint 9, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - store int 0, int* %q - call void %llvm.dbg.stoppoint( uint 10, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - call void (...)* bitcast (void ()* %foo to void (...)*)( ) - call void %llvm.dbg.stoppoint( uint 11, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - %tmp = load int* %q - %tmp1 = sub int %tmp, 1 - store int %tmp1, int* %q - call void %llvm.dbg.stoppoint( uint 13, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - %tmp2 = load int* %q - store int %tmp2, int* %tmp - %tmp3 = load int* %tmp - store int %tmp3, int* %retval - %retval = load int* %retval - call void %llvm.dbg.stoppoint( uint 14, uint 0, { }* bitcast (%llvm.dbg.compile_unit.type* %llvm.dbg.compile_unit to { }*) ) - call void %llvm.dbg.region.end( { }* bitcast (%llvm.dbg.subprogram.type* %llvm.dbg.subprogram2 to { }*) ) - ret int %retval + %retval = alloca i32, align 4 ; <i32*> [#uses=3] + %tmp = alloca i32, align 4 ; <i32*> [#uses=2] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + call void @llvm.dbg.func.start( { }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram2 to { }*) ) + call void @llvm.dbg.stoppoint( i32 8, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + %retval.upgrd.3 = bitcast i32* %retval to { }* ; <{ }*> [#uses=1] + call void @llvm.dbg.declare( { }* %retval.upgrd.3, { }* bitcast (%llvm.dbg.variable.type* @llvm.dbg.variable3 to { }*) ) + call void @llvm.dbg.stoppoint( i32 9, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + store i32 0, i32* @q + call void @llvm.dbg.stoppoint( i32 10, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + call void (...)* bitcast (void ()* @foo to void (...)*)( ) + call void @llvm.dbg.stoppoint( i32 11, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + %tmp.upgrd.4 = load i32* @q ; <i32> [#uses=1] + %tmp1 = sub i32 %tmp.upgrd.4, 1 ; <i32> [#uses=1] + store i32 %tmp1, i32* @q + call void @llvm.dbg.stoppoint( i32 13, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + %tmp2 = load i32* @q ; <i32> [#uses=1] + store i32 %tmp2, i32* %tmp + %tmp3 = load i32* %tmp ; <i32> [#uses=1] + store i32 %tmp3, i32* %retval + %retval.upgrd.5 = load i32* %retval ; <i32> [#uses=1] + call void @llvm.dbg.stoppoint( i32 14, i32 0, { }* bitcast (%llvm.dbg.compile_unit.type* @llvm.dbg.compile_unit to { }*) ) + call void @llvm.dbg.region.end( { }* bitcast (%llvm.dbg.subprogram.type* @llvm.dbg.subprogram2 to { }*) ) + ret i32 %retval.upgrd.5 } diff --git a/test/ExecutionEngine/2002-12-16-ArgTest.ll b/test/ExecutionEngine/2002-12-16-ArgTest.ll index 4ef1439..6a8d100 100644 --- a/test/ExecutionEngine/2002-12-16-ArgTest.ll +++ b/test/ExecutionEngine/2002-12-16-ArgTest.ll @@ -1,47 +1,38 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -%.LC0 = internal global [10 x sbyte] c"argc: %d\0A\00" +@.LC0 = internal global [10 x i8] c"argc: %d\0A\00" ; <[10 x i8]*> [#uses=1] -implementation ; Functions: +declare i32 @puts(i8*) -declare int %puts(sbyte*) - -void %getoptions(int* %argc) { -bb0: ; No predecessors! +define void @getoptions(i32* %argc) { +bb0: ret void } -declare int %printf(sbyte*, ...) - -int %main(int %argc, sbyte** %argv) { -bb0: ; No predecessors! - call int (sbyte*, ...)* %printf( sbyte* getelementptr ([10 x sbyte]* %.LC0, long 0, long 0), int %argc) - %cast224 = cast sbyte** %argv to sbyte* ; <sbyte*> [#uses=1] - %local = alloca sbyte* ; <sbyte**> [#uses=3] - store sbyte* %cast224, sbyte** %local - %cond226 = setle int %argc, 0 ; <bool> [#uses=1] - br bool %cond226, label %bb3, label %bb2 +declare i32 @printf(i8*, ...) +define i32 @main(i32 %argc, i8** %argv) { +bb0: + call i32 (i8*, ...)* @printf( i8* getelementptr ([10 x i8]* @.LC0, i64 0, i64 0), i32 %argc ) ; <i32>:0 [#uses=0] + %cast224 = bitcast i8** %argv to i8* ; <i8*> [#uses=1] + %local = alloca i8* ; <i8**> [#uses=3] + store i8* %cast224, i8** %local + %cond226 = icmp sle i32 %argc, 0 ; <i1> [#uses=1] + br i1 %cond226, label %bb3, label %bb2 bb2: ; preds = %bb2, %bb0 - %cann-indvar = phi int [ 0, %bb0 ], [ %add1-indvar, %bb2 ] ; <int> [#uses=2] - %add1-indvar = add int %cann-indvar, 1 ; <int> [#uses=2] - %cann-indvar-idxcast = cast int %cann-indvar to long ; <long> [#uses=1] - ;%reg115 = load sbyte** %local ; <sbyte*> [#uses=1] - ;%cann-indvar-idxcast-scale = mul long %cann-indvar-idxcast, 8 ; <long> [#uses=1] - ;%reg232 = getelementptr sbyte* %reg115, long %cann-indvar-idxcast-scale ; <sbyte*> [#uses=1] - ;%cast235 = cast sbyte* %reg232 to sbyte** ; <sbyte**> [#uses=1] - %CT = cast sbyte** %local to sbyte*** - %reg115 = load sbyte*** %CT - %cast235 = getelementptr sbyte** %reg115, long %cann-indvar-idxcast - - %reg117 = load sbyte** %cast235 ; <sbyte*> [#uses=1] - %reg236 = call int %puts( sbyte* %reg117 ) ; <int> [#uses=0] - %cond239 = setlt int %add1-indvar, %argc ; <bool> [#uses=1] - br bool %cond239, label %bb2, label %bb3 - + %cann-indvar = phi i32 [ 0, %bb0 ], [ %add1-indvar, %bb2 ] ; <i32> [#uses=2] + %add1-indvar = add i32 %cann-indvar, 1 ; <i32> [#uses=2] + %cann-indvar-idxcast = sext i32 %cann-indvar to i64 ; <i64> [#uses=1] + %CT = bitcast i8** %local to i8*** ; <i8***> [#uses=1] + %reg115 = load i8*** %CT ; <i8**> [#uses=1] + %cast235 = getelementptr i8** %reg115, i64 %cann-indvar-idxcast ; <i8**> [#uses=1] + %reg117 = load i8** %cast235 ; <i8*> [#uses=1] + %reg236 = call i32 @puts( i8* %reg117 ) ; <i32> [#uses=0] + %cond239 = icmp slt i32 %add1-indvar, %argc ; <i1> [#uses=1] + br i1 %cond239, label %bb2, label %bb3 bb3: ; preds = %bb2, %bb0 - %cast243 = cast sbyte** %local to int* ; <int*> [#uses=1] - call void %getoptions( int* %cast243 ) - ret int 0 + %cast243 = bitcast i8** %local to i32* ; <i32*> [#uses=1] + call void @getoptions( i32* %cast243 ) + ret i32 0 } diff --git a/test/ExecutionEngine/2003-01-04-ArgumentBug.ll b/test/ExecutionEngine/2003-01-04-ArgumentBug.ll index 218154f..6a8f07b 100644 --- a/test/ExecutionEngine/2003-01-04-ArgumentBug.ll +++ b/test/ExecutionEngine/2003-01-04-ArgumentBug.ll @@ -1,16 +1,14 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -implementation ; Functions: - -int %foo(int %X, int %Y, double %A) { - %cond212 = setne double %A, 1.000000e+00 ; <bool> [#uses=1] - %cast110 = cast bool %cond212 to int ; <int> [#uses=1] - ret int %cast110 +define i32 @foo(i32 %X, i32 %Y, double %A) { + %cond212 = fcmp une double %A, 1.000000e+00 ; <i1> [#uses=1] + %cast110 = zext i1 %cond212 to i32 ; <i32> [#uses=1] + ret i32 %cast110 } -int %main() { - %reg212 = call int %foo( int 0, int 1, double 1.000000e+00 ) ; <int> [#uses=1] - ret int %reg212 +define i32 @main() { + %reg212 = call i32 @foo( i32 0, i32 1, double 1.000000e+00 ) ; <i32> [#uses=1] + ret i32 %reg212 } + diff --git a/test/ExecutionEngine/2003-01-04-LoopTest.ll b/test/ExecutionEngine/2003-01-04-LoopTest.ll index f70928a..fce0b00 100644 --- a/test/ExecutionEngine/2003-01-04-LoopTest.ll +++ b/test/ExecutionEngine/2003-01-04-LoopTest.ll @@ -1,25 +1,21 @@ -; RUN: llvm-upgrade < %s | llvm-as -o %t.bc -f +; RUN: llvm-as < %s -o %t.bc -f ; RUN: lli %t.bc > /dev/null -implementation - -int %main() { - call int %mylog(int 4) - ret int 0 +define i32 @main() { + call i32 @mylog( i32 4 ) ; <i32>:1 [#uses=0] + ret i32 0 } -internal int %mylog(int %num) { -bb0: ; No predecessors! +define internal i32 @mylog(i32 %num) { +bb0: br label %bb2 - -bb2: - %reg112 = phi int [ 10, %bb2 ], [ 1, %bb0 ] - %cann-indvar = phi int [ %cann-indvar, %bb2 ], [0, %bb0] - %reg114 = add int %reg112, 1 - %cond222 = setlt int %reg114, %num - br bool %cond222, label %bb2, label %bb3 - -bb3: ; preds = %bb2, %bb0 - ret int %reg114 +bb2: ; preds = %bb2, %bb0 + %reg112 = phi i32 [ 10, %bb2 ], [ 1, %bb0 ] ; <i32> [#uses=1] + %cann-indvar = phi i32 [ %cann-indvar, %bb2 ], [ 0, %bb0 ] ; <i32> [#uses=1] + %reg114 = add i32 %reg112, 1 ; <i32> [#uses=2] + %cond222 = icmp slt i32 %reg114, %num ; <i1> [#uses=1] + br i1 %cond222, label %bb2, label %bb3 +bb3: ; preds = %bb2 + ret i32 %reg114 } diff --git a/test/ExecutionEngine/2003-01-04-PhiTest.ll b/test/ExecutionEngine/2003-01-04-PhiTest.ll index 45af830..cadb19e 100644 --- a/test/ExecutionEngine/2003-01-04-PhiTest.ll +++ b/test/ExecutionEngine/2003-01-04-PhiTest.ll @@ -1,11 +1,13 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -int %main() { +define i32 @main() { +; <label>:0 br label %Loop -Loop: - %X = phi int [0, %0], [1, %Loop] - br bool true, label %Out, label %Loop -Out: - ret int %X +Loop: ; preds = %Loop, %0 + %X = phi i32 [ 0, %0 ], [ 1, %Loop ] ; <i32> [#uses=1] + br i1 true, label %Out, label %Loop +Out: ; preds = %Loop + ret i32 %X } + diff --git a/test/ExecutionEngine/2003-01-09-SARTest.ll b/test/ExecutionEngine/2003-01-09-SARTest.ll index 73f2900..eeb4326 100644 --- a/test/ExecutionEngine/2003-01-09-SARTest.ll +++ b/test/ExecutionEngine/2003-01-09-SARTest.ll @@ -1,11 +1,12 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; We were accidentally inverting the signedness of right shifts. Whoops. -int %main() { - %X = shr int -1, ubyte 16 - %Y = shr int %X, ubyte 16 - %Z = add int %Y, 1 - ret int %Z +define i32 @main() { + %X = ashr i32 -1, 16 ; <i32> [#uses=1] + %Y = ashr i32 %X, 16 ; <i32> [#uses=1] + %Z = add i32 %Y, 1 ; <i32> [#uses=1] + ret i32 %Z } + diff --git a/test/ExecutionEngine/2003-01-10-FUCOM.ll b/test/ExecutionEngine/2003-01-10-FUCOM.ll index 4209df9..c45674c 100644 --- a/test/ExecutionEngine/2003-01-10-FUCOM.ll +++ b/test/ExecutionEngine/2003-01-10-FUCOM.ll @@ -1,11 +1,11 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -int %main() { - %X = add double 0.0, 1.0 - %Y = sub double 0.0, 1.0 - %Z = seteq double %X, %Y - add double %Y, 0.0 - ret int 0 +define i32 @main() { + %X = add double 0.000000e+00, 1.000000e+00 ; <double> [#uses=1] + %Y = sub double 0.000000e+00, 1.000000e+00 ; <double> [#uses=2] + %Z = fcmp oeq double %X, %Y ; <i1> [#uses=0] + add double %Y, 0.000000e+00 ; <double>:1 [#uses=0] + ret i32 0 } + diff --git a/test/ExecutionEngine/2003-01-15-AlignmentTest.ll b/test/ExecutionEngine/2003-01-15-AlignmentTest.ll index e9ffd90..02872f6 100644 --- a/test/ExecutionEngine/2003-01-15-AlignmentTest.ll +++ b/test/ExecutionEngine/2003-01-15-AlignmentTest.ll @@ -1,19 +1,18 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -int %bar(sbyte* %X) { - %P = alloca double ; pointer should be 4 byte aligned! - %R = cast double* %P to int - %A = and int %R, 3 - ret int %A +define i32 @bar(i8* %X) { + ; pointer should be 4 byte aligned! + %P = alloca double ; <double*> [#uses=1] + %R = ptrtoint double* %P to i32 ; <i32> [#uses=1] + %A = and i32 %R, 3 ; <i32> [#uses=1] + ret i32 %A } -int %main() { - %SP = alloca sbyte - %X = add uint 0, 0 - alloca sbyte, uint %X - - call int %bar(sbyte* %SP) - ret int %0 +define i32 @main() { + %SP = alloca i8 ; <i8*> [#uses=1] + %X = add i32 0, 0 ; <i32> [#uses=1] + alloca i8, i32 %X ; <i8*>:1 [#uses=0] + call i32 @bar( i8* %SP ) ; <i32>:2 [#uses=1] + ret i32 %2 } diff --git a/test/ExecutionEngine/2003-05-06-LivenessClobber.llx b/test/ExecutionEngine/2003-05-06-LivenessClobber.llx index ea3f14b..57fe95b 100644 --- a/test/ExecutionEngine/2003-05-06-LivenessClobber.llx +++ b/test/ExecutionEngine/2003-05-06-LivenessClobber.llx @@ -1,20 +1,19 @@ ; This testcase shoudl return with an exit code of 1. ; -; RUN: llvm-upgrade < %s | llvm-as | not lli +; RUN: llvm-as < %s | not lli -%test = global long 0 -implementation +@test = global i64 0 ; <i64*> [#uses=1] - -internal long %test() { - %tmp.0 = load long* %test ; <long> [#uses=1] - %tmp.1 = add long %tmp.0, 1 ; <long> [#uses=1] - ret long %tmp.1 +define internal i64 @test.upgrd.1() { + %tmp.0 = load i64* @test ; <i64> [#uses=1] + %tmp.1 = add i64 %tmp.0, 1 ; <i64> [#uses=1] + ret i64 %tmp.1 } -int %main() { - %L = call long %test() - %I = cast long %L to int - ret int %I +define i32 @main() { + %L = call i64 @test.upgrd.1( ) ; <i64> [#uses=1] + %I = trunc i64 %L to i32 ; <i32> [#uses=1] + ret i32 %I } + diff --git a/test/ExecutionEngine/2003-05-07-ArgumentTest.llx b/test/ExecutionEngine/2003-05-07-ArgumentTest.llx index e5dd04e..fa15d71 100644 --- a/test/ExecutionEngine/2003-05-07-ArgumentTest.llx +++ b/test/ExecutionEngine/2003-05-07-ArgumentTest.llx @@ -1,13 +1,11 @@ -; RUN: llvm-upgrade < %s | llvm-as | lli - test +; RUN: llvm-as < %s | lli - test -implementation +declare i32 @puts(i8*) -declare int %puts(sbyte*) - -int %main(int %argc.1, sbyte** %argv.1) { - %tmp.5 = getelementptr sbyte** %argv.1, long 1 ; <sbyte**> [#uses=1] - %tmp.6 = load sbyte** %tmp.5 ; <sbyte*> [#uses=1] - %tmp.0 = call int %puts( sbyte* %tmp.6 ) ; <int> [#uses=0] - ret int 0 +define i32 @main(i32 %argc.1, i8** %argv.1) { + %tmp.5 = getelementptr i8** %argv.1, i64 1 ; <i8**> [#uses=1] + %tmp.6 = load i8** %tmp.5 ; <i8*> [#uses=1] + %tmp.0 = call i32 @puts( i8* %tmp.6 ) ; <i32> [#uses=0] + ret i32 0 } diff --git a/test/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll b/test/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll index 1d9ba77..850654f 100644 --- a/test/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll +++ b/test/ExecutionEngine/2003-05-11-PHIRegAllocBug.ll @@ -1,18 +1,16 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -target endian = little -target pointersize = 32 +target datalayout = "e-p:32:32" -implementation - -int %main() { +define i32 @main() { entry: br label %endif -then: +then: ; No predecessors! br label %endif -endif: - %x = phi uint [ 4, %entry ], [ 27, %then ] - %result = phi int [ 32, %then ], [ 0, %entry ] - ret int 0 +endif: ; preds = %then, %entry + %x = phi i32 [ 4, %entry ], [ 27, %then ] ; <i32> [#uses=0] + %result = phi i32 [ 32, %then ], [ 0, %entry ] ; <i32> [#uses=0] + ret i32 0 } + diff --git a/test/ExecutionEngine/2003-06-04-bzip2-bug.ll b/test/ExecutionEngine/2003-06-04-bzip2-bug.ll index cd237c3..ff758cf 100644 --- a/test/ExecutionEngine/2003-06-04-bzip2-bug.ll +++ b/test/ExecutionEngine/2003-06-04-bzip2-bug.ll @@ -1,22 +1,20 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; Testcase distilled from 256.bzip2. -target endian = little -target pointersize = 32 +target datalayout = "e-p:32:32" -int %main() { +define i32 @main() { entry: br label %loopentry.0 - -loopentry.0: - %h.0 = phi int [ %tmp.2, %loopentry.0 ], [ -1, %entry ] - %tmp.2 = add int %h.0, 1 - %tmp.4 = setne int %tmp.2, 0 - br bool %tmp.4, label %loopentry.0, label %loopentry.1 - -loopentry.1: - %h.1 = phi int [ %tmp.2, %loopentry.0 ] - ret int %h.1 +loopentry.0: ; preds = %loopentry.0, %entry + %h.0 = phi i32 [ %tmp.2, %loopentry.0 ], [ -1, %entry ] ; <i32> [#uses=1] + %tmp.2 = add i32 %h.0, 1 ; <i32> [#uses=3] + %tmp.4 = icmp ne i32 %tmp.2, 0 ; <i1> [#uses=1] + br i1 %tmp.4, label %loopentry.0, label %loopentry.1 +loopentry.1: ; preds = %loopentry.0 + %h.1 = phi i32 [ %tmp.2, %loopentry.0 ] ; <i32> [#uses=1] + ret i32 %h.1 } + diff --git a/test/ExecutionEngine/2003-06-05-PHIBug.ll b/test/ExecutionEngine/2003-06-05-PHIBug.ll index 8c1aaba..3a55f72 100644 --- a/test/ExecutionEngine/2003-06-05-PHIBug.ll +++ b/test/ExecutionEngine/2003-06-05-PHIBug.ll @@ -1,19 +1,18 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; Testcase distilled from 256.bzip2. -target endian = little -target pointersize = 32 +target datalayout = "e-p:32:32" -int %main() { +define i32 @main() { entry: - %X = add int 1, -1 + %X = add i32 1, -1 ; <i32> [#uses=3] br label %Next - -Next: - %A = phi int [ %X, %entry ] - %B = phi int [ %X, %entry ] - %C = phi int [ %X, %entry ] - ret int %C +Next: ; preds = %entry + %A = phi i32 [ %X, %entry ] ; <i32> [#uses=0] + %B = phi i32 [ %X, %entry ] ; <i32> [#uses=0] + %C = phi i32 [ %X, %entry ] ; <i32> [#uses=1] + ret i32 %C } + diff --git a/test/ExecutionEngine/2003-08-15-AllocaAssertion.ll b/test/ExecutionEngine/2003-08-15-AllocaAssertion.ll index adc8220..ce5e1ed 100644 --- a/test/ExecutionEngine/2003-08-15-AllocaAssertion.ll +++ b/test/ExecutionEngine/2003-08-15-AllocaAssertion.ll @@ -1,12 +1,12 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; This testcase failed to work because two variable sized allocas confused the ; local register allocator. -int %main(uint %X) { - %A = alloca uint, uint %X - - %B = alloca float, uint %X - ret int 0 +define i32 @main(i32 %X) { + %A = alloca i32, i32 %X ; <i32*> [#uses=0] + %B = alloca float, i32 %X ; <float*> [#uses=0] + ret i32 0 } + diff --git a/test/ExecutionEngine/2003-08-21-EnvironmentTest.ll b/test/ExecutionEngine/2003-08-21-EnvironmentTest.ll index 21e87ca..ec36a85 100644 --- a/test/ExecutionEngine/2003-08-21-EnvironmentTest.ll +++ b/test/ExecutionEngine/2003-08-21-EnvironmentTest.ll @@ -1,4 +1,4 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; @@ -9,15 +9,14 @@ ; environment to the main() function. ; -implementation -declare uint %strlen(sbyte*) +declare i32 @strlen(i8*) -int %main(int %argc.1, sbyte** %argv.1, sbyte** %envp.1) { - %tmp.2 = load sbyte** %envp.1 - %tmp.3 = call uint %strlen( sbyte* %tmp.2 ) - %T = seteq uint %tmp.3, 0 - %R = cast bool %T to int - ret int %R +define i32 @main(i32 %argc.1, i8** %argv.1, i8** %envp.1) { + %tmp.2 = load i8** %envp.1 ; <i8*> [#uses=1] + %tmp.3 = call i32 @strlen( i8* %tmp.2 ) ; <i32> [#uses=1] + %T = icmp eq i32 %tmp.3, 0 ; <i1> [#uses=1] + %R = zext i1 %T to i32 ; <i32> [#uses=1] + ret i32 %R } diff --git a/test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll b/test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll index 4d1d045..42e8dc3 100644 --- a/test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll +++ b/test/ExecutionEngine/2003-08-23-RegisterAllocatePhysReg.ll @@ -1,33 +1,35 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; This testcase exposes a bug in the local register allocator where it runs out ; of registers (due to too many overlapping live ranges), but then attempts to ; use the ESP register (which is not allocatable) to hold a value. -int %main(uint %A) { - %Ap2 = alloca uint, uint %A ; ESP gets used again... - %B = add uint %A, 1 ; Produce lots of overlapping live ranges - %C = add uint %A, 2 - %D = add uint %A, 3 - %E = add uint %A, 4 - %F = add uint %A, 5 - %G = add uint %A, 6 - %H = add uint %A, 7 - %I = add uint %A, 8 - %J = add uint %A, 9 - %K = add uint %A, 10 - - store uint %A, uint *%Ap2 ; Uses of all of the values - store uint %B, uint *%Ap2 - store uint %C, uint *%Ap2 - store uint %D, uint *%Ap2 - store uint %E, uint *%Ap2 - store uint %F, uint *%Ap2 - store uint %G, uint *%Ap2 - store uint %H, uint *%Ap2 - store uint %I, uint *%Ap2 - store uint %J, uint *%Ap2 - store uint %K, uint *%Ap2 - ret int 0 +define i32 @main(i32 %A) { + ; ESP gets used again... + %Ap2 = alloca i32, i32 %A ; <i32*> [#uses=11] + ; Produce lots of overlapping live ranges + %B = add i32 %A, 1 ; <i32> [#uses=1] + %C = add i32 %A, 2 ; <i32> [#uses=1] + %D = add i32 %A, 3 ; <i32> [#uses=1] + %E = add i32 %A, 4 ; <i32> [#uses=1] + %F = add i32 %A, 5 ; <i32> [#uses=1] + %G = add i32 %A, 6 ; <i32> [#uses=1] + %H = add i32 %A, 7 ; <i32> [#uses=1] + %I = add i32 %A, 8 ; <i32> [#uses=1] + %J = add i32 %A, 9 ; <i32> [#uses=1] + %K = add i32 %A, 10 ; <i32> [#uses=1] + ; Uses of all of the values + store i32 %A, i32* %Ap2 + store i32 %B, i32* %Ap2 + store i32 %C, i32* %Ap2 + store i32 %D, i32* %Ap2 + store i32 %E, i32* %Ap2 + store i32 %F, i32* %Ap2 + store i32 %G, i32* %Ap2 + store i32 %H, i32* %Ap2 + store i32 %I, i32* %Ap2 + store i32 %J, i32* %Ap2 + store i32 %K, i32* %Ap2 + ret i32 0 } diff --git a/test/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll b/test/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll index b2700e1..32d99d5 100644 --- a/test/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll +++ b/test/ExecutionEngine/2003-10-18-PHINode-ConstantExpr-CondCode-Failure.ll @@ -1,30 +1,24 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -%A = global int 0 +@A = global i32 0 ; <i32*> [#uses=1] -int %main() { - %Ret = call int %test(bool true, int 0) - ret int %Ret +define i32 @main() { + %Ret = call i32 @test( i1 true, i32 0 ) ; <i32> [#uses=1] + ret i32 %Ret } -int %test(bool %c, int %A) { - br bool %c, label %Taken1, label %NotTaken - -Cont: - %V = phi int [0, %NotTaken], - [ sub (int cast (int* %A to int), int 1234), %Taken1] - ret int 0 - -NotTaken: - br label %Cont - -Taken1: - %B = seteq int %A, 0 - ; Code got inserted here, breaking the condition code. - br bool %B, label %Cont, label %ExitError - -ExitError: - ret int 12 - +define i32 @test(i1 %c, i32 %A) { + br i1 %c, label %Taken1, label %NotTaken +Cont: ; preds = %Taken1, %NotTaken + %V = phi i32 [ 0, %NotTaken ], [ sub (i32 ptrtoint (i32* @A to i32), i32 1234), %Taken1 ] ; <i32> [#uses=0] + ret i32 0 +NotTaken: ; preds = %0 + br label %Cont +Taken1: ; preds = %0 + %B = icmp eq i32 %A, 0 ; <i1> [#uses=1] + br i1 %B, label %Cont, label %ExitError +ExitError: ; preds = %Taken1 + ret i32 12 } + diff --git a/test/ExecutionEngine/2005-12-02-TailCallBug.ll b/test/ExecutionEngine/2005-12-02-TailCallBug.ll index 447f49e..59a40ae 100644 --- a/test/ExecutionEngine/2005-12-02-TailCallBug.ll +++ b/test/ExecutionEngine/2005-12-02-TailCallBug.ll @@ -1,21 +1,21 @@ ; PR672 -; RUN: llvm-upgrade < %s | llvm-as | lli +; RUN: llvm-as < %s | lli -int %main(){ - %f = cast int (int, int*, int)* %check_tail to int* - %res = tail call fastcc int %check_tail( int 10, int* %f,int 10) - ret int %res +define i32 @main() { + %f = bitcast i32 (i32, i32*, i32)* @check_tail to i32* ; <i32*> [#uses=1] + %res = tail call fastcc i32 @check_tail( i32 10, i32* %f, i32 10 ) ; <i32> [#uses=1] + ret i32 %res } -fastcc int %check_tail(int %x, int* %f, int %g) { - %tmp1 = setgt int %x, 0 - br bool %tmp1, label %if-then, label %if-else -if-then: - %fun_ptr = cast int* %f to int(int, int*, int)* - %arg1 = add int %x, -1 - %res = tail call fastcc int %fun_ptr( int %arg1, int * %f, int %g) - ret int %res - -if-else: - ret int %x +define fastcc i32 @check_tail(i32 %x, i32* %f, i32 %g) { + %tmp1 = icmp sgt i32 %x, 0 ; <i1> [#uses=1] + br i1 %tmp1, label %if-then, label %if-else +if-then: ; preds = %0 + %fun_ptr = bitcast i32* %f to i32 (i32, i32*, i32)* ; <i32 (i32, i32*, i32)*> [#uses=1] + %arg1 = add i32 %x, -1 ; <i32> [#uses=1] + %res = tail call fastcc i32 %fun_ptr( i32 %arg1, i32* %f, i32 %g ) ; <i32> [#uses=1] + ret i32 %res +if-else: ; preds = %0 + ret i32 %x } + diff --git a/test/ExecutionEngine/hello.ll b/test/ExecutionEngine/hello.ll index ea2f9a4..a0c5e1a 100644 --- a/test/ExecutionEngine/hello.ll +++ b/test/ExecutionEngine/hello.ll @@ -1,14 +1,12 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -%.LC0 = internal global [12 x sbyte] c"Hello World\00" +@.LC0 = internal global [12 x i8] c"Hello World\00" ; <[12 x i8]*> [#uses=1] -implementation +declare i32 @puts(i8*) -declare int %puts(sbyte*) - -int %main() { - %reg210 = call int %puts( sbyte* getelementptr ([12 x sbyte]* %.LC0, long 0, long 0) ) - ret int 0 +define i32 @main() { + %reg210 = call i32 @puts( i8* getelementptr ([12 x i8]* @.LC0, i64 0, i64 0) ) ; <i32> [#uses=0] + ret i32 0 } diff --git a/test/ExecutionEngine/hello2.ll b/test/ExecutionEngine/hello2.ll index b186c52..772dc04 100644 --- a/test/ExecutionEngine/hello2.ll +++ b/test/ExecutionEngine/hello2.ll @@ -1,22 +1,18 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null +@X = global i32 7 ; <i32*> [#uses=0] +@msg = internal global [13 x i8] c"Hello World\0A\00" ; <[13 x i8]*> [#uses=1] -%X = global int 7 -%msg = internal global [13 x sbyte] c"Hello World\0A\00" +declare void @printf([13 x i8]*, ...) - -implementation - -declare void %printf([13 x sbyte]*,...) - -void %bar() { - call void([13 x sbyte]*,...)* %printf([13 x sbyte]* %msg) - ret void +define void @bar() { + call void ([13 x i8]*, ...)* @printf( [13 x i8]* @msg ) + ret void } -int %main() { - call void %bar() - ret int 0 +define i32 @main() { + call void @bar( ) + ret i32 0 } diff --git a/test/ExecutionEngine/simplesttest.ll b/test/ExecutionEngine/simplesttest.ll index 1f578d2..82e8a2d 100644 --- a/test/ExecutionEngine/simplesttest.ll +++ b/test/ExecutionEngine/simplesttest.ll @@ -1,10 +1,7 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -implementation - -int %main() { - ret int 0 +define i32 @main() { + ret i32 0 } diff --git a/test/ExecutionEngine/simpletest.ll b/test/ExecutionEngine/simpletest.ll index 68b7044..cca3499 100644 --- a/test/ExecutionEngine/simpletest.ll +++ b/test/ExecutionEngine/simpletest.ll @@ -1,12 +1,12 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -implementation - -int %bar() { ret int 0 } +define i32 @bar() { + ret i32 0 +} -int %main() { - %r = call int %bar() - ret int %r +define i32 @main() { + %r = call i32 @bar( ) ; <i32> [#uses=1] + ret i32 %r } diff --git a/test/ExecutionEngine/test-arith.ll b/test/ExecutionEngine/test-arith.ll index 49d85af..d99e30f 100644 --- a/test/ExecutionEngine/test-arith.ll +++ b/test/ExecutionEngine/test-arith.ll @@ -1,38 +1,35 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -int %main() { - %A = add sbyte 0, 12 - %B = sub sbyte %A, 1 - %C = mul sbyte %B, %B - %D = div sbyte %C, %C - %E = rem sbyte %D, %D - %F = div ubyte 5, 6 - %G = rem ubyte 6, 5 - - %A = add short 0, 12 - %B = sub short %A, 1 - %C = mul short %B, %B - %D = div short %C, %C - %E = rem short %D, %D - %F = div ushort 5, 6 - %G = rem uint 6, 5 - - %A = add int 0, 12 - %B = sub int %A, 1 - %C = mul int %B, %B - %D = div int %C, %C - %E = rem int %D, %D - %F = div uint 5, 6 - %G1 = rem uint 6, 5 - - %A = add long 0, 12 - %B = sub long %A, 1 - %C = mul long %B, %B - %D = div long %C, %C - %E = rem long %D, %D - %F = div ulong 5, 6 - %G = rem ulong 6, 5 - - ret int 0 +define i32 @main() { + %A = add i8 0, 12 ; <i8> [#uses=1] + %B = sub i8 %A, 1 ; <i8> [#uses=2] + %C = mul i8 %B, %B ; <i8> [#uses=2] + %D = sdiv i8 %C, %C ; <i8> [#uses=2] + %E = srem i8 %D, %D ; <i8> [#uses=0] + %F = udiv i8 5, 6 ; <i8> [#uses=0] + %G = urem i8 6, 5 ; <i8> [#uses=0] + %A.upgrd.1 = add i16 0, 12 ; <i16> [#uses=1] + %B.upgrd.2 = sub i16 %A.upgrd.1, 1 ; <i16> [#uses=2] + %C.upgrd.3 = mul i16 %B.upgrd.2, %B.upgrd.2 ; <i16> [#uses=2] + %D.upgrd.4 = sdiv i16 %C.upgrd.3, %C.upgrd.3 ; <i16> [#uses=2] + %E.upgrd.5 = srem i16 %D.upgrd.4, %D.upgrd.4 ; <i16> [#uses=0] + %F.upgrd.6 = udiv i16 5, 6 ; <i16> [#uses=0] + %G.upgrd.7 = urem i32 6, 5 ; <i32> [#uses=0] + %A.upgrd.8 = add i32 0, 12 ; <i32> [#uses=1] + %B.upgrd.9 = sub i32 %A.upgrd.8, 1 ; <i32> [#uses=2] + %C.upgrd.10 = mul i32 %B.upgrd.9, %B.upgrd.9 ; <i32> [#uses=2] + %D.upgrd.11 = sdiv i32 %C.upgrd.10, %C.upgrd.10 ; <i32> [#uses=2] + %E.upgrd.12 = srem i32 %D.upgrd.11, %D.upgrd.11 ; <i32> [#uses=0] + %F.upgrd.13 = udiv i32 5, 6 ; <i32> [#uses=0] + %G1 = urem i32 6, 5 ; <i32> [#uses=0] + %A.upgrd.14 = add i64 0, 12 ; <i64> [#uses=1] + %B.upgrd.15 = sub i64 %A.upgrd.14, 1 ; <i64> [#uses=2] + %C.upgrd.16 = mul i64 %B.upgrd.15, %B.upgrd.15 ; <i64> [#uses=2] + %D.upgrd.17 = sdiv i64 %C.upgrd.16, %C.upgrd.16 ; <i64> [#uses=2] + %E.upgrd.18 = srem i64 %D.upgrd.17, %D.upgrd.17 ; <i64> [#uses=0] + %F.upgrd.19 = udiv i64 5, 6 ; <i64> [#uses=0] + %G.upgrd.20 = urem i64 6, 5 ; <i64> [#uses=0] + ret i32 0 } + diff --git a/test/ExecutionEngine/test-branch.ll b/test/ExecutionEngine/test-branch.ll index 649319b..55b7ef1 100644 --- a/test/ExecutionEngine/test-branch.ll +++ b/test/ExecutionEngine/test-branch.ll @@ -1,12 +1,13 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; test unconditional branch -int %main() { +define i32 @main() { br label %Test -Test: - %X = seteq int 0, 4 - br bool %X, label %Test, label %Label -Label: - ret int 0 +Test: ; preds = %Test, %0 + %X = icmp eq i32 0, 4 ; <i1> [#uses=1] + br i1 %X, label %Test, label %Label +Label: ; preds = %Test + ret i32 0 } + diff --git a/test/ExecutionEngine/test-call.ll b/test/ExecutionEngine/test-call.ll index 23e4f14..645396f 100644 --- a/test/ExecutionEngine/test-call.ll +++ b/test/ExecutionEngine/test-call.ll @@ -1,22 +1,22 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null +declare void @exit(i32) -declare void %exit(int) - -int %test(sbyte %C, short %S) { - %X = cast short %S to ubyte - %Y = cast ubyte %X to int - ret int %Y +define i32 @test(i8 %C, i16 %S) { + %X = trunc i16 %S to i8 ; <i8> [#uses=1] + %Y = zext i8 %X to i32 ; <i32> [#uses=1] + ret i32 %Y } -void %FP(void(int) * %F) { - %X = call int %test(sbyte 123, short 1024) - call void %F(int %X) +define void @FP(void (i32)* %F) { + %X = call i32 @test( i8 123, i16 1024 ) ; <i32> [#uses=1] + call void %F( i32 %X ) ret void } -int %main() { - call void %FP(void(int)* %exit) - ret int 1 +define i32 @main() { + call void @FP( void (i32)* @exit ) + ret i32 1 } + diff --git a/test/ExecutionEngine/test-cast.ll b/test/ExecutionEngine/test-cast.ll index 97e7157..bc48716 100644 --- a/test/ExecutionEngine/test-cast.ll +++ b/test/ExecutionEngine/test-cast.ll @@ -1,136 +1,110 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -int %foo() { - ret int 0 +define i32 @foo() { + ret i32 0 } -int %main() { - ; cast bool to ... - cast bool true to bool - cast bool true to ubyte - cast bool true to sbyte - cast bool true to short - cast bool true to ushort - cast bool true to int - cast bool true to uint - cast bool true to long - cast bool true to ulong - cast bool true to float - cast bool true to double - - ; cast sbyte to ... - cast sbyte 0 to bool - cast sbyte 1 to bool - cast sbyte 0 to sbyte - cast sbyte -1 to ubyte - cast sbyte 4 to short - cast sbyte 4 to ushort - cast sbyte 4 to long - cast sbyte 4 to ulong - cast sbyte 4 to float - cast sbyte 4 to double - - ; cast ubyte to ... - cast ubyte 0 to bool - cast ubyte 1 to bool - cast ubyte 0 to sbyte - cast ubyte 1 to ubyte - cast ubyte 4 to short - cast ubyte 4 to ushort - cast ubyte 4 to long - cast ubyte 4 to ulong - cast ubyte 0 to float - cast ubyte 0 to double - - ; cast short to ... - cast short 1 to bool - cast short -1 to sbyte - cast short 255 to ubyte - cast short 0 to short - cast short 0 to ushort - cast short 0 to long - cast short 0 to ulong - cast short 0 to float - cast short 0 to double - - ; cast ushort to ... - cast ushort 1 to bool - cast ushort 1 to sbyte - cast ushort 255 to ubyte - cast ushort 0 to short - cast ushort 0 to ushort - cast ushort 0 to long - cast ushort 0 to ulong - cast ushort 0 to float - cast ushort 0 to double - - ; cast int to ... - cast int 6 to bool - cast int -6 to sbyte - cast int 6 to ubyte - cast int 6 to short - cast int 0 to int - cast int 0 to long - cast int 0 to ulong - cast int 0 to float - cast int 0 to double - - ; cast uint to ... - cast uint 6 to bool - cast uint 7 to sbyte - cast uint 8 to ubyte - cast uint 9 to short - cast uint 10 to int - cast uint 0 to long - cast uint 0 to ulong - cast uint 0 to float - cast uint 0 to double - - ; cast long to ... - cast long 0 to bool - cast long 0 to sbyte - cast long 0 to ubyte - cast long 0 to short - cast long 0 to ushort - cast long 0 to int - cast long 0 to uint - cast long 0 to long - cast long 0 to ulong - cast long 0 to float - cast long 0 to double - - ; cast ulong to ... - cast ulong 1 to bool - cast ulong 1 to sbyte - cast ulong 1 to ubyte - cast ulong 1 to short - cast ulong 1 to ushort - cast ulong 1 to int - cast ulong 1 to uint - cast ulong 1 to long - cast ulong 1 to ulong - cast ulong 1 to float - cast ulong 0 to double - - ; cast float to ... - ;cast float 0.0 to bool - cast float 0.0 to float - cast float 0.0 to double - - ; cast double to ... - ;cast double 0.0 to bool - cast double 0.0 to sbyte - cast double 0.0 to ubyte - cast double 0.0 to short - cast double 0.0 to ushort - cast double 0.0 to int - cast double 0.0 to uint - cast double 0.0 to long - ;cast double 0.0 to ulong - cast double 0.0 to float - cast double 0.0 to double - - ret int 0 +define i32 @main() { + icmp ne i1 true, false ; <i1>:1 [#uses=0] + zext i1 true to i8 ; <i8>:2 [#uses=0] + zext i1 true to i8 ; <i8>:3 [#uses=0] + zext i1 true to i16 ; <i16>:4 [#uses=0] + zext i1 true to i16 ; <i16>:5 [#uses=0] + zext i1 true to i32 ; <i32>:6 [#uses=0] + zext i1 true to i32 ; <i32>:7 [#uses=0] + zext i1 true to i64 ; <i64>:8 [#uses=0] + zext i1 true to i64 ; <i64>:9 [#uses=0] + uitofp i1 true to float ; <float>:10 [#uses=0] + uitofp i1 true to double ; <double>:11 [#uses=0] + icmp ne i8 0, 0 ; <i1>:12 [#uses=0] + icmp ne i8 1, 0 ; <i1>:13 [#uses=0] + bitcast i8 0 to i8 ; <i8>:14 [#uses=0] + bitcast i8 -1 to i8 ; <i8>:15 [#uses=0] + sext i8 4 to i16 ; <i16>:16 [#uses=0] + sext i8 4 to i16 ; <i16>:17 [#uses=0] + sext i8 4 to i64 ; <i64>:18 [#uses=0] + sext i8 4 to i64 ; <i64>:19 [#uses=0] + sitofp i8 4 to float ; <float>:20 [#uses=0] + sitofp i8 4 to double ; <double>:21 [#uses=0] + icmp ne i8 0, 0 ; <i1>:22 [#uses=0] + icmp ne i8 1, 0 ; <i1>:23 [#uses=0] + bitcast i8 0 to i8 ; <i8>:24 [#uses=0] + bitcast i8 1 to i8 ; <i8>:25 [#uses=0] + zext i8 4 to i16 ; <i16>:26 [#uses=0] + zext i8 4 to i16 ; <i16>:27 [#uses=0] + zext i8 4 to i64 ; <i64>:28 [#uses=0] + zext i8 4 to i64 ; <i64>:29 [#uses=0] + uitofp i8 0 to float ; <float>:30 [#uses=0] + uitofp i8 0 to double ; <double>:31 [#uses=0] + icmp ne i16 1, 0 ; <i1>:32 [#uses=0] + trunc i16 -1 to i8 ; <i8>:33 [#uses=0] + trunc i16 255 to i8 ; <i8>:34 [#uses=0] + bitcast i16 0 to i16 ; <i16>:35 [#uses=0] + bitcast i16 0 to i16 ; <i16>:36 [#uses=0] + sext i16 0 to i64 ; <i64>:37 [#uses=0] + sext i16 0 to i64 ; <i64>:38 [#uses=0] + sitofp i16 0 to float ; <float>:39 [#uses=0] + sitofp i16 0 to double ; <double>:40 [#uses=0] + icmp ne i16 1, 0 ; <i1>:41 [#uses=0] + trunc i16 1 to i8 ; <i8>:42 [#uses=0] + trunc i16 255 to i8 ; <i8>:43 [#uses=0] + bitcast i16 0 to i16 ; <i16>:44 [#uses=0] + bitcast i16 0 to i16 ; <i16>:45 [#uses=0] + zext i16 0 to i64 ; <i64>:46 [#uses=0] + zext i16 0 to i64 ; <i64>:47 [#uses=0] + uitofp i16 0 to float ; <float>:48 [#uses=0] + uitofp i16 0 to double ; <double>:49 [#uses=0] + icmp ne i32 6, 0 ; <i1>:50 [#uses=0] + trunc i32 -6 to i8 ; <i8>:51 [#uses=0] + trunc i32 6 to i8 ; <i8>:52 [#uses=0] + trunc i32 6 to i16 ; <i16>:53 [#uses=0] + bitcast i32 0 to i32 ; <i32>:54 [#uses=0] + sext i32 0 to i64 ; <i64>:55 [#uses=0] + sext i32 0 to i64 ; <i64>:56 [#uses=0] + sitofp i32 0 to float ; <float>:57 [#uses=0] + sitofp i32 0 to double ; <double>:58 [#uses=0] + icmp ne i32 6, 0 ; <i1>:59 [#uses=0] + trunc i32 7 to i8 ; <i8>:60 [#uses=0] + trunc i32 8 to i8 ; <i8>:61 [#uses=0] + trunc i32 9 to i16 ; <i16>:62 [#uses=0] + bitcast i32 10 to i32 ; <i32>:63 [#uses=0] + zext i32 0 to i64 ; <i64>:64 [#uses=0] + zext i32 0 to i64 ; <i64>:65 [#uses=0] + uitofp i32 0 to float ; <float>:66 [#uses=0] + uitofp i32 0 to double ; <double>:67 [#uses=0] + icmp ne i64 0, 0 ; <i1>:68 [#uses=0] + trunc i64 0 to i8 ; <i8>:69 [#uses=0] + trunc i64 0 to i8 ; <i8>:70 [#uses=0] + trunc i64 0 to i16 ; <i16>:71 [#uses=0] + trunc i64 0 to i16 ; <i16>:72 [#uses=0] + trunc i64 0 to i32 ; <i32>:73 [#uses=0] + trunc i64 0 to i32 ; <i32>:74 [#uses=0] + bitcast i64 0 to i64 ; <i64>:75 [#uses=0] + bitcast i64 0 to i64 ; <i64>:76 [#uses=0] + sitofp i64 0 to float ; <float>:77 [#uses=0] + sitofp i64 0 to double ; <double>:78 [#uses=0] + icmp ne i64 1, 0 ; <i1>:79 [#uses=0] + trunc i64 1 to i8 ; <i8>:80 [#uses=0] + trunc i64 1 to i8 ; <i8>:81 [#uses=0] + trunc i64 1 to i16 ; <i16>:82 [#uses=0] + trunc i64 1 to i16 ; <i16>:83 [#uses=0] + trunc i64 1 to i32 ; <i32>:84 [#uses=0] + trunc i64 1 to i32 ; <i32>:85 [#uses=0] + bitcast i64 1 to i64 ; <i64>:86 [#uses=0] + bitcast i64 1 to i64 ; <i64>:87 [#uses=0] + uitofp i64 1 to float ; <float>:88 [#uses=0] + uitofp i64 0 to double ; <double>:89 [#uses=0] + bitcast float 0.000000e+00 to float ; <float>:90 [#uses=0] + fpext float 0.000000e+00 to double ; <double>:91 [#uses=0] + fptosi double 0.000000e+00 to i8 ; <i8>:92 [#uses=0] + fptoui double 0.000000e+00 to i8 ; <i8>:93 [#uses=0] + fptosi double 0.000000e+00 to i16 ; <i16>:94 [#uses=0] + fptoui double 0.000000e+00 to i16 ; <i16>:95 [#uses=0] + fptosi double 0.000000e+00 to i32 ; <i32>:96 [#uses=0] + fptoui double 0.000000e+00 to i32 ; <i32>:97 [#uses=0] + fptosi double 0.000000e+00 to i64 ; <i64>:98 [#uses=0] + fptrunc double 0.000000e+00 to float ; <float>:99 [#uses=0] + bitcast double 0.000000e+00 to double ; <double>:100 [#uses=0] + ret i32 0 } diff --git a/test/ExecutionEngine/test-constantexpr.ll b/test/ExecutionEngine/test-constantexpr.ll index 1ee7e14..2bf1949 100644 --- a/test/ExecutionEngine/test-constantexpr.ll +++ b/test/ExecutionEngine/test-constantexpr.ll @@ -1,14 +1,13 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; This tests to make sure that we can evaluate weird constant expressions -%A = global int 5 -%B = global int 6 -implementation +@A = global i32 5 ; <i32*> [#uses=1] +@B = global i32 6 ; <i32*> [#uses=1] -int %main() { - %A = or bool false, setlt (int* %A, int* %B) ; Which is lower in memory? - ret int 0 +define i32 @main() { + %A = or i1 false, icmp slt (i32* @A, i32* @B) ; <i1> [#uses=0] + ret i32 0 } diff --git a/test/ExecutionEngine/test-fp.ll b/test/ExecutionEngine/test-fp.ll index 1ee29b5..aa136dd 100644 --- a/test/ExecutionEngine/test-fp.ll +++ b/test/ExecutionEngine/test-fp.ll @@ -1,24 +1,24 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -double %test(double* %DP, double %Arg) { - %D = load double* %DP - %V = add double %D, 1.0 - %W = sub double %V, %V - %X = mul double %W, %W - %Y = div double %X, %X - %Z = rem double %Y, %Y - %Z1 = div double %Z, %W - %Q = add double %Z, %Arg - %R = cast double %Q to double +define double @test(double* %DP, double %Arg) { + %D = load double* %DP ; <double> [#uses=1] + %V = add double %D, 1.000000e+00 ; <double> [#uses=2] + %W = sub double %V, %V ; <double> [#uses=3] + %X = mul double %W, %W ; <double> [#uses=2] + %Y = fdiv double %X, %X ; <double> [#uses=2] + %Z = frem double %Y, %Y ; <double> [#uses=3] + %Z1 = fdiv double %Z, %W ; <double> [#uses=0] + %Q = add double %Z, %Arg ; <double> [#uses=1] + %R = bitcast double %Q to double ; <double> [#uses=1] store double %R, double* %DP ret double %Z } -int %main() { - %X = alloca double - store double 0.0, double* %X - call double %test(double* %X, double 2.0) - ret int 0 +define i32 @main() { + %X = alloca double ; <double*> [#uses=2] + store double 0.000000e+00, double* %X + call double @test( double* %X, double 2.000000e+00 ) ; <double>:1 [#uses=0] + ret i32 0 } + diff --git a/test/ExecutionEngine/test-loadstore.ll b/test/ExecutionEngine/test-loadstore.ll index 8a4b793..ca2ecbf 100644 --- a/test/ExecutionEngine/test-loadstore.ll +++ b/test/ExecutionEngine/test-loadstore.ll @@ -1,37 +1,32 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -void %test(sbyte* %P, short* %P, int* %P, long* %P) { - %V = load sbyte* %P - store sbyte %V, sbyte* %P - - %V = load short* %P - store short %V, short* %P - - %V = load int* %P - store int %V, int* %P - - %V = load long* %P - store long %V, long* %P - +define void @test(i8* %P, i16* %P.upgrd.1, i32* %P.upgrd.2, i64* %P.upgrd.3) { + %V = load i8* %P ; <i8> [#uses=1] + store i8 %V, i8* %P + %V.upgrd.4 = load i16* %P.upgrd.1 ; <i16> [#uses=1] + store i16 %V.upgrd.4, i16* %P.upgrd.1 + %V.upgrd.5 = load i32* %P.upgrd.2 ; <i32> [#uses=1] + store i32 %V.upgrd.5, i32* %P.upgrd.2 + %V.upgrd.6 = load i64* %P.upgrd.3 ; <i64> [#uses=1] + store i64 %V.upgrd.6, i64* %P.upgrd.3 ret void } -uint %varalloca(uint %Size) { - %X = alloca uint, uint %Size ;; Variable sized alloca - store uint %Size, uint* %X - %Y = load uint* %X - ret uint %Y +define i32 @varalloca(i32 %Size) { + ;; Variable sized alloca + %X = alloca i32, i32 %Size ; <i32*> [#uses=2] + store i32 %Size, i32* %X + %Y = load i32* %X ; <i32> [#uses=1] + ret i32 %Y } -int %main() { - %A = alloca sbyte - %B = alloca short - %C = alloca int - %D = alloca long - call void %test(sbyte* %A, short* %B, int* %C, long* %D) - call uint %varalloca(uint 7) - - ret int 0 +define i32 @main() { + %A = alloca i8 ; <i8*> [#uses=1] + %B = alloca i16 ; <i16*> [#uses=1] + %C = alloca i32 ; <i32*> [#uses=1] + %D = alloca i64 ; <i64*> [#uses=1] + call void @test( i8* %A, i16* %B, i32* %C, i64* %D ) + call i32 @varalloca( i32 7 ) ; <i32>:1 [#uses=0] + ret i32 0 } diff --git a/test/ExecutionEngine/test-logical.ll b/test/ExecutionEngine/test-logical.ll index 86af2e2..800de1f 100644 --- a/test/ExecutionEngine/test-logical.ll +++ b/test/ExecutionEngine/test-logical.ll @@ -1,23 +1,19 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -int %main() { - %A = and sbyte 4, 8 - %B = or sbyte %A, 7 - %C = xor sbyte %B, %A - - %A = and short 4, 8 - %B = or short %A, 7 - %C = xor short %B, %A - - %A = and int 4, 8 - %B = or int %A, 7 - %C = xor int %B, %A - - %A = and long 4, 8 - %B = or long %A, 7 - %C = xor long %B, %A - - ret int 0 +define i32 @main() { + %A = and i8 4, 8 ; <i8> [#uses=2] + %B = or i8 %A, 7 ; <i8> [#uses=1] + %C = xor i8 %B, %A ; <i8> [#uses=0] + %A.upgrd.1 = and i16 4, 8 ; <i16> [#uses=2] + %B.upgrd.2 = or i16 %A.upgrd.1, 7 ; <i16> [#uses=1] + %C.upgrd.3 = xor i16 %B.upgrd.2, %A.upgrd.1 ; <i16> [#uses=0] + %A.upgrd.4 = and i32 4, 8 ; <i32> [#uses=2] + %B.upgrd.5 = or i32 %A.upgrd.4, 7 ; <i32> [#uses=1] + %C.upgrd.6 = xor i32 %B.upgrd.5, %A.upgrd.4 ; <i32> [#uses=0] + %A.upgrd.7 = and i64 4, 8 ; <i64> [#uses=2] + %B.upgrd.8 = or i64 %A.upgrd.7, 7 ; <i64> [#uses=1] + %C.upgrd.9 = xor i64 %B.upgrd.8, %A.upgrd.7 ; <i64> [#uses=0] + ret i32 0 } + diff --git a/test/ExecutionEngine/test-loop.ll b/test/ExecutionEngine/test-loop.ll index 79ffbd2..d428adc 100644 --- a/test/ExecutionEngine/test-loop.ll +++ b/test/ExecutionEngine/test-loop.ll @@ -1,13 +1,15 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -int %main() { +define i32 @main() { +; <label>:0 br label %Loop -Loop: - %I = phi int [0, %0], [%i2, %Loop] - %i2 = add int %I, 1 - %C = seteq int %i2, 10 - br bool %C, label %Out, label %Loop -Out: - ret int 0 +Loop: ; preds = %Loop, %0 + %I = phi i32 [ 0, %0 ], [ %i2, %Loop ] ; <i32> [#uses=1] + %i2 = add i32 %I, 1 ; <i32> [#uses=2] + %C = icmp eq i32 %i2, 10 ; <i1> [#uses=1] + br i1 %C, label %Out, label %Loop +Out: ; preds = %Loop + ret i32 0 } + diff --git a/test/ExecutionEngine/test-malloc.ll b/test/ExecutionEngine/test-malloc.ll index 7a7f245..843a389 100644 --- a/test/ExecutionEngine/test-malloc.ll +++ b/test/ExecutionEngine/test-malloc.ll @@ -1,14 +1,14 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -int %main() { - %X = malloc int ; constant size - %Y = malloc int, uint 100 ; constant size - %u = add uint 1, 2 - %Z = malloc int, uint %u ; variable size - free int* %X - free int* %Y - free int* %Z - ret int 0 +define i32 @main() { + %X = malloc i32 ; <i32*> [#uses=1] + %Y = malloc i32, i32 100 ; <i32*> [#uses=1] + %u = add i32 1, 2 ; <i32> [#uses=1] + %Z = malloc i32, i32 %u ; <i32*> [#uses=1] + free i32* %X + free i32* %Y + free i32* %Z + ret i32 0 } + diff --git a/test/ExecutionEngine/test-phi.ll b/test/ExecutionEngine/test-phi.ll index e50cbad..9ca1eb4 100644 --- a/test/ExecutionEngine/test-phi.ll +++ b/test/ExecutionEngine/test-phi.ll @@ -1,32 +1,35 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; test phi node +@Y = global i32 6 ; <i32*> [#uses=1] -%Y = global int 6 - -void %blah(int *%X) { +define void @blah(i32* %X) { +; <label>:0 br label %T -T: - phi int* [%X, %0], [%Y, %Dead] +T: ; preds = %Dead, %0 + phi i32* [ %X, %0 ], [ @Y, %Dead ] ; <i32*>:1 [#uses=0] ret void -Dead: +Dead: ; No predecessors! br label %T } -int %test(bool %C) { - br bool %C, label %T, label %T -T: - %X = phi int [123, %0], [123, %0] - ret int %X +define i32 @test(i1 %C) { +; <label>:0 + br i1 %C, label %T, label %T +T: ; preds = %0, %0 + %X = phi i32 [ 123, %0 ], [ 123, %0 ] ; <i32> [#uses=1] + ret i32 %X } -int %main() { +define i32 @main() { +; <label>:0 br label %Test -Test: - %X = phi int [0, %0], [%Y, %Dead] - ret int %X -Dead: - %Y = shr int 12, ubyte 4 +Test: ; preds = %Dead, %0 + %X = phi i32 [ 0, %0 ], [ %Y, %Dead ] ; <i32> [#uses=1] + ret i32 %X +Dead: ; No predecessors! + %Y = ashr i32 12, 4 ; <i32> [#uses=1] br label %Test } + diff --git a/test/ExecutionEngine/test-ret.ll b/test/ExecutionEngine/test-ret.ll index e206912..2d79945 100644 --- a/test/ExecutionEngine/test-ret.ll +++ b/test/ExecutionEngine/test-ret.ll @@ -1,16 +1,47 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null ; test return instructions +define void @test1() { + ret void +} -void %test1() { ret void } -sbyte %test2() { ret sbyte 1 } -ubyte %test3() { ret ubyte 1 } -short %test4() { ret short -1 } -ushort %test5() { ret ushort 65535 } -int %main() { ret int 0 } -uint %test6() { ret uint 4 } -long %test7() { ret long 0 } -ulong %test8() { ret ulong 0 } -float %test9() { ret float 1.0 } -double %test10() { ret double 2.0 } +define i8 @test2() { + ret i8 1 +} + +define i8 @test3() { + ret i8 1 +} + +define i16 @test4() { + ret i16 -1 +} + +define i16 @test5() { + ret i16 -1 +} + +define i32 @main() { + ret i32 0 +} + +define i32 @test6() { + ret i32 4 +} + +define i64 @test7() { + ret i64 0 +} + +define i64 @test8() { + ret i64 0 +} + +define float @test9() { + ret float 1.000000e+00 +} + +define double @test10() { + ret double 2.000000e+00 +} diff --git a/test/ExecutionEngine/test-setcond-fp.ll b/test/ExecutionEngine/test-setcond-fp.ll index 3f54d6f..2f53e90 100644 --- a/test/ExecutionEngine/test-setcond-fp.ll +++ b/test/ExecutionEngine/test-setcond-fp.ll @@ -1,23 +1,25 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -int %main() { - %double1 = add double 0.0, 0.0 - %double2 = add double 0.0, 0.0 - %float1 = add float 0.0, 0.0 - %float2 = add float 0.0, 0.0 - %test49 = seteq float %float1, %float2 - %test50 = setge float %float1, %float2 - %test51 = setgt float %float1, %float2 - %test52 = setle float %float1, %float2 - %test53 = setlt float %float1, %float2 - %test54 = setne float %float1, %float2 - %test55 = seteq double %double1, %double2 - %test56 = setge double %double1, %double2 - %test57 = setgt double %double1, %double2 - %test58 = setle double %double1, %double2 - %test59 = setlt double %double1, %double2 - %test60 = setne double %double1, %double2 - ret int 0 +define i32 @main() { + %double1 = add double 0.000000e+00, 0.000000e+00 ; <double> [#uses=6] + %double2 = add double 0.000000e+00, 0.000000e+00 ; <double> [#uses=6] + %float1 = add float 0.000000e+00, 0.000000e+00 ; <float> [#uses=6] + %float2 = add float 0.000000e+00, 0.000000e+00 ; <float> [#uses=6] + %test49 = fcmp oeq float %float1, %float2 ; <i1> [#uses=0] + %test50 = fcmp oge float %float1, %float2 ; <i1> [#uses=0] + %test51 = fcmp ogt float %float1, %float2 ; <i1> [#uses=0] + %test52 = fcmp ole float %float1, %float2 ; <i1> [#uses=0] + %test53 = fcmp olt float %float1, %float2 ; <i1> [#uses=0] + %test54 = fcmp une float %float1, %float2 ; <i1> [#uses=0] + %test55 = fcmp oeq double %double1, %double2 ; <i1> [#uses=0] + %test56 = fcmp oge double %double1, %double2 ; <i1> [#uses=0] + %test57 = fcmp ogt double %double1, %double2 ; <i1> [#uses=0] + %test58 = fcmp ole double %double1, %double2 ; <i1> [#uses=0] + %test59 = fcmp olt double %double1, %double2 ; <i1> [#uses=0] + %test60 = fcmp une double %double1, %double2 ; <i1> [#uses=0] + ret i32 0 } + + diff --git a/test/ExecutionEngine/test-setcond-int.ll b/test/ExecutionEngine/test-setcond-int.ll index db5b48b..5ec4ec9 100644 --- a/test/ExecutionEngine/test-setcond-int.ll +++ b/test/ExecutionEngine/test-setcond-int.ll @@ -1,71 +1,70 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null - -int %main() { - %int1 = add int 0, 0 - %int2 = add int 0, 0 - %long1 = add long 0, 0 - %long2 = add long 0, 0 - %sbyte1 = add sbyte 0, 0 - %sbyte2 = add sbyte 0, 0 - %short1 = add short 0, 0 - %short2 = add short 0, 0 - %ubyte1 = add ubyte 0, 0 - %ubyte2 = add ubyte 0, 0 - %uint1 = add uint 0, 0 - %uint2 = add uint 0, 0 - %ulong1 = add ulong 0, 0 - %ulong2 = add ulong 0, 0 - %ushort1 = add ushort 0, 0 - %ushort2 = add ushort 0, 0 - %test1 = seteq ubyte %ubyte1, %ubyte2 - %test2 = setge ubyte %ubyte1, %ubyte2 - %test3 = setgt ubyte %ubyte1, %ubyte2 - %test4 = setle ubyte %ubyte1, %ubyte2 - %test5 = setlt ubyte %ubyte1, %ubyte2 - %test6 = setne ubyte %ubyte1, %ubyte2 - %test7 = seteq ushort %ushort1, %ushort2 - %test8 = setge ushort %ushort1, %ushort2 - %test9 = setgt ushort %ushort1, %ushort2 - %test10 = setle ushort %ushort1, %ushort2 - %test11 = setlt ushort %ushort1, %ushort2 - %test12 = setne ushort %ushort1, %ushort2 - %test13 = seteq uint %uint1, %uint2 - %test14 = setge uint %uint1, %uint2 - %test15 = setgt uint %uint1, %uint2 - %test16 = setle uint %uint1, %uint2 - %test17 = setlt uint %uint1, %uint2 - %test18 = setne uint %uint1, %uint2 - %test19 = seteq ulong %ulong1, %ulong2 - %test20 = setge ulong %ulong1, %ulong2 - %test21 = setgt ulong %ulong1, %ulong2 - %test22 = setle ulong %ulong1, %ulong2 - %test23 = setlt ulong %ulong1, %ulong2 - %test24 = setne ulong %ulong1, %ulong2 - %test25 = seteq sbyte %sbyte1, %sbyte2 - %test26 = setge sbyte %sbyte1, %sbyte2 - %test27 = setgt sbyte %sbyte1, %sbyte2 - %test28 = setle sbyte %sbyte1, %sbyte2 - %test29 = setlt sbyte %sbyte1, %sbyte2 - %test30 = setne sbyte %sbyte1, %sbyte2 - %test31 = seteq short %short1, %short2 - %test32 = setge short %short1, %short2 - %test33 = setgt short %short1, %short2 - %test34 = setle short %short1, %short2 - %test35 = setlt short %short1, %short2 - %test36 = setne short %short1, %short2 - %test37 = seteq int %int1, %int2 - %test38 = setge int %int1, %int2 - %test39 = setgt int %int1, %int2 - %test40 = setle int %int1, %int2 - %test41 = setlt int %int1, %int2 - %test42 = setne int %int1, %int2 - %test43 = seteq long %long1, %long2 - %test44 = setge long %long1, %long2 - %test45 = setgt long %long1, %long2 - %test46 = setle long %long1, %long2 - %test47 = setlt long %long1, %long2 - %test48 = setne long %long1, %long2 - ret int 0 +define i32 @main() { + %int1 = add i32 0, 0 ; <i32> [#uses=6] + %int2 = add i32 0, 0 ; <i32> [#uses=6] + %long1 = add i64 0, 0 ; <i64> [#uses=6] + %long2 = add i64 0, 0 ; <i64> [#uses=6] + %sbyte1 = add i8 0, 0 ; <i8> [#uses=6] + %sbyte2 = add i8 0, 0 ; <i8> [#uses=6] + %short1 = add i16 0, 0 ; <i16> [#uses=6] + %short2 = add i16 0, 0 ; <i16> [#uses=6] + %ubyte1 = add i8 0, 0 ; <i8> [#uses=6] + %ubyte2 = add i8 0, 0 ; <i8> [#uses=6] + %uint1 = add i32 0, 0 ; <i32> [#uses=6] + %uint2 = add i32 0, 0 ; <i32> [#uses=6] + %ulong1 = add i64 0, 0 ; <i64> [#uses=6] + %ulong2 = add i64 0, 0 ; <i64> [#uses=6] + %ushort1 = add i16 0, 0 ; <i16> [#uses=6] + %ushort2 = add i16 0, 0 ; <i16> [#uses=6] + %test1 = icmp eq i8 %ubyte1, %ubyte2 ; <i1> [#uses=0] + %test2 = icmp uge i8 %ubyte1, %ubyte2 ; <i1> [#uses=0] + %test3 = icmp ugt i8 %ubyte1, %ubyte2 ; <i1> [#uses=0] + %test4 = icmp ule i8 %ubyte1, %ubyte2 ; <i1> [#uses=0] + %test5 = icmp ult i8 %ubyte1, %ubyte2 ; <i1> [#uses=0] + %test6 = icmp ne i8 %ubyte1, %ubyte2 ; <i1> [#uses=0] + %test7 = icmp eq i16 %ushort1, %ushort2 ; <i1> [#uses=0] + %test8 = icmp uge i16 %ushort1, %ushort2 ; <i1> [#uses=0] + %test9 = icmp ugt i16 %ushort1, %ushort2 ; <i1> [#uses=0] + %test10 = icmp ule i16 %ushort1, %ushort2 ; <i1> [#uses=0] + %test11 = icmp ult i16 %ushort1, %ushort2 ; <i1> [#uses=0] + %test12 = icmp ne i16 %ushort1, %ushort2 ; <i1> [#uses=0] + %test13 = icmp eq i32 %uint1, %uint2 ; <i1> [#uses=0] + %test14 = icmp uge i32 %uint1, %uint2 ; <i1> [#uses=0] + %test15 = icmp ugt i32 %uint1, %uint2 ; <i1> [#uses=0] + %test16 = icmp ule i32 %uint1, %uint2 ; <i1> [#uses=0] + %test17 = icmp ult i32 %uint1, %uint2 ; <i1> [#uses=0] + %test18 = icmp ne i32 %uint1, %uint2 ; <i1> [#uses=0] + %test19 = icmp eq i64 %ulong1, %ulong2 ; <i1> [#uses=0] + %test20 = icmp uge i64 %ulong1, %ulong2 ; <i1> [#uses=0] + %test21 = icmp ugt i64 %ulong1, %ulong2 ; <i1> [#uses=0] + %test22 = icmp ule i64 %ulong1, %ulong2 ; <i1> [#uses=0] + %test23 = icmp ult i64 %ulong1, %ulong2 ; <i1> [#uses=0] + %test24 = icmp ne i64 %ulong1, %ulong2 ; <i1> [#uses=0] + %test25 = icmp eq i8 %sbyte1, %sbyte2 ; <i1> [#uses=0] + %test26 = icmp sge i8 %sbyte1, %sbyte2 ; <i1> [#uses=0] + %test27 = icmp sgt i8 %sbyte1, %sbyte2 ; <i1> [#uses=0] + %test28 = icmp sle i8 %sbyte1, %sbyte2 ; <i1> [#uses=0] + %test29 = icmp slt i8 %sbyte1, %sbyte2 ; <i1> [#uses=0] + %test30 = icmp ne i8 %sbyte1, %sbyte2 ; <i1> [#uses=0] + %test31 = icmp eq i16 %short1, %short2 ; <i1> [#uses=0] + %test32 = icmp sge i16 %short1, %short2 ; <i1> [#uses=0] + %test33 = icmp sgt i16 %short1, %short2 ; <i1> [#uses=0] + %test34 = icmp sle i16 %short1, %short2 ; <i1> [#uses=0] + %test35 = icmp slt i16 %short1, %short2 ; <i1> [#uses=0] + %test36 = icmp ne i16 %short1, %short2 ; <i1> [#uses=0] + %test37 = icmp eq i32 %int1, %int2 ; <i1> [#uses=0] + %test38 = icmp sge i32 %int1, %int2 ; <i1> [#uses=0] + %test39 = icmp sgt i32 %int1, %int2 ; <i1> [#uses=0] + %test40 = icmp sle i32 %int1, %int2 ; <i1> [#uses=0] + %test41 = icmp slt i32 %int1, %int2 ; <i1> [#uses=0] + %test42 = icmp ne i32 %int1, %int2 ; <i1> [#uses=0] + %test43 = icmp eq i64 %long1, %long2 ; <i1> [#uses=0] + %test44 = icmp sge i64 %long1, %long2 ; <i1> [#uses=0] + %test45 = icmp sgt i64 %long1, %long2 ; <i1> [#uses=0] + %test46 = icmp sle i64 %long1, %long2 ; <i1> [#uses=0] + %test47 = icmp slt i64 %long1, %long2 ; <i1> [#uses=0] + %test48 = icmp ne i64 %long1, %long2 ; <i1> [#uses=0] + ret i32 0 } diff --git a/test/ExecutionEngine/test-shift.ll b/test/ExecutionEngine/test-shift.ll index 2549f34..ebb85d3 100644 --- a/test/ExecutionEngine/test-shift.ll +++ b/test/ExecutionEngine/test-shift.ll @@ -1,40 +1,33 @@ -; RUN: llvm-upgrade %s | llvm-as -f -o %t.bc +; RUN: llvm-as < %s -f -o %t.bc ; RUN: lli %t.bc > /dev/null -; test shifts -int %main() { - %shamt = add ubyte 0, 1 - - ; Left shifts... - %t1.s = shl int 1, ubyte %shamt - %t2.s = shl int 1, ubyte 4 - - %t1 = shl uint 1, ubyte %shamt - %t2 = shl uint 1, ubyte 5 - - ;%t1 = shl long 1, ubyte %shamt - %t2.s = shl long 1, ubyte 4 - - ;%t1 = shl ulong 1, ubyte %shamt - %t2 = shl ulong 1, ubyte 5 - - ; Right shifts... - %tr1.s = shr int 1, ubyte %shamt - %tr2.s = shr int 1, ubyte 4 - - %tr1 = shr uint 1, ubyte %shamt - %tr2 = shr uint 1, ubyte 5 - - ;%tr1 = shr long 1, ubyte %shamt - %tr1.l = shr long 1, ubyte 4 - %tr2.l = shr long 1, ubyte %shamt - %tr3.l = shl long 1, ubyte 4 - %tr4.l = shl long 1, ubyte %shamt - - ;%t1 = shr ulong 1, ubyte %shamt - %tr1.u = shr ulong 1, ubyte 5 - %tr2.u = shr ulong 1, ubyte %shamt - %tr3.u = shl ulong 1, ubyte 5 - %tr4.u = shl ulong 1, ubyte %shamt - ret int 0 +define i32 @main() { + %shamt = add i8 0, 1 ; <i8> [#uses=8] + %shift.upgrd.1 = zext i8 %shamt to i32 ; <i32> [#uses=1] + %t1.s = shl i32 1, %shift.upgrd.1 ; <i32> [#uses=0] + %t2.s = shl i32 1, 4 ; <i32> [#uses=0] + %shift.upgrd.2 = zext i8 %shamt to i32 ; <i32> [#uses=1] + %t1 = shl i32 1, %shift.upgrd.2 ; <i32> [#uses=0] + %t2 = shl i32 1, 5 ; <i32> [#uses=0] + %t2.s.upgrd.3 = shl i64 1, 4 ; <i64> [#uses=0] + %t2.upgrd.4 = shl i64 1, 5 ; <i64> [#uses=0] + %shift.upgrd.5 = zext i8 %shamt to i32 ; <i32> [#uses=1] + %tr1.s = ashr i32 1, %shift.upgrd.5 ; <i32> [#uses=0] + %tr2.s = ashr i32 1, 4 ; <i32> [#uses=0] + %shift.upgrd.6 = zext i8 %shamt to i32 ; <i32> [#uses=1] + %tr1 = lshr i32 1, %shift.upgrd.6 ; <i32> [#uses=0] + %tr2 = lshr i32 1, 5 ; <i32> [#uses=0] + %tr1.l = ashr i64 1, 4 ; <i64> [#uses=0] + %shift.upgrd.7 = zext i8 %shamt to i64 ; <i64> [#uses=1] + %tr2.l = ashr i64 1, %shift.upgrd.7 ; <i64> [#uses=0] + %tr3.l = shl i64 1, 4 ; <i64> [#uses=0] + %shift.upgrd.8 = zext i8 %shamt to i64 ; <i64> [#uses=1] + %tr4.l = shl i64 1, %shift.upgrd.8 ; <i64> [#uses=0] + %tr1.u = lshr i64 1, 5 ; <i64> [#uses=0] + %shift.upgrd.9 = zext i8 %shamt to i64 ; <i64> [#uses=1] + %tr2.u = lshr i64 1, %shift.upgrd.9 ; <i64> [#uses=0] + %tr3.u = shl i64 1, 5 ; <i64> [#uses=0] + %shift.upgrd.10 = zext i8 %shamt to i64 ; <i64> [#uses=1] + %tr4.u = shl i64 1, %shift.upgrd.10 ; <i64> [#uses=0] + ret i32 0 } diff --git a/test/Linker/2003-11-18-TypeResolution.ll b/test/Linker/2003-11-18-TypeResolution.ll index ff22e31..d3152ed 100644 --- a/test/Linker/2003-11-18-TypeResolution.ll +++ b/test/Linker/2003-11-18-TypeResolution.ll @@ -4,19 +4,16 @@ ; little symbol table. This is causing llvm-link to die, at no fault of its ; own. -; RUN: llvm-upgrade %s | llvm-as > %t.out2.bc +; RUN: llvm-as < %s > %t.out2.bc ; RUN: echo "%T1 = type opaque @GVar = external global %T1*" | llvm-as > %t.out1.bc ; RUN: llvm-link %t.out1.bc %t.out2.bc - %T1 = type opaque - %T2 = type int +%T1 = type opaque +%T2 = type i32 +@GVar = global i32* null ; <i32**> [#uses=0] -%GVar = global %T2 * null - -implementation - -void %foo(%T2 * %X) { - %X = cast %T2* %X to %T1 * +define void @foo(i32* %X) { + %X.upgrd.1 = bitcast i32* %X to %T1* ; <%T1*> [#uses=0] ret void } diff --git a/test/Linker/2004-02-17-WeakStrongLinkage.ll b/test/Linker/2004-02-17-WeakStrongLinkage.ll index 4c6e8f8..0e970dd 100644 --- a/test/Linker/2004-02-17-WeakStrongLinkage.ll +++ b/test/Linker/2004-02-17-WeakStrongLinkage.ll @@ -1,7 +1,7 @@ -; RUN: llvm-upgrade < %s | llvm-as > %t.out2.bc -; RUN: echo "%me = global int* null" | llvm-upgrade | llvm-as > %t.out1.bc +; RUN: llvm-as < %s > %t.out2.bc +; RUN: echo "@me = global i32* null" | llvm-as > %t.out1.bc ; RUN: llvm-link %t.out1.bc %t.out2.bc -o /dev/null -f -%me = weak global int * null +@me = weak global i32* null ; <i32**> [#uses=0] diff --git a/test/Linker/2004-05-07-TypeResolution1.ll b/test/Linker/2004-05-07-TypeResolution1.ll index 1c90079..970a6d2 100644 --- a/test/Linker/2004-05-07-TypeResolution1.ll +++ b/test/Linker/2004-05-07-TypeResolution1.ll @@ -1,45 +1,35 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t1.bc -; RUN: llvm-upgrade < %p/2004-05-07-TypeResolution2.ll | \ -; RUN: llvm-as -o %t2.bc -f +; RUN: llvm-as < %s -f -o %t1.bc +; RUN: llvm-as < %p/2004-05-07-TypeResolution2.ll -o %t2.bc -f ; RUN: llvm-link -f -o %t3.bc %t1.bc %t2.bc -target endian = little -target pointersize = 32 - - %myint = type opaque +target datalayout = "e-p:32:32" + %myint = type opaque + %struct1 = type { i32, void (%struct2*)*, %myint*, i32 (i32*)* } %struct2 = type { %struct1 } - - %struct1 = type { int, void (%struct2*)*, %myint *, int (uint *)* } - - -%driver1 = global %struct1 zeroinitializer ; <%struct1*> [#uses=1] - -%m1 = external global [1 x sbyte] * ; <%struct.task_struct**> [#uses=0] -;%m1 = external global uint ; <%struct.task_struct**> [#uses=0] -%str1 = constant [1 x ubyte] zeroinitializer -%str2 = constant [2 x ubyte] zeroinitializer -%str3 = constant [3 x ubyte] zeroinitializer -%str4 = constant [4 x ubyte] zeroinitializer -%str5 = constant [5 x ubyte] zeroinitializer -%str6 = constant [6 x ubyte] zeroinitializer -%str7 = constant [7 x ubyte] zeroinitializer -%str8 = constant [8 x ubyte] zeroinitializer -%str9 = constant [9 x ubyte] zeroinitializer -%stra = constant [10 x ubyte] zeroinitializer -%strb = constant [11 x ubyte] zeroinitializer -%strc = constant [12 x ubyte] zeroinitializer -%strd = constant [13 x ubyte] zeroinitializer -%stre = constant [14 x ubyte] zeroinitializer -%strf = constant [15 x ubyte] zeroinitializer -%strg = constant [16 x ubyte] zeroinitializer -%strh = constant [17 x ubyte] zeroinitializer - -implementation ; Functions: - -declare void %func(%struct2*) - -void %tty_init() { +@driver1 = global %struct1 zeroinitializer ; <%struct1*> [#uses=1] +@m1 = external global [1 x i8]* ; <[1 x i8]**> [#uses=0] +@str1 = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=0] +@str2 = constant [2 x i8] zeroinitializer ; <[2 x i8]*> [#uses=0] +@str3 = constant [3 x i8] zeroinitializer ; <[3 x i8]*> [#uses=0] +@str4 = constant [4 x i8] zeroinitializer ; <[4 x i8]*> [#uses=0] +@str5 = constant [5 x i8] zeroinitializer ; <[5 x i8]*> [#uses=0] +@str6 = constant [6 x i8] zeroinitializer ; <[6 x i8]*> [#uses=0] +@str7 = constant [7 x i8] zeroinitializer ; <[7 x i8]*> [#uses=0] +@str8 = constant [8 x i8] zeroinitializer ; <[8 x i8]*> [#uses=0] +@str9 = constant [9 x i8] zeroinitializer ; <[9 x i8]*> [#uses=0] +@stra = constant [10 x i8] zeroinitializer ; <[10 x i8]*> [#uses=0] +@strb = constant [11 x i8] zeroinitializer ; <[11 x i8]*> [#uses=0] +@strc = constant [12 x i8] zeroinitializer ; <[12 x i8]*> [#uses=0] +@strd = constant [13 x i8] zeroinitializer ; <[13 x i8]*> [#uses=0] +@stre = constant [14 x i8] zeroinitializer ; <[14 x i8]*> [#uses=0] +@strf = constant [15 x i8] zeroinitializer ; <[15 x i8]*> [#uses=0] +@strg = constant [16 x i8] zeroinitializer ; <[16 x i8]*> [#uses=0] +@strh = constant [17 x i8] zeroinitializer ; <[17 x i8]*> [#uses=0] + +declare void @func(%struct2*) + +define void @tty_init() { entry: - volatile store void (%struct2*)* %func, void (%struct2 *)** getelementptr (%struct1* %driver1, uint 0, uint 1) + volatile store void (%struct2*)* @func, void (%struct2*)** getelementptr (%struct1* @driver1, i64 0, i32 1) ret void } diff --git a/test/Linker/2004-05-07-TypeResolution2.ll b/test/Linker/2004-05-07-TypeResolution2.ll index 05be611..74fe39f 100644 --- a/test/Linker/2004-05-07-TypeResolution2.ll +++ b/test/Linker/2004-05-07-TypeResolution2.ll @@ -1,25 +1,15 @@ ; This file is used by testlink1.ll, so it doesn't actually do anything itself ; ; RUN: echo - -target endian = little -target pointersize = 32 - - %myint = type ushort +target datalayout = "e-p:32:32" + %myint = type i16 + %struct1 = type { i32, void (%struct2*)*, i16*, i32 (i32*)* } %struct2 = type { %struct1 } - %struct1 = type { int, void (%struct2*)*, %myint *, int (uint *)* } - -implementation ; Functions: -internal void %f1 (%struct1* %tty) { +define internal void @f1(%struct1* %tty) { loopentry.preheader: - - ; <void (%struct2*, ubyte)**> [#uses=1] - ; <void (%struct2*, ubyte)*> [#uses=0] - - %tmp.2.i.i = getelementptr %struct1* %tty, uint 0, uint 1 - %tmp.3.i.i = volatile load void (%struct2*)** %tmp.2.i.i - + %tmp.2.i.i = getelementptr %struct1* %tty, i64 0, i32 1 ; <void (%struct2*)**> [#uses=1] + %tmp.3.i.i = volatile load void (%struct2*)** %tmp.2.i.i ; <void (%struct2*)*> [#uses=0] ret void } diff --git a/test/Linker/2005-02-12-ConstantGlobals.ll b/test/Linker/2005-02-12-ConstantGlobals.ll index fbc0bc1..4077372 100644 --- a/test/Linker/2005-02-12-ConstantGlobals.ll +++ b/test/Linker/2005-02-12-ConstantGlobals.ll @@ -2,7 +2,7 @@ ; to be nonconst. ; RUN: echo {@X = global i32 7} | llvm-as > %t.2.bc -; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc +; RUN: llvm-as < %s > %t.1.bc ; RUN: llvm-link %t.1.bc %t.2.bc | llvm-dis | grep {global i32 7} -@X = external constant i32 +@X = external constant i32 ; <i32*> [#uses=0] diff --git a/test/Linker/2005-12-06-AppendingZeroLengthArrays.ll b/test/Linker/2005-12-06-AppendingZeroLengthArrays.ll index 3e57bec..2637da1 100644 --- a/test/Linker/2005-12-06-AppendingZeroLengthArrays.ll +++ b/test/Linker/2005-12-06-AppendingZeroLengthArrays.ll @@ -1,9 +1,10 @@ ; RUN: echo { @G = appending global \[0 x i32\] zeroinitializer } | \ ; RUN: llvm-as > %t.out2.bc -; RUN: llvm-upgrade < %s | llvm-as > %t.out1.bc +; RUN: llvm-as < %s > %t.out1.bc ; RUN: llvm-link %t.out1.bc %t.out2.bc | llvm-dis | grep {@G =} ; When linked, the globals should be merged, and the result should still ; be named '@G'. -%G = appending global [1 x int] zeroinitializer +@G = appending global [1 x i32] zeroinitializer ; <[1 x i32]*> [#uses=0] + diff --git a/test/Linker/2006-01-19-ConstantPacked.ll b/test/Linker/2006-01-19-ConstantPacked.ll index 7b405f3..1cb4749 100644 --- a/test/Linker/2006-01-19-ConstantPacked.ll +++ b/test/Linker/2006-01-19-ConstantPacked.ll @@ -1,15 +1,13 @@ -; RUN: llvm-upgrade < %s | llvm-as -f -o %t1.bc +; RUN: llvm-as < %s -f -o %t1.bc ; RUN: llvm-link -f -o %t2.bc %t1.bc -target endian = big -target pointersize = 32 +target datalayout = "E-p:32:32" target triple = "powerpc-apple-darwin7.7.0" deplibs = [ "c", "crtend" ] -%source = global <4 x int> < int 0, int 1, int 2, int 3 > +@source = global <4 x i32> < i32 0, i32 1, i32 2, i32 3 > ; <<4 x i32>*> [#uses=0] -implementation ; Functions: - -int %main() { +define i32 @main() { entry: - ret int 0 + ret i32 0 } + diff --git a/test/Linker/AppendingLinkage.ll b/test/Linker/AppendingLinkage.ll index d59a374..da08ca0 100644 --- a/test/Linker/AppendingLinkage.ll +++ b/test/Linker/AppendingLinkage.ll @@ -1,15 +1,15 @@ ; Test that appending linkage works correctly. -; RUN: echo {%X = appending global \[1 x int\] \[int 8\] } | \ -; RUN: llvm-upgrade | llvm-as > %t.2.bc -; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc +; RUN: echo {@X = appending global \[1 x i32\] \[i32 8\] } | \ +; RUN: llvm-as > %t.2.bc +; RUN: llvm-as < %s > %t.1.bc ; RUN: llvm-link %t.1.bc %t.2.bc | llvm-dis | grep 7 | grep 4 | grep 8 -%X = appending global [2 x int] [int 7, int 4] +@X = appending global [2 x i32] [ i32 7, i32 4 ] ; <[2 x i32]*> [#uses=2] +@Y = global i32* getelementptr ([2 x i32]* @X, i64 0, i64 0) ; <i32**> [#uses=0] -%Y = global int* getelementptr ([2 x int]* %X, long 0, long 0) - -void %foo(long %V) { - %Y = getelementptr [2 x int]* %X, long 0, long %V - ret void +define void @foo(i64 %V) { + %Y = getelementptr [2 x i32]* @X, i64 0, i64 %V ; <i32*> [#uses=0] + ret void } + diff --git a/test/Linker/AppendingLinkage2.ll b/test/Linker/AppendingLinkage2.ll index fc992e0..fddc494 100644 --- a/test/Linker/AppendingLinkage2.ll +++ b/test/Linker/AppendingLinkage2.ll @@ -1,8 +1,8 @@ ; Test that appending linkage works correctly when arrays are the same size. -; RUN: echo {%X = appending global \[1 x int\] \[int 8\] } | \ -; RUN: llvm-upgrade | llvm-as > %t.2.bc -; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc +; RUN: echo {@X = appending global \[1 x i32\] \[i32 8\] } | \ +; RUN: llvm-as > %t.2.bc +; RUN: llvm-as < %s > %t.1.bc ; RUN: llvm-link %t.1.bc %t.2.bc | llvm-dis | grep 7 | grep 8 -%X = appending global [1 x int] [int 7] +@X = appending global [1 x i32] [ i32 7 ] ; <[1 x i32]*> [#uses=0] diff --git a/test/Linker/ConstantGlobals1.ll b/test/Linker/ConstantGlobals1.ll index a5a9ce9..5d42f4b 100644 --- a/test/Linker/ConstantGlobals1.ll +++ b/test/Linker/ConstantGlobals1.ll @@ -1,8 +1,9 @@ ; Test that appending linkage works correctly when arrays are the same size. -; RUN: echo {%X = constant \[1 x int\] \[int 8\] } | \ -; RUN: llvm-upgrade | llvm-as > %t.2.bc -; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc +; RUN: echo {@X = constant \[1 x i32\] \[i32 8\] } | \ +; RUN: llvm-as > %t.2.bc +; RUN: llvm-as < %s > %t.1.bc ; RUN: llvm-link %t.1.bc %t.2.bc | llvm-dis | grep constant -%X = uninitialized global [1 x int] +@X = external global [1 x i32] ; <[1 x i32]*> [#uses=0] + diff --git a/test/Linker/ConstantGlobals2.ll b/test/Linker/ConstantGlobals2.ll index 612603d..9cd6bdb 100644 --- a/test/Linker/ConstantGlobals2.ll +++ b/test/Linker/ConstantGlobals2.ll @@ -1,8 +1,9 @@ ; Test that appending linkage works correctly when arrays are the same size. -; RUN: echo {%X = external global \[1 x int\] } | \ -; RUN: llvm-upgrade | llvm-as > %t.2.bc -; RUN: llvm-upgrade %s -o - | llvm-as > %t.1.bc +; RUN: echo {@X = external global \[1 x i32\] } | \ +; RUN: llvm-as > %t.2.bc +; RUN: llvm-as < %s > %t.1.bc ; RUN: llvm-link %t.1.bc %t.2.bc | llvm-dis | grep constant -%X = constant [1 x int] [ int 12 ] +@X = constant [1 x i32] [ i32 12 ] ; <[1 x i32]*> [#uses=0] + diff --git a/test/Linker/ConstantGlobals3.ll b/test/Linker/ConstantGlobals3.ll index 4435f2d..f9aa07d 100644 --- a/test/Linker/ConstantGlobals3.ll +++ b/test/Linker/ConstantGlobals3.ll @@ -1,8 +1,8 @@ ; Test that appending linkage works correctly when arrays are the same size. -; RUN: echo {%X = external constant \[1 x int\] } | \ -; RUN: llvm-upgrade | llvm-as > %t.2.bc -; RUN: llvm-upgrade %s | llvm-as > %t.1.bc +; RUN: echo {@X = external constant \[1 x i32\] } | \ +; RUN: llvm-as > %t.2.bc +; RUN: llvm-as < %s > %t.1.bc ; RUN: llvm-link %t.1.bc %t.2.bc | llvm-dis | grep constant -%X = uninitialized global [1 x int] +@X = external global [1 x i32] ; <[1 x i32]*> [#uses=0] diff --git a/test/Linker/LinkOnce.ll b/test/Linker/LinkOnce.ll index b1a0216..5befd77 100644 --- a/test/Linker/LinkOnce.ll +++ b/test/Linker/LinkOnce.ll @@ -1,8 +1,8 @@ ; This fails because the linker renames the non-opaque type not the opaque ; one... -; RUN: echo "%X = linkonce global int 8" | llvm-upgrade | llvm-as > %t.2.bc -; RUN: llvm-upgrade < %s | llvm-as > %t.1.bc +; RUN: echo "@X = linkonce global i32 8" | llvm-as > %t.2.bc +; RUN: llvm-as < %s > %t.1.bc ; RUN: llvm-link %t.1.bc %t.2.bc | llvm-dis -%X = linkonce global int 7 +@X = linkonce global i32 7 ; <i32*> [#uses=0] diff --git a/test/Linker/testlink1.ll b/test/Linker/testlink1.ll index df89d84..4a94025 100644 --- a/test/Linker/testlink1.ll +++ b/test/Linker/testlink1.ll @@ -1,48 +1,42 @@ -; RUN: llvm-upgrade < %s | llvm-as > %t.bc -; RUN: llvm-upgrade < %p/testlink2.ll | llvm-as > %t2.bc +; RUN: llvm-as < %s > %t.bc +; RUN: llvm-as < %p/testlink2.ll > %t2.bc ; RUN: llvm-link %t.bc %t2.bc -%MyVar = external global int -%MyIntList = global { \2 *, int } { { \2, int }* null, int 17 } - external global int ; int*:0 - -%Inte = global int 1 - -%AConst = linkonce constant int 123 - -%Intern1 = internal constant int 42 -%Intern2 = internal constant int 792 - -; Initialized to point to external %MyVar -%MyVarPtr = linkonce global { int * } { int * %MyVar } - -declare int "foo"(int %blah) ;; Declared in testlink2.ll - -declare void "print"(int %Value) - -implementation - -void "main"() -begin - %v1 = load int* %MyVar - call void %print(int %v1) ;; Should start out 4 - - %idx = getelementptr { \2 *, int }* %MyIntList, long 0, uint 1 - %v2 = load int* %idx - call void %print(int %v2) ;; Should start out 17 - - call int %foo(int 5) ;; Modify global variablesx - - %v3 = load int* %MyVar - call void %print(int %v3) ;; Should now be 5 - - %v4 = load int* %idx - call void %print(int %v4) ;; Should start out 12 +@MyVar = external global i32 ; <i32*> [#uses=3] +@MyIntList = global { \2*, i32 } { { \2*, i32 }* null, i32 17 } ; <{ \2*, i32 }*> [#uses=1] +external global i32 ; <i32*>:0 [#uses=0] +@Inte = global i32 1 ; <i32*> [#uses=0] +@AConst = linkonce constant i32 123 ; <i32*> [#uses=0] +@Intern1 = internal constant i32 42 ; <i32*> [#uses=0] +@Intern2 = internal constant i32 792 ; <i32*> [#uses=0] +@MyVarPtr = linkonce global { i32* } { i32* @MyVar } ; <{ i32* }*> [#uses=0] + +declare i32 @foo(i32) + +declare void @print(i32) + +define void @main() { + %v1 = load i32* @MyVar ; <i32> [#uses=1] + call void @print( i32 %v1 ) + %idx = getelementptr { \2*, i32 }* @MyIntList, i64 0, i32 1 ; <i32*> [#uses=2] + %v2 = load i32* %idx ; <i32> [#uses=1] + call void @print( i32 %v2 ) + call i32 @foo( i32 5 ) ; <i32>:1 [#uses=0] + %v3 = load i32* @MyVar ; <i32> [#uses=1] + call void @print( i32 %v3 ) + %v4 = load i32* %idx ; <i32> [#uses=1] + call void @print( i32 %v4 ) + ret void +} +define internal void @testintern() { ret void -end +} -internal void "testintern"() begin ret void end -internal void "Testintern"() begin ret void end - void "testIntern"() begin ret void end +define internal void @Testintern() { + ret void +} +define void @testIntern() { + ret void +} diff --git a/test/Linker/testlink2.ll b/test/Linker/testlink2.ll index 0f4468d..d243e3c 100644 --- a/test/Linker/testlink2.ll +++ b/test/Linker/testlink2.ll @@ -2,35 +2,40 @@ ; ; RUN: true -%MyVar = global int 4 -%MyIntList = external global { \2 *, int } - -%AConst = constant int 123 - -%Intern1 = internal constant int 52 ;; Intern in both testlink[12].ll -%Intern2 = constant int 12345 ;; Intern in one but not in other - -%MyIntListPtr = constant { {\2,int}* } { {\2,int}* %MyIntList } -%MyVarPtr = linkonce global { int * } { int * %MyVar } - -constant int 412 - -implementation - -int "foo"(int %blah) -begin - store int %blah, int *%MyVar - %idx = getelementptr { \2 *, int } * %MyIntList, long 0, uint 1 - store int 12, int* %idx - - %ack = load int * %0 ;; Load from the unnamed constant - %fzo = add int %ack, %blah - ret int %fzo -end - -declare void "unimp"(float, double) - -internal void "testintern"() begin ret void end - void "Testintern"() begin ret void end -internal void "testIntern"() begin ret void end +@MyVar = global i32 4 ; <i32*> [#uses=2] +@MyIntList = external global { \2*, i32 } ; <{ \2*, i32 }*> [#uses=2] +@AConst = constant i32 123 ; <i32*> [#uses=0] + +;; Intern in both testlink[12].ll +@Intern1 = internal constant i32 52 ; <i32*> [#uses=0] + +;; Intern in one but not in other +@Intern2 = constant i32 12345 ; <i32*> [#uses=0] + +@MyIntListPtr = constant { { \2*, i32 }* } { { \2*, i32 }* @MyIntList } ; <{ { \2*, i32 }* }*> [#uses=0] +@MyVarPtr = linkonce global { i32* } { i32* @MyVar } ; <{ i32* }*> [#uses=0] +constant i32 412 ; <i32*>:0 [#uses=1] + +define i32 @foo(i32 %blah) { + store i32 %blah, i32* @MyVar + %idx = getelementptr { \2*, i32 }* @MyIntList, i64 0, i32 1 ; <i32*> [#uses=1] + store i32 12, i32* %idx + %ack = load i32* @0 ; <i32> [#uses=1] + %fzo = add i32 %ack, %blah ; <i32> [#uses=1] + ret i32 %fzo +} + +declare void @unimp(float, double) + +define internal void @testintern() { + ret void +} + +define void @Testintern() { + ret void +} + +define internal void @testIntern() { + ret void +} diff --git a/test/Linker/weakextern.ll b/test/Linker/weakextern.ll index 60ca596..edb23bc 100644 --- a/test/Linker/weakextern.ll +++ b/test/Linker/weakextern.ll @@ -1,12 +1,11 @@ -; RUN: llvm-upgrade < %s | llvm-as > %t.bc -; RUN: llvm-upgrade < %p/testlink1.ll | llvm-as > %t2.bc +; RUN: llvm-as < %s > %t.bc +; RUN: llvm-as < %p/testlink1.ll > %t2.bc ; RUN: llvm-link %t.bc %t.bc %t2.bc -o %t1.bc -f ; RUN: llvm-dis < %t1.bc | grep {kallsyms_names = extern_weak} ; RUN: llvm-dis < %t1.bc | grep {MyVar = external global i32} ; RUN: llvm-dis < %t1.bc | grep {Inte = global i32} -%kallsyms_names = extern_weak global [0 x ubyte] -%MyVar = extern_weak global int -%Inte = extern_weak global int +@kallsyms_names = extern_weak global [0 x i8] ; <[0 x i8]*> [#uses=0] +@MyVar = extern_weak global i32 ; <i32*> [#uses=0] +@Inte = extern_weak global i32 ; <i32*> [#uses=0] -implementation diff --git a/test/Transforms/SimplifyCFG/2002-05-05-EmptyBlockMerge.ll b/test/Transforms/SimplifyCFG/2002-05-05-EmptyBlockMerge.ll index 7f0a57c..5682ff4 100644 --- a/test/Transforms/SimplifyCFG/2002-05-05-EmptyBlockMerge.ll +++ b/test/Transforms/SimplifyCFG/2002-05-05-EmptyBlockMerge.ll @@ -1,24 +1,22 @@ ; Basic block #2 should not be merged into BB #3! ; -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | \ ; RUN: grep {br label} ; -declare void %foo() -implementation -void "cprop_test12"(int* %data) { -bb0: - %reg108 = load int* %data - %cond218 = setne int %reg108, 5 - br bool %cond218, label %bb3, label %bb2 - -bb2: - call void %foo() - br label %bb3 +declare void @foo() -bb3: - %reg117 = phi int [ 110, %bb2 ], [ %reg108, %bb0 ] - store int %reg117, int* %data - ret void +define void @cprop_test12(i32* %data) { +bb0: + %reg108 = load i32* %data ; <i32> [#uses=2] + %cond218 = icmp ne i32 %reg108, 5 ; <i1> [#uses=1] + br i1 %cond218, label %bb3, label %bb2 +bb2: ; preds = %bb0 + call void @foo( ) + br label %bb3 +bb3: ; preds = %bb2, %bb0 + %reg117 = phi i32 [ 110, %bb2 ], [ %reg108, %bb0 ] ; <i32> [#uses=1] + store i32 %reg117, i32* %data + ret void } diff --git a/test/Transforms/SimplifyCFG/2002-05-21-PHIElimination.ll b/test/Transforms/SimplifyCFG/2002-05-21-PHIElimination.ll index 1ef6593..c955d66 100644 --- a/test/Transforms/SimplifyCFG/2002-05-21-PHIElimination.ll +++ b/test/Transforms/SimplifyCFG/2002-05-21-PHIElimination.ll @@ -4,16 +4,16 @@ ; ; Which is not valid SSA ; -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis - -void "test"() { - br bool true, label %end, label %Loop - -Loop: - %V = phi int [0, %0], [%V1, %Loop] - %V1 = add int %V, 1 +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis +define void @test() { +; <label>:0 + br i1 true, label %end, label %Loop +Loop: ; preds = %Loop, %0 + %V = phi i32 [ 0, %0 ], [ %V1, %Loop ] ; <i32> [#uses=1] + %V1 = add i32 %V, 1 ; <i32> [#uses=1] br label %Loop -end: +end: ; preds = %0 ret void } + diff --git a/test/Transforms/SimplifyCFG/2002-06-24-PHINode.ll b/test/Transforms/SimplifyCFG/2002-06-24-PHINode.ll index a669a3f..87b4286 100644 --- a/test/Transforms/SimplifyCFG/2002-06-24-PHINode.ll +++ b/test/Transforms/SimplifyCFG/2002-06-24-PHINode.ll @@ -1,14 +1,14 @@ ; -simplifycfg is not folding blocks if there is a PHI node involved. This ; should be fixed eventually -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | not grep br - -int %main(int %argc) { - br label %InlinedFunctionReturnNode - -InlinedFunctionReturnNode: ;[#uses=1] - %X = phi int [ 7, %0 ] ; <int> [#uses=1] - %Y = add int %X, %argc ; <int> [#uses=1] - ret int %Y +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | not grep br + +define i32 @main(i32 %argc) { +; <label>:0 + br label %InlinedFunctionReturnNode +InlinedFunctionReturnNode: ; preds = %0 + %X = phi i32 [ 7, %0 ] ; <i32> [#uses=1] + %Y = add i32 %X, %argc ; <i32> [#uses=1] + ret i32 %Y } diff --git a/test/Transforms/SimplifyCFG/2002-09-24-PHIAssertion.ll b/test/Transforms/SimplifyCFG/2002-09-24-PHIAssertion.ll index f1674b7..75beb34 100644 --- a/test/Transforms/SimplifyCFG/2002-09-24-PHIAssertion.ll +++ b/test/Transforms/SimplifyCFG/2002-09-24-PHIAssertion.ll @@ -1,12 +1,13 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg +; RUN: llvm-as < %s | opt -simplifycfg -int %test(int %A, int %B, bool %cond) { +define i32 @test(i32 %A, i32 %B, i1 %cond) { J: - %C = add int %A, 12 - br bool %cond, label %L, label %L -L: - %Q = phi int [%C, %J], [%C, %J] ; PHI node is obviously redundant - %D = add int %C, %B - %E = add int %Q, %D - ret int %E + %C = add i32 %A, 12 ; <i32> [#uses=3] + br i1 %cond, label %L, label %L +L: ; preds = %J, %J + %Q = phi i32 [ %C, %J ], [ %C, %J ] ; <i32> [#uses=1] + %D = add i32 %C, %B ; <i32> [#uses=1] + %E = add i32 %Q, %D ; <i32> [#uses=1] + ret i32 %E } + diff --git a/test/Transforms/SimplifyCFG/2003-03-07-DominateProblem.ll b/test/Transforms/SimplifyCFG/2003-03-07-DominateProblem.ll index 312e514..c45a5c9 100644 --- a/test/Transforms/SimplifyCFG/2003-03-07-DominateProblem.ll +++ b/test/Transforms/SimplifyCFG/2003-03-07-DominateProblem.ll @@ -1,22 +1,17 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output -implementation ; Functions: - -void %test(int* %ldo, bool %c, bool %d) { +define void @test(i32* %ldo, i1 %c, i1 %d) { bb9: - br bool %c, label %bb11, label %bb10 - + br i1 %c, label %bb11, label %bb10 bb10: ; preds = %bb9 br label %bb11 - bb11: ; preds = %bb10, %bb9 - %reg330 = phi int* [ null, %bb10 ], [ %ldo, %bb9 ] + %reg330 = phi i32* [ null, %bb10 ], [ %ldo, %bb9 ] ; <i32*> [#uses=1] br label %bb20 - -bb20: ; preds = %bb23, %bb25, %bb27, %bb11 - store int* %reg330, int** null - br bool %d, label %bb20, label %done - -done: +bb20: ; preds = %bb20, %bb11 + store i32* %reg330, i32** null + br i1 %d, label %bb20, label %done +done: ; preds = %bb20 ret void } + diff --git a/test/Transforms/SimplifyCFG/2003-08-05-InvokeCrash.ll b/test/Transforms/SimplifyCFG/2003-08-05-InvokeCrash.ll index 811fe50..74e7428 100644 --- a/test/Transforms/SimplifyCFG/2003-08-05-InvokeCrash.ll +++ b/test/Transforms/SimplifyCFG/2003-08-05-InvokeCrash.ll @@ -1,11 +1,13 @@ ; Do not remove the invoke! ; -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output -int %test() { - %A = invoke int %test() to label %Ret except label %Ret2 -Ret: - ret int %A -Ret2: - ret int undef +define i32 @test() { + %A = invoke i32 @test( ) + to label %Ret unwind label %Ret2 ; <i32> [#uses=1] +Ret: ; preds = %0 + ret i32 %A +Ret2: ; preds = %0 + ret i32 undef } + diff --git a/test/Transforms/SimplifyCFG/2003-08-05-MishandleInvoke.ll b/test/Transforms/SimplifyCFG/2003-08-05-MishandleInvoke.ll index ff549ad..9f56e07 100644 --- a/test/Transforms/SimplifyCFG/2003-08-05-MishandleInvoke.ll +++ b/test/Transforms/SimplifyCFG/2003-08-05-MishandleInvoke.ll @@ -1,10 +1,12 @@ ; Do not remove the invoke! ; -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | grep invoke +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | grep invoke -int %test() { - invoke int %test() to label %Ret except label %Ret -Ret: - %A = add int 0, 1 - ret int %A +define i32 @test() { + invoke i32 @test( ) + to label %Ret unwind label %Ret ; <i32>:1 [#uses=0] +Ret: ; preds = %0, %0 + %A = add i32 0, 1 ; <i32> [#uses=1] + ret i32 %A } + diff --git a/test/Transforms/SimplifyCFG/2003-08-17-BranchFold.ll b/test/Transforms/SimplifyCFG/2003-08-17-BranchFold.ll index fcefac1..d1de65c 100644 --- a/test/Transforms/SimplifyCFG/2003-08-17-BranchFold.ll +++ b/test/Transforms/SimplifyCFG/2003-08-17-BranchFold.ll @@ -1,21 +1,22 @@ ; This test checks to make sure that 'br X, Dest, Dest' is folded into ; 'br Dest' -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | \ ; RUN: not grep {br bool %c2} -declare void %noop() +declare void @noop() -int %test(bool %c1, bool %c2) { - call void %noop() - br bool %c1, label %A, label %Y -A: - call void %noop() - br bool %c2, label %X, label %X ; Can be converted to unconditional br -X: - call void %noop() - ret int 0 -Y: - call void %noop() +define i32 @test(i1 %c1, i1 %c2) { + call void @noop( ) + br i1 %c1, label %A, label %Y +A: ; preds = %0 + call void @noop( ) + br i1 %c2, label %X, label %X +X: ; preds = %Y, %A, %A + call void @noop( ) + ret i32 0 +Y: ; preds = %0 + call void @noop( ) br label %X } + diff --git a/test/Transforms/SimplifyCFG/2003-08-17-BranchFoldOrdering.ll b/test/Transforms/SimplifyCFG/2003-08-17-BranchFoldOrdering.ll index 08ff290..7564cfa 100644 --- a/test/Transforms/SimplifyCFG/2003-08-17-BranchFoldOrdering.ll +++ b/test/Transforms/SimplifyCFG/2003-08-17-BranchFoldOrdering.ll @@ -3,23 +3,24 @@ ; due to the fact that the SimplifyCFG function does not use ; the ConstantFoldTerminator function. -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | \ ; RUN: not grep {br bool %c2} -declare void %noop() +declare void @noop() -int %test(bool %c1, bool %c2) { - call void %noop() - br bool %c1, label %A, label %Y -A: - call void %noop() - br bool %c2, label %Z, label %X ; Can be converted to unconditional br -Z: +define i32 @test(i1 %c1, i1 %c2) { + call void @noop( ) + br i1 %c1, label %A, label %Y +A: ; preds = %0 + call void @noop( ) + br i1 %c2, label %Z, label %X +Z: ; preds = %A br label %X -X: - call void %noop() - ret int 0 -Y: - call void %noop() +X: ; preds = %Y, %Z, %A + call void @noop( ) + ret i32 0 +Y: ; preds = %0 + call void @noop( ) br label %X } + diff --git a/test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch.ll b/test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch.ll index ac9ba18..cd22e1e 100644 --- a/test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch.ll +++ b/test/Transforms/SimplifyCFG/2003-08-17-FoldSwitch.ll @@ -1,61 +1,80 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | \ ; RUN: not grep switch -int %test1() { ; Test normal folding - switch uint 5, label %Default [ - uint 0, label %Foo - uint 1, label %Bar - uint 2, label %Baz - uint 5, label %TheDest - ] -Default:ret int -1 -Foo: ret int -2 -Bar: ret int -3 -Baz: ret int -4 -TheDest:ret int 1234 +; Test normal folding +define i32 @test1() { + switch i32 5, label %Default [ + i32 0, label %Foo + i32 1, label %Bar + i32 2, label %Baz + i32 5, label %TheDest + ] +Default: ; preds = %0 + ret i32 -1 +Foo: ; preds = %0 + ret i32 -2 +Bar: ; preds = %0 + ret i32 -3 +Baz: ; preds = %0 + ret i32 -4 +TheDest: ; preds = %0 + ret i32 1234 } -int %test2() { ; Test folding to default dest - switch uint 3, label %Default [ - uint 0, label %Foo - uint 1, label %Bar - uint 2, label %Baz - uint 5, label %TheDest - ] -Default:ret int 1234 -Foo: ret int -2 -Bar: ret int -5 -Baz: ret int -6 -TheDest:ret int -8 +; Test folding to default dest +define i32 @test2() { + switch i32 3, label %Default [ + i32 0, label %Foo + i32 1, label %Bar + i32 2, label %Baz + i32 5, label %TheDest + ] +Default: ; preds = %0 + ret i32 1234 +Foo: ; preds = %0 + ret i32 -2 +Bar: ; preds = %0 + ret i32 -5 +Baz: ; preds = %0 + ret i32 -6 +TheDest: ; preds = %0 + ret i32 -8 } -int %test3(bool %C) { ; Test folding all to same dest - br bool %C, label %Start, label %TheDest -Start: - switch uint 3, label %TheDest [ - uint 0, label %TheDest - uint 1, label %TheDest - uint 2, label %TheDest - uint 5, label %TheDest - ] -TheDest: ret int 1234 +; Test folding all to same dest +define i32 @test3(i1 %C) { + br i1 %C, label %Start, label %TheDest +Start: ; preds = %0 + switch i32 3, label %TheDest [ + i32 0, label %TheDest + i32 1, label %TheDest + i32 2, label %TheDest + i32 5, label %TheDest + ] +TheDest: ; preds = %Start, %Start, %Start, %Start, %Start, %0 + ret i32 1234 } -int %test4(uint %C) { ; Test folding switch -> branch - switch uint %C, label %L1 [ - uint 0, label %L2 - ] -L1: ret int 0 -L2: ret int 1 +; Test folding switch -> branch +define i32 @test4(i32 %C) { + switch i32 %C, label %L1 [ + i32 0, label %L2 + ] +L1: ; preds = %0 + ret i32 0 +L2: ; preds = %0 + ret i32 1 } -int %test5(uint %C) { - switch uint %C, label %L1 [ ; Can fold into a cond branch! - uint 0, label %L2 - uint 123, label %L1 - ] -L1: ret int 0 -L2: ret int 1 +; Can fold into a cond branch! +define i32 @test5(i32 %C) { + switch i32 %C, label %L1 [ + i32 0, label %L2 + i32 123, label %L1 + ] +L1: ; preds = %0, %0 + ret i32 0 +L2: ; preds = %0 + ret i32 1 } - diff --git a/test/Transforms/SimplifyCFG/2004-12-10-SimplifyCFGCrash.ll b/test/Transforms/SimplifyCFG/2004-12-10-SimplifyCFGCrash.ll index 44c89d6..de0d262 100644 --- a/test/Transforms/SimplifyCFG/2004-12-10-SimplifyCFGCrash.ll +++ b/test/Transforms/SimplifyCFG/2004-12-10-SimplifyCFGCrash.ll @@ -1,59 +1,40 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output -implementation ; Functions: - -void %symhash_add() { +define void @symhash_add() { entry: - br bool undef, label %then.0, label %UnifiedReturnBlock - + br i1 undef, label %then.0, label %UnifiedReturnBlock then.0: ; preds = %entry - br bool undef, label %loopentry.2, label %loopentry.1.preheader - + br i1 undef, label %loopentry.2, label %loopentry.1.preheader loopentry.1.preheader: ; preds = %then.0 br label %loopentry.1.outer - -loopentry.1.outer: ; preds = %loopentry.1.preheader, %loopexit.1 +loopentry.1.outer: ; preds = %loopexit.1, %loopentry.1.preheader br label %loopentry.1 - -loopentry.1: ; preds = %loopentry.1.outer, %then.1, %then.3, %then.4, %endif.1 - br bool undef, label %loopexit.1, label %no_exit.1 - +loopentry.1: ; preds = %endif.1, %then.4, %then.3, %then.1, %loopentry.1.outer + br i1 undef, label %loopexit.1, label %no_exit.1 no_exit.1: ; preds = %loopentry.1 - br bool undef, label %then.1, label %else.0 - + br i1 undef, label %then.1, label %else.0 then.1: ; preds = %no_exit.1 br label %loopentry.1 - else.0: ; preds = %no_exit.1 - br bool undef, label %then.2, label %else.1 - + br i1 undef, label %then.2, label %else.1 then.2: ; preds = %else.0 - br bool undef, label %then.3, label %endif.1 - + br i1 undef, label %then.3, label %endif.1 then.3: ; preds = %then.2 br label %loopentry.1 - else.1: ; preds = %else.0 - br bool undef, label %endif.1, label %then.4 - + br i1 undef, label %endif.1, label %then.4 then.4: ; preds = %else.1 br label %loopentry.1 - -endif.1: ; preds = %then.2, %else.1 +endif.1: ; preds = %else.1, %then.2 br label %loopentry.1 - loopexit.1: ; preds = %loopentry.1 - br bool undef, label %loopentry.1.outer, label %loopentry.2 - -loopentry.2: ; preds = %then.0, %loopexit.1, %no_exit.2 - br bool undef, label %loopexit.2, label %no_exit.2 - + br i1 undef, label %loopentry.1.outer, label %loopentry.2 +loopentry.2: ; preds = %no_exit.2, %loopexit.1, %then.0 + br i1 undef, label %loopexit.2, label %no_exit.2 no_exit.2: ; preds = %loopentry.2 br label %loopentry.2 - loopexit.2: ; preds = %loopentry.2 ret void - UnifiedReturnBlock: ; preds = %entry ret void } diff --git a/test/Transforms/SimplifyCFG/2005-06-16-PHICrash.ll b/test/Transforms/SimplifyCFG/2005-06-16-PHICrash.ll index 6c53029..7fea292 100644 --- a/test/Transforms/SimplifyCFG/2005-06-16-PHICrash.ll +++ b/test/Transforms/SimplifyCFG/2005-06-16-PHICrash.ll @@ -1,125 +1,95 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output ; PR584 +@g_38098584 = external global i32 ; <i32*> [#uses=1] +@g_60187400 = external global i32 ; <i32*> [#uses=1] +@g_59182229 = external global i32 ; <i32*> [#uses=2] -%g_38098584 = external global uint ; <uint*> [#uses=1] -%g_60187400 = external global uint ; <uint*> [#uses=1] -%g_59182229 = external global uint ; <uint*> [#uses=2] - -implementation ; Functions: - -int %_Z13func_26556482h(ubyte %l_88173906) { +define i32 @_Z13func_26556482h(i8 %l_88173906) { entry: - %tmp.1 = cast ubyte %l_88173906 to sbyte ; <sbyte> [#uses=2] - %tmp.3 = seteq ubyte %l_88173906, 0 ; <bool> [#uses=1] - br bool %tmp.3, label %else.0, label %then.0 - + %tmp.1 = bitcast i8 %l_88173906 to i8 ; <i8> [#uses=2] + %tmp.3 = icmp eq i8 %l_88173906, 0 ; <i1> [#uses=1] + br i1 %tmp.3, label %else.0, label %then.0 then.0: ; preds = %entry - %tmp.5 = seteq ubyte %l_88173906, 0 ; <bool> [#uses=1] - br bool %tmp.5, label %else.1, label %then.1 - + %tmp.5 = icmp eq i8 %l_88173906, 0 ; <i1> [#uses=1] + br i1 %tmp.5, label %else.1, label %then.1 then.1: ; preds = %then.0 br label %return - else.1: ; preds = %then.0 br label %loopentry.0 - loopentry.0: ; preds = %no_exit.0, %else.1 - %i.0.1 = phi int [ 0, %else.1 ], [ %inc.0, %no_exit.0 ] ; <int> [#uses=2] - %tmp.9 = setgt int %i.0.1, 99 ; <bool> [#uses=1] - br bool %tmp.9, label %endif.0, label %no_exit.0 - + %i.0.1 = phi i32 [ 0, %else.1 ], [ %inc.0, %no_exit.0 ] ; <i32> [#uses=2] + %tmp.9 = icmp sgt i32 %i.0.1, 99 ; <i1> [#uses=1] + br i1 %tmp.9, label %endif.0, label %no_exit.0 no_exit.0: ; preds = %loopentry.0 - %inc.0 = add int %i.0.1, 1 ; <int> [#uses=1] + %inc.0 = add i32 %i.0.1, 1 ; <i32> [#uses=1] br label %loopentry.0 - else.0: ; preds = %entry - %tmp.12 = cast sbyte %tmp.1 to int ; <int> [#uses=1] + %tmp.12 = sext i8 %tmp.1 to i32 ; <i32> [#uses=1] br label %return - endif.0: ; preds = %loopentry.0 - %tmp.14 = cast sbyte %tmp.1 to int ; <int> [#uses=1] - %tmp.16 = cast ubyte %l_88173906 to int ; <int> [#uses=1] - %tmp.17 = setgt int %tmp.14, %tmp.16 ; <bool> [#uses=1] - %tmp.19 = load uint* %g_59182229 ; <uint> [#uses=2] - br bool %tmp.17, label %cond_true, label %cond_false - + %tmp.14 = sext i8 %tmp.1 to i32 ; <i32> [#uses=1] + %tmp.16 = zext i8 %l_88173906 to i32 ; <i32> [#uses=1] + %tmp.17 = icmp sgt i32 %tmp.14, %tmp.16 ; <i1> [#uses=1] + %tmp.19 = load i32* @g_59182229 ; <i32> [#uses=2] + br i1 %tmp.17, label %cond_true, label %cond_false cond_true: ; preds = %endif.0 - %tmp.20 = setne uint %tmp.19, 1 ; <bool> [#uses=1] + %tmp.20 = icmp ne i32 %tmp.19, 1 ; <i1> [#uses=1] br label %cond_continue - cond_false: ; preds = %endif.0 - %tmp.22 = setne uint %tmp.19, 0 ; <bool> [#uses=1] + %tmp.22 = icmp ne i32 %tmp.19, 0 ; <i1> [#uses=1] br label %cond_continue - cond_continue: ; preds = %cond_false, %cond_true - %mem_tmp.0 = phi bool [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ] ; <bool> [#uses=1] - br bool %mem_tmp.0, label %then.2, label %else.2 - + %mem_tmp.0 = phi i1 [ %tmp.20, %cond_true ], [ %tmp.22, %cond_false ] ; <i1> [#uses=1] + br i1 %mem_tmp.0, label %then.2, label %else.2 then.2: ; preds = %cond_continue - %tmp.25 = cast ubyte %l_88173906 to int ; <int> [#uses=1] + %tmp.25 = zext i8 %l_88173906 to i32 ; <i32> [#uses=1] br label %return - else.2: ; preds = %cond_continue br label %loopentry.1 - loopentry.1: ; preds = %endif.3, %else.2 - %i.1.1 = phi int [ 0, %else.2 ], [ %inc.3, %endif.3 ] ; <int> [#uses=2] - %i.3.2 = phi int [ undef, %else.2 ], [ %i.3.0, %endif.3 ] ; <int> [#uses=2] - %l_88173906_addr.1 = phi ubyte [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ] ; <ubyte> [#uses=3] - %tmp.29 = setgt int %i.1.1, 99 ; <bool> [#uses=1] - br bool %tmp.29, label %endif.2, label %no_exit.1 - + %i.1.1 = phi i32 [ 0, %else.2 ], [ %inc.3, %endif.3 ] ; <i32> [#uses=2] + %i.3.2 = phi i32 [ undef, %else.2 ], [ %i.3.0, %endif.3 ] ; <i32> [#uses=2] + %l_88173906_addr.1 = phi i8 [ %l_88173906, %else.2 ], [ %l_88173906_addr.0, %endif.3 ] ; <i8> [#uses=3] + %tmp.29 = icmp sgt i32 %i.1.1, 99 ; <i1> [#uses=1] + br i1 %tmp.29, label %endif.2, label %no_exit.1 no_exit.1: ; preds = %loopentry.1 - %tmp.30 = load uint* %g_38098584 ; <uint> [#uses=1] - %tmp.31 = seteq uint %tmp.30, 0 ; <bool> [#uses=1] - br bool %tmp.31, label %else.3, label %then.3 - + %tmp.30 = load i32* @g_38098584 ; <i32> [#uses=1] + %tmp.31 = icmp eq i32 %tmp.30, 0 ; <i1> [#uses=1] + br i1 %tmp.31, label %else.3, label %then.3 then.3: ; preds = %no_exit.1 br label %endif.3 - else.3: ; preds = %no_exit.1 - br bool false, label %else.4, label %then.4 - + br i1 false, label %else.4, label %then.4 then.4: ; preds = %else.3 br label %endif.3 - else.4: ; preds = %else.3 - br bool false, label %else.5, label %then.5 - + br i1 false, label %else.5, label %then.5 then.5: ; preds = %else.4 - store uint 3290648471, uint* %g_59182229 + store i32 -1004318825, i32* @g_59182229 br label %return - else.5: ; preds = %else.4 br label %loopentry.3 - loopentry.3: ; preds = %then.7, %else.5 - %i.3.3 = phi int [ 0, %else.5 ], [ %inc.2, %then.7 ] ; <int> [#uses=3] - %tmp.55 = setgt int %i.3.3, 99 ; <bool> [#uses=1] - br bool %tmp.55, label %endif.3, label %no_exit.3 - + %i.3.3 = phi i32 [ 0, %else.5 ], [ %inc.2, %then.7 ] ; <i32> [#uses=3] + %tmp.55 = icmp sgt i32 %i.3.3, 99 ; <i1> [#uses=1] + br i1 %tmp.55, label %endif.3, label %no_exit.3 no_exit.3: ; preds = %loopentry.3 - %tmp.57 = seteq ubyte %l_88173906_addr.1, 0 ; <bool> [#uses=1] - br bool %tmp.57, label %else.7, label %then.7 - + %tmp.57 = icmp eq i8 %l_88173906_addr.1, 0 ; <i1> [#uses=1] + br i1 %tmp.57, label %else.7, label %then.7 then.7: ; preds = %no_exit.3 - store uint 16239, uint* %g_60187400 - %inc.2 = add int %i.3.3, 1 ; <int> [#uses=1] + store i32 16239, i32* @g_60187400 + %inc.2 = add i32 %i.3.3, 1 ; <i32> [#uses=1] br label %loopentry.3 - else.7: ; preds = %no_exit.3 br label %return - endif.3: ; preds = %loopentry.3, %then.4, %then.3 - %i.3.0 = phi int [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ] ; <int> [#uses=1] - %l_88173906_addr.0 = phi ubyte [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ] ; <ubyte> [#uses=1] - %inc.3 = add int %i.1.1, 1 ; <int> [#uses=1] + %i.3.0 = phi i32 [ %i.3.2, %then.3 ], [ %i.3.2, %then.4 ], [ %i.3.3, %loopentry.3 ] ; <i32> [#uses=1] + %l_88173906_addr.0 = phi i8 [ 100, %then.3 ], [ %l_88173906_addr.1, %then.4 ], [ %l_88173906_addr.1, %loopentry.3 ] ; <i8> [#uses=1] + %inc.3 = add i32 %i.1.1, 1 ; <i32> [#uses=1] br label %loopentry.1 - endif.2: ; preds = %loopentry.1 br label %return - return: ; preds = %endif.2, %else.7, %then.5, %then.2, %else.0, %then.1 - %result.0 = phi int [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ] ; <int> [#uses=1] - ret int %result.0 + %result.0 = phi i32 [ 1624650671, %then.1 ], [ %tmp.25, %then.2 ], [ 3379, %then.5 ], [ 52410, %else.7 ], [ -1526438411, %endif.2 ], [ %tmp.12, %else.0 ] ; <i32> [#uses=1] + ret i32 %result.0 } diff --git a/test/Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll b/test/Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll index 9271ac2..8314321 100644 --- a/test/Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll +++ b/test/Transforms/SimplifyCFG/2005-08-01-PHIUpdateFail.ll @@ -1,96 +1,71 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output +; END. -void %main() { +define void @main() { entry: - %tmp.14.i19 = seteq int 0, 2 ; <bool> [#uses=1] - br bool %tmp.14.i19, label %endif.1.i20, label %read_min.exit - + %tmp.14.i19 = icmp eq i32 0, 2 ; <i1> [#uses=1] + br i1 %tmp.14.i19, label %endif.1.i20, label %read_min.exit endif.1.i20: ; preds = %entry - %tmp.9.i.i = seteq sbyte* null, null ; <bool> [#uses=1] - br bool %tmp.9.i.i, label %then.i12.i, label %then.i.i - + %tmp.9.i.i = icmp eq i8* null, null ; <i1> [#uses=1] + br i1 %tmp.9.i.i, label %then.i12.i, label %then.i.i then.i.i: ; preds = %endif.1.i20 ret void - then.i12.i: ; preds = %endif.1.i20 - %tmp.9.i4.i = seteq sbyte* null, null ; <bool> [#uses=1] - br bool %tmp.9.i4.i, label %endif.2.i33, label %then.i5.i - + %tmp.9.i4.i = icmp eq i8* null, null ; <i1> [#uses=1] + br i1 %tmp.9.i4.i, label %endif.2.i33, label %then.i5.i then.i5.i: ; preds = %then.i12.i ret void - endif.2.i33: ; preds = %then.i12.i - br bool false, label %loopexit.0.i40, label %no_exit.0.i35 - + br i1 false, label %loopexit.0.i40, label %no_exit.0.i35 no_exit.0.i35: ; preds = %no_exit.0.i35, %endif.2.i33 - %tmp.130.i = setlt int 0, 0 ; <bool> [#uses=1] - br bool %tmp.130.i, label %loopexit.0.i40.loopexit, label %no_exit.0.i35 - + %tmp.130.i = icmp slt i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp.130.i, label %loopexit.0.i40.loopexit, label %no_exit.0.i35 loopexit.0.i40.loopexit: ; preds = %no_exit.0.i35 br label %loopexit.0.i40 - loopexit.0.i40: ; preds = %loopexit.0.i40.loopexit, %endif.2.i33 - %tmp.341.i = seteq int 0, 0 ; <bool> [#uses=1] - br bool %tmp.341.i, label %loopentry.1.i, label %read_min.exit - + %tmp.341.i = icmp eq i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp.341.i, label %loopentry.1.i, label %read_min.exit loopentry.1.i: ; preds = %loopexit.0.i40 - %tmp.347.i = setgt int 0, 0 ; <bool> [#uses=1] - br bool %tmp.347.i, label %no_exit.1.i41, label %loopexit.2.i44 - + %tmp.347.i = icmp sgt i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp.347.i, label %no_exit.1.i41, label %loopexit.2.i44 no_exit.1.i41: ; preds = %endif.5.i, %loopentry.1.i - %indvar.i42 = phi uint [ %indvar.next.i, %endif.5.i ], [ 0, %loopentry.1.i ] ; <uint> [#uses=1] - %tmp.355.i = seteq int 0, 3 ; <bool> [#uses=1] - br bool %tmp.355.i, label %endif.5.i, label %read_min.exit - + %indvar.i42 = phi i32 [ %indvar.next.i, %endif.5.i ], [ 0, %loopentry.1.i ] ; <i32> [#uses=1] + %tmp.355.i = icmp eq i32 0, 3 ; <i1> [#uses=1] + br i1 %tmp.355.i, label %endif.5.i, label %read_min.exit endif.5.i: ; preds = %no_exit.1.i41 - %tmp.34773.i = setgt int 0, 0 ; <bool> [#uses=1] - %indvar.next.i = add uint %indvar.i42, 1 ; <uint> [#uses=1] - br bool %tmp.34773.i, label %no_exit.1.i41, label %loopexit.1.i.loopexit - + %tmp.34773.i = icmp sgt i32 0, 0 ; <i1> [#uses=1] + %indvar.next.i = add i32 %indvar.i42, 1 ; <i32> [#uses=1] + br i1 %tmp.34773.i, label %no_exit.1.i41, label %loopexit.1.i.loopexit loopexit.1.i.loopexit: ; preds = %endif.5.i ret void - loopexit.2.i44: ; preds = %loopentry.1.i ret void - read_min.exit: ; preds = %no_exit.1.i41, %loopexit.0.i40, %entry - %tmp.23 = seteq int 0, 0 ; <bool> [#uses=1] - br bool %tmp.23, label %endif.1, label %then.1 - + %tmp.23 = icmp eq i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp.23, label %endif.1, label %then.1 then.1: ; preds = %read_min.exit - br bool false, label %endif.0.i, label %then.0.i - + br i1 false, label %endif.0.i, label %then.0.i then.0.i: ; preds = %then.1 - br bool false, label %endif.1.i, label %then.1.i - + br i1 false, label %endif.1.i, label %then.1.i endif.0.i: ; preds = %then.1 - br bool false, label %endif.1.i, label %then.1.i - + br i1 false, label %endif.1.i, label %then.1.i then.1.i: ; preds = %endif.0.i, %then.0.i - br bool false, label %getfree.exit, label %then.2.i - + br i1 false, label %getfree.exit, label %then.2.i endif.1.i: ; preds = %endif.0.i, %then.0.i - br bool false, label %getfree.exit, label %then.2.i - + br i1 false, label %getfree.exit, label %then.2.i then.2.i: ; preds = %endif.1.i, %then.1.i ret void - getfree.exit: ; preds = %endif.1.i, %then.1.i ret void - endif.1: ; preds = %read_min.exit - %tmp.27.i = getelementptr int* null, int 0 - br bool false, label %loopexit.0.i15, label %no_exit.0.i14 - + %tmp.27.i = getelementptr i32* null, i32 0 ; <i32*> [#uses=0] + br i1 false, label %loopexit.0.i15, label %no_exit.0.i14 no_exit.0.i14: ; preds = %endif.1 ret void - loopexit.0.i15: ; preds = %endif.1 - br bool false, label %primal_start_artificial.exit, label %no_exit.1.i16 - + br i1 false, label %primal_start_artificial.exit, label %no_exit.1.i16 no_exit.1.i16: ; preds = %no_exit.1.i16, %loopexit.0.i15 - br bool false, label %primal_start_artificial.exit, label %no_exit.1.i16 - + br i1 false, label %primal_start_artificial.exit, label %no_exit.1.i16 primal_start_artificial.exit: ; preds = %no_exit.1.i16, %loopexit.0.i15 ret void } diff --git a/test/Transforms/SimplifyCFG/2005-08-03-PHIFactorCrash.ll b/test/Transforms/SimplifyCFG/2005-08-03-PHIFactorCrash.ll index 4ac692e..51490a0 100644 --- a/test/Transforms/SimplifyCFG/2005-08-03-PHIFactorCrash.ll +++ b/test/Transforms/SimplifyCFG/2005-08-03-PHIFactorCrash.ll @@ -1,94 +1,74 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output ; END. - %arraytype.1.Char = type { int, [0 x sbyte] } - %arraytype.4.Signed = type { int, [0 x int] } + %arraytype.1.Char = type { i32, [0 x i8] } + %arraytype.4.Signed = type { i32, [0 x i32] } %functiontype.23 = type %structtype.Task* (%structtype.Task*, %structtype.Packet*, %structtype.FailedRun*) %functiontype.27 = type %structtype.object* () - %functiontype.28 = type bool (%structtype.object*, %structtype.object_vtable*) - %functiontype.39 = type int (%structtype.listiter*) - %opaquetype.RuntimeTypeInfo = type sbyte* (sbyte*) + %functiontype.28 = type i1 (%structtype.object*, %structtype.object_vtable*) + %functiontype.39 = type i32 (%structtype.listiter*) + %opaquetype.RuntimeTypeInfo = type i8* (i8*) %structtype.AssertionError_vtable = type { %structtype.FailedRun_vtable } %structtype.DeviceTask = type { %structtype.Task } %structtype.FailedRun = type { %structtype.object } %structtype.FailedRun_vtable = type { %structtype.object_vtable } - %structtype.Packet = type { %structtype.object, %structtype.list.1*, int, int, int, %structtype.Packet* } - %structtype.Task = type { %structtype.TaskState, %structtype.FailedRun*, int, %structtype.Packet*, %structtype.Task*, int } - %structtype.TaskState = type { %structtype.object, bool, bool, bool } + %structtype.Packet = type { %structtype.object, %structtype.list.1*, i32, i32, i32, %structtype.Packet* } + %structtype.Task = type { %structtype.TaskState, %structtype.FailedRun*, i32, %structtype.Packet*, %structtype.Task*, i32 } + %structtype.TaskState = type { %structtype.object, i1, i1, i1 } %structtype.list.1 = type { %arraytype.4.Signed* } - %structtype.listiter = type { %structtype.list.1*, int } + %structtype.listiter = type { %structtype.list.1*, i32 } %structtype.object = type { %structtype.object_vtable* } %structtype.object_vtable = type { %structtype.object_vtable*, %opaquetype.RuntimeTypeInfo*, %arraytype.1.Char*, %functiontype.27* } -%structinstance.59 = external global %structtype.AssertionError_vtable ; <%structtype.AssertionError_vtable*> [#uses=0] +@structinstance.59 = external global %structtype.AssertionError_vtable ; <%structtype.AssertionError_vtable*> [#uses=0] -implementation ; Functions: +declare fastcc i1 @ll_isinstance__objectPtr_object_vtablePtr() -declare fastcc bool %ll_isinstance__objectPtr_object_vtablePtr() +declare fastcc void @ll_listnext__listiterPtr() -declare fastcc void %ll_listnext__listiterPtr() - -fastcc void %WorkTask.fn() { +define fastcc void @WorkTask.fn() { block0: br label %block1 - block1: ; preds = %block0 - %v2542 = call fastcc bool %ll_isinstance__objectPtr_object_vtablePtr( ) ; <bool> [#uses=1] - br bool %v2542, label %block4, label %block2 - + %v2542 = call fastcc i1 @ll_isinstance__objectPtr_object_vtablePtr( ) ; <i1> [#uses=1] + br i1 %v2542, label %block4, label %block2 block2: ; preds = %block1 br label %block3 - block3: ; preds = %block2 unwind - block4: ; preds = %block1 br label %block5 - block5: ; preds = %block4 - %v2565 = seteq %structtype.Packet* null, null ; <bool> [#uses=1] - br bool %v2565, label %block15, label %block6 - + %v2565 = icmp eq %structtype.Packet* null, null ; <i1> [#uses=1] + br i1 %v2565, label %block15, label %block6 block6: ; preds = %block5 %self_2575 = phi %structtype.DeviceTask* [ null, %block5 ] ; <%structtype.DeviceTask*> [#uses=1] - br bool false, label %block14, label %block7 - + br i1 false, label %block14, label %block7 block7: ; preds = %block14, %block6 %self_2635 = phi %structtype.DeviceTask* [ %self_2575, %block6 ], [ null, %block14 ] ; <%structtype.DeviceTask*> [#uses=1] - %tmp.124 = getelementptr %structtype.Packet* null, int 0, uint 2 ; <int*> [#uses=0] + %tmp.124 = getelementptr %structtype.Packet* null, i32 0, i32 2 ; <i32*> [#uses=0] br label %block8 - block8: ; preds = %block10, %block7 %self_2672 = phi %structtype.DeviceTask* [ %self_2635, %block7 ], [ null, %block10 ] ; <%structtype.DeviceTask*> [#uses=0] - invoke fastcc void %ll_listnext__listiterPtr( ) + invoke fastcc void @ll_listnext__listiterPtr( ) to label %block9 unwind label %block8_exception_handling - block8_exception_handling: ; preds = %block8 - br bool false, label %block8_exception_found_branchto_block12, label %block8_not_exception_structinstance.10 - + br i1 false, label %block8_exception_found_branchto_block12, label %block8_not_exception_structinstance.10 block8_not_exception_structinstance.10: ; preds = %block8_exception_handling unwind - block8_exception_found_branchto_block12: ; preds = %block8_exception_handling br label %block12 - block9: ; preds = %block8 - br bool false, label %block11, label %block10 - + br i1 false, label %block11, label %block10 block10: ; preds = %block11, %block9 br label %block8 - block11: ; preds = %block9 br label %block10 - block12: ; preds = %block8_exception_found_branchto_block12 br label %block13 - block13: ; preds = %block15, %block12 ret void - block14: ; preds = %block6 br label %block7 - block15: ; preds = %block5 %v2586 = phi %structtype.DeviceTask* [ null, %block5 ] ; <%structtype.DeviceTask*> [#uses=0] br label %block13 diff --git a/test/Transforms/SimplifyCFG/2005-10-02-InvokeSimplify.ll b/test/Transforms/SimplifyCFG/2005-10-02-InvokeSimplify.ll index c3b4194..a0fe781 100644 --- a/test/Transforms/SimplifyCFG/2005-10-02-InvokeSimplify.ll +++ b/test/Transforms/SimplifyCFG/2005-10-02-InvokeSimplify.ll @@ -1,13 +1,15 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output -bool %foo() { - %X = invoke bool %foo() to label %N unwind label %F -F: - ret bool false -N: - br bool %X, label %A, label %B -A: - ret bool true -B: - ret bool true +define i1 @foo() { + %X = invoke i1 @foo( ) + to label %N unwind label %F ; <i1> [#uses=1] +F: ; preds = %0 + ret i1 false +N: ; preds = %0 + br i1 %X, label %A, label %B +A: ; preds = %N + ret i1 true +B: ; preds = %N + ret i1 true } + diff --git a/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll b/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll index ca69970..27413fc 100644 --- a/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll +++ b/test/Transforms/SimplifyCFG/2005-12-03-IncorrectPHIFold.ll @@ -1,140 +1,124 @@ ; Make sure this doesn't turn into an infinite loop -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -constprop -simplifycfg |\ +; RUN: llvm-as < %s | opt -simplifycfg -constprop -simplifycfg |\ ; RUN: llvm-dis | grep bb86 ; END. + +%struct.anon = type { i32, i32, i32, i32, [1024 x i8] } +@_zero_ = external global %struct.anon* ; <%struct.anon**> [#uses=2] +@_one_ = external global %struct.anon* ; <%struct.anon**> [#uses=4] +@str = internal constant [4 x i8] c"%d\0A\00" ; <[4 x i8]*> [#uses=0] - %struct.anon = type { uint, int, int, int, [1024 x sbyte] } -%_zero_ = external global %struct.anon* ; <%struct.anon**> [#uses=2] -%_one_ = external global %struct.anon* ; <%struct.anon**> [#uses=4] -%str = internal constant [4 x sbyte] c"%d\0A\00" ; <[4 x sbyte]*> [#uses=1] +declare i32 @bc_compare(%struct.anon*, %struct.anon*) -implementation ; Functions: +declare void @free_num(%struct.anon**) +declare %struct.anon* @copy_num(%struct.anon*) -declare int %bc_compare(%struct.anon*, %struct.anon*) +declare void @init_num(%struct.anon**) -declare void %free_num(%struct.anon**) +declare %struct.anon* @new_num(i32, i32) -declare %struct.anon* %copy_num(%struct.anon*) +declare void @int2num(%struct.anon**, i32) -declare void %init_num(%struct.anon**) +declare void @bc_multiply(%struct.anon*, %struct.anon*, %struct.anon**, i32) -declare %struct.anon* %new_num(int, int) +declare void @bc_raise(%struct.anon*, %struct.anon*, %struct.anon**, i32) -declare void %int2num(%struct.anon**, int) +declare i32 @bc_divide(%struct.anon*, %struct.anon*, %struct.anon**, i32) -declare void %bc_multiply(%struct.anon*, %struct.anon*, %struct.anon**, int) +declare void @bc_add(%struct.anon*, %struct.anon*, %struct.anon**) -declare void %bc_raise(%struct.anon*, %struct.anon*, %struct.anon**, int) +declare i32 @_do_compare(%struct.anon*, %struct.anon*, i32, i32) -declare int %bc_divide(%struct.anon*, %struct.anon*, %struct.anon**, int) +declare i32 @printf(i8*, ...) -declare void %bc_add(%struct.anon*, %struct.anon*, %struct.anon**) - -declare int %_do_compare(%struct.anon*, %struct.anon*, int, int) - -declare int %printf(sbyte*, ...) - -int %bc_sqrt(%struct.anon** %num, int %scale) { +define i32 @bc_sqrt(%struct.anon** %num, i32 %scale) { entry: - %guess = alloca %struct.anon* ; <%struct.anon**> [#uses=15] - %guess1 = alloca %struct.anon* ; <%struct.anon**> [#uses=12] - %point5 = alloca %struct.anon* ; <%struct.anon**> [#uses=4] + %guess = alloca %struct.anon* ; <%struct.anon**> [#uses=7] + %guess1 = alloca %struct.anon* ; <%struct.anon**> [#uses=7] + %point5 = alloca %struct.anon* ; <%struct.anon**> [#uses=3] %tmp = load %struct.anon** %num ; <%struct.anon*> [#uses=1] - %tmp1 = load %struct.anon** %_zero_ ; <%struct.anon*> [#uses=1] - %tmp = call int %bc_compare( %struct.anon* %tmp, %struct.anon* %tmp1 ) ; <int> [#uses=2] - %tmp = setlt int %tmp, 0 ; <bool> [#uses=1] - br bool %tmp, label %cond_true, label %cond_false - + %tmp1 = load %struct.anon** @_zero_ ; <%struct.anon*> [#uses=1] + %tmp.upgrd.1 = call i32 @bc_compare( %struct.anon* %tmp, %struct.anon* %tmp1 ) ; <i32> [#uses=2] + %tmp.upgrd.2 = icmp slt i32 %tmp.upgrd.1, 0 ; <i1> [#uses=1] + br i1 %tmp.upgrd.2, label %cond_true, label %cond_false cond_true: ; preds = %entry - ret int 0 - + ret i32 0 cond_false: ; preds = %entry - %tmp5 = seteq int %tmp, 0 ; <bool> [#uses=1] - br bool %tmp5, label %cond_true6, label %cond_next13 - + %tmp5 = icmp eq i32 %tmp.upgrd.1, 0 ; <i1> [#uses=1] + br i1 %tmp5, label %cond_true6, label %cond_next13 cond_true6: ; preds = %cond_false - call void %free_num( %struct.anon** %num ) - %tmp8 = load %struct.anon** %_zero_ ; <%struct.anon*> [#uses=1] - %tmp9 = call %struct.anon* %copy_num( %struct.anon* %tmp8 ) ; <%struct.anon*> [#uses=1] + call void @free_num( %struct.anon** %num ) + %tmp8 = load %struct.anon** @_zero_ ; <%struct.anon*> [#uses=1] + %tmp9 = call %struct.anon* @copy_num( %struct.anon* %tmp8 ) ; <%struct.anon*> [#uses=1] store %struct.anon* %tmp9, %struct.anon** %num - ret int 1 - + ret i32 1 cond_next13: ; preds = %cond_false %tmp15 = load %struct.anon** %num ; <%struct.anon*> [#uses=1] - %tmp16 = load %struct.anon** %_one_ ; <%struct.anon*> [#uses=1] - %tmp17 = call int %bc_compare( %struct.anon* %tmp15, %struct.anon* %tmp16 ) ; <int> [#uses=2] - %tmp19 = seteq int %tmp17, 0 ; <bool> [#uses=1] - br bool %tmp19, label %cond_true20, label %cond_next27 - + %tmp16 = load %struct.anon** @_one_ ; <%struct.anon*> [#uses=1] + %tmp17 = call i32 @bc_compare( %struct.anon* %tmp15, %struct.anon* %tmp16 ) ; <i32> [#uses=2] + %tmp19 = icmp eq i32 %tmp17, 0 ; <i1> [#uses=1] + br i1 %tmp19, label %cond_true20, label %cond_next27 cond_true20: ; preds = %cond_next13 - call void %free_num( %struct.anon** %num ) - %tmp22 = load %struct.anon** %_one_ ; <%struct.anon*> [#uses=1] - %tmp23 = call %struct.anon* %copy_num( %struct.anon* %tmp22 ) ; <%struct.anon*> [#uses=1] + call void @free_num( %struct.anon** %num ) + %tmp22 = load %struct.anon** @_one_ ; <%struct.anon*> [#uses=1] + %tmp23 = call %struct.anon* @copy_num( %struct.anon* %tmp22 ) ; <%struct.anon*> [#uses=1] store %struct.anon* %tmp23, %struct.anon** %num - ret int 1 - + ret i32 1 cond_next27: ; preds = %cond_next13 %tmp29 = load %struct.anon** %num ; <%struct.anon*> [#uses=1] - %tmp30 = getelementptr %struct.anon* %tmp29, int 0, uint 2 ; <int*> [#uses=1] - %tmp31 = load int* %tmp30 ; <int> [#uses=2] - %tmp33 = setge int %tmp31, %scale ; <bool> [#uses=1] - %max = select bool %tmp33, int %tmp31, int %scale ; <int> [#uses=4] - %tmp35 = add int %max, 2 ; <int> [#uses=2] - call void %init_num( %struct.anon** %guess ) - call void %init_num( %struct.anon** %guess1 ) - %tmp36 = call %struct.anon* %new_num( int 1, int 1 ) ; <%struct.anon*> [#uses=2] + %tmp30 = getelementptr %struct.anon* %tmp29, i32 0, i32 2 ; <i32*> [#uses=1] + %tmp31 = load i32* %tmp30 ; <i32> [#uses=2] + %tmp33 = icmp sge i32 %tmp31, %scale ; <i1> [#uses=1] + %max = select i1 %tmp33, i32 %tmp31, i32 %scale ; <i32> [#uses=4] + %tmp35 = add i32 %max, 2 ; <i32> [#uses=0] + call void @init_num( %struct.anon** %guess ) + call void @init_num( %struct.anon** %guess1 ) + %tmp36 = call %struct.anon* @new_num( i32 1, i32 1 ) ; <%struct.anon*> [#uses=2] store %struct.anon* %tmp36, %struct.anon** %point5 - %tmp = getelementptr %struct.anon* %tmp36, int 0, uint 4, int 1 ; <sbyte*> [#uses=1] - store sbyte 5, sbyte* %tmp - %tmp39 = setlt int %tmp17, 0 ; <bool> [#uses=1] - br bool %tmp39, label %cond_true40, label %cond_false43 - + %tmp.upgrd.3 = getelementptr %struct.anon* %tmp36, i32 0, i32 4, i32 1 ; <i8*> [#uses=1] + store i8 5, i8* %tmp.upgrd.3 + %tmp39 = icmp slt i32 %tmp17, 0 ; <i1> [#uses=1] + br i1 %tmp39, label %cond_true40, label %cond_false43 cond_true40: ; preds = %cond_next27 - %tmp41 = load %struct.anon** %_one_ ; <%struct.anon*> [#uses=1] - %tmp42 = call %struct.anon* %copy_num( %struct.anon* %tmp41 ) ; <%struct.anon*> [#uses=1] + %tmp41 = load %struct.anon** @_one_ ; <%struct.anon*> [#uses=1] + %tmp42 = call %struct.anon* @copy_num( %struct.anon* %tmp41 ) ; <%struct.anon*> [#uses=1] store %struct.anon* %tmp42, %struct.anon** %guess br label %bb80.outer - cond_false43: ; preds = %cond_next27 - call void %int2num( %struct.anon** %guess, int 10 ) + call void @int2num( %struct.anon** %guess, i32 10 ) %tmp45 = load %struct.anon** %num ; <%struct.anon*> [#uses=1] - %tmp46 = getelementptr %struct.anon* %tmp45, int 0, uint 1 ; <int*> [#uses=1] - %tmp47 = load int* %tmp46 ; <int> [#uses=1] - call void %int2num( %struct.anon** %guess1, int %tmp47 ) + %tmp46 = getelementptr %struct.anon* %tmp45, i32 0, i32 1 ; <i32*> [#uses=1] + %tmp47 = load i32* %tmp46 ; <i32> [#uses=1] + call void @int2num( %struct.anon** %guess1, i32 %tmp47 ) %tmp48 = load %struct.anon** %guess1 ; <%struct.anon*> [#uses=1] %tmp49 = load %struct.anon** %point5 ; <%struct.anon*> [#uses=1] - call void %bc_multiply( %struct.anon* %tmp48, %struct.anon* %tmp49, %struct.anon** %guess1, int %max ) + call void @bc_multiply( %struct.anon* %tmp48, %struct.anon* %tmp49, %struct.anon** %guess1, i32 %max ) %tmp51 = load %struct.anon** %guess1 ; <%struct.anon*> [#uses=1] - %tmp52 = getelementptr %struct.anon* %tmp51, int 0, uint 2 ; <int*> [#uses=1] - store int 0, int* %tmp52 + %tmp52 = getelementptr %struct.anon* %tmp51, i32 0, i32 2 ; <i32*> [#uses=1] + store i32 0, i32* %tmp52 %tmp53 = load %struct.anon** %guess ; <%struct.anon*> [#uses=1] %tmp54 = load %struct.anon** %guess1 ; <%struct.anon*> [#uses=1] - call void %bc_raise( %struct.anon* %tmp53, %struct.anon* %tmp54, %struct.anon** %guess, int %max ) + call void @bc_raise( %struct.anon* %tmp53, %struct.anon* %tmp54, %struct.anon** %guess, i32 %max ) br label %bb80.outer - -bb80.outer: ; preds = %cond_true77, %cond_next56 - %done.1.ph = phi int [ 1, %cond_true83 ], [0, %cond_true40], [0, %cond_false43] ; <int> [#uses=1] +bb80.outer: ; preds = %cond_true83, %cond_false43, %cond_true40 + %done.1.ph = phi i32 [ 1, %cond_true83 ], [ 0, %cond_true40 ], [ 0, %cond_false43 ] ; <i32> [#uses=1] br label %bb80 - -bb80: ; preds = %bb80.outer, %cond_true83 - %tmp82 = seteq int %done.1.ph, 0 ; <bool> [#uses=1] - br bool %tmp82, label %cond_true83, label %bb86 - +bb80: ; preds = %cond_true83, %bb80.outer + %tmp82 = icmp eq i32 %done.1.ph, 0 ; <i1> [#uses=1] + br i1 %tmp82, label %cond_true83, label %bb86 cond_true83: ; preds = %bb80 - %tmp71 = call int %_do_compare( %struct.anon* null, %struct.anon* null, int 0, int 1 ) ; <int> [#uses=2] - %tmp76 = seteq int %tmp71, 0 ; <bool> [#uses=1] - br bool %tmp76, label %bb80.outer, label %bb80 - + %tmp71 = call i32 @_do_compare( %struct.anon* null, %struct.anon* null, i32 0, i32 1 ) ; <i32> [#uses=1] + %tmp76 = icmp eq i32 %tmp71, 0 ; <i1> [#uses=1] + br i1 %tmp76, label %bb80.outer, label %bb80 bb86: ; preds = %bb80 - call void %free_num( %struct.anon** %num ) + call void @free_num( %struct.anon** %num ) %tmp88 = load %struct.anon** %guess ; <%struct.anon*> [#uses=1] - %tmp89 = load %struct.anon** %_one_ ; <%struct.anon*> [#uses=1] - %tmp92 = call int %bc_divide( %struct.anon* %tmp88, %struct.anon* %tmp89, %struct.anon** %num, int %max ) ; <int> [#uses=0] - call void %free_num( %struct.anon** %guess ) - call void %free_num( %struct.anon** %guess1 ) - call void %free_num( %struct.anon** %point5 ) - ret int 1 + %tmp89 = load %struct.anon** @_one_ ; <%struct.anon*> [#uses=1] + %tmp92 = call i32 @bc_divide( %struct.anon* %tmp88, %struct.anon* %tmp89, %struct.anon** %num, i32 %max ) ; <i32> [#uses=0] + call void @free_num( %struct.anon** %guess ) + call void @free_num( %struct.anon** %guess1 ) + call void @free_num( %struct.anon** %point5 ) + ret i32 1 } - diff --git a/test/Transforms/SimplifyCFG/2006-02-17-InfiniteUnroll.ll b/test/Transforms/SimplifyCFG/2006-02-17-InfiniteUnroll.ll index 8b443da..4400624 100644 --- a/test/Transforms/SimplifyCFG/2006-02-17-InfiniteUnroll.ll +++ b/test/Transforms/SimplifyCFG/2006-02-17-InfiniteUnroll.ll @@ -1,35 +1,27 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output -void %polnel_() { +define void @polnel_() { entry: - %tmp595 = setlt int 0, 0 ; <bool> [#uses=4] - br bool %tmp595, label %bb148.critedge, label %cond_true40 - + %tmp595 = icmp slt i32 0, 0 ; <i1> [#uses=4] + br i1 %tmp595, label %bb148.critedge, label %cond_true40 bb36: ; preds = %bb43 - br bool %tmp595, label %bb43, label %cond_true40 - + br i1 %tmp595, label %bb43, label %cond_true40 cond_true40: ; preds = %bb46, %cond_true40, %bb36, %entry - %tmp397 = setgt int 0, 0 ; <bool> [#uses=1] - br bool %tmp397, label %bb43, label %cond_true40 - + %tmp397 = icmp sgt i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp397, label %bb43, label %cond_true40 bb43: ; preds = %cond_true40, %bb36 - br bool false, label %bb53, label %bb36 - + br i1 false, label %bb53, label %bb36 bb46: ; preds = %bb53 - br bool %tmp595, label %bb53, label %cond_true40 - + br i1 %tmp595, label %bb53, label %cond_true40 bb53: ; preds = %bb46, %bb43 - br bool false, label %bb102, label %bb46 - + br i1 false, label %bb102, label %bb46 bb92.preheader: ; preds = %bb102 ret void - bb102: ; preds = %bb53 - br bool %tmp595, label %bb148, label %bb92.preheader - + br i1 %tmp595, label %bb148, label %bb92.preheader bb148.critedge: ; preds = %entry ret void - bb148: ; preds = %bb102 ret void } + diff --git a/test/Transforms/SimplifyCFG/2006-06-12-InfLoop.ll b/test/Transforms/SimplifyCFG/2006-06-12-InfLoop.ll index c9b1858..4981cf3 100644 --- a/test/Transforms/SimplifyCFG/2006-06-12-InfLoop.ll +++ b/test/Transforms/SimplifyCFG/2006-06-12-InfLoop.ll @@ -1,613 +1,413 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output +; RUN: llvm-as < %s | opt -simplifycfg -disable-output +; END. -void %main(int %c) { +define void @main(i32 %c) { entry: - %tmp.9 = seteq int %c, 2 ; <bool> [#uses=1] - br bool %tmp.9, label %endif.0, label %then.0 - + %tmp.9 = icmp eq i32 %c, 2 ; <i1> [#uses=1] + br i1 %tmp.9, label %endif.0, label %then.0 then.0: ; preds = %entry ret void - endif.0: ; preds = %entry - br bool false, label %then.1, label %endif.1 - + br i1 false, label %then.1, label %endif.1 then.1: ; preds = %endif.0 ret void - endif.1: ; preds = %endif.0 - br bool false, label %then.2, label %endif.2 - + br i1 false, label %then.2, label %endif.2 then.2: ; preds = %endif.1 ret void - endif.2: ; preds = %endif.1 - br bool false, label %then.3, label %loopentry.0 - + br i1 false, label %then.3, label %loopentry.0 then.3: ; preds = %endif.2 ret void - loopentry.0: ; preds = %endif.2 - br bool false, label %no_exit.0.preheader, label %loopexit.0 - + br i1 false, label %no_exit.0.preheader, label %loopexit.0 no_exit.0.preheader: ; preds = %loopentry.0 br label %no_exit.0 - no_exit.0: ; preds = %endif.4, %no_exit.0.preheader - br bool false, label %then.4, label %endif.4 - + br i1 false, label %then.4, label %endif.4 then.4: ; preds = %no_exit.0 ret void - endif.4: ; preds = %no_exit.0 - br bool false, label %no_exit.0, label %loopexit.0.loopexit - + br i1 false, label %no_exit.0, label %loopexit.0.loopexit loopexit.0.loopexit: ; preds = %endif.4 br label %loopexit.0 - loopexit.0: ; preds = %loopexit.0.loopexit, %loopentry.0 - br bool false, label %then.5, label %loopentry.1 - + br i1 false, label %then.5, label %loopentry.1 then.5: ; preds = %loopexit.0 ret void - loopentry.1: ; preds = %loopexit.0 - %tmp.143 = setgt int 0, 0 ; <bool> [#uses=4] - br bool %tmp.143, label %no_exit.1.preheader, label %loopexit.1 - + %tmp.143 = icmp sgt i32 0, 0 ; <i1> [#uses=4] + br i1 %tmp.143, label %no_exit.1.preheader, label %loopexit.1 no_exit.1.preheader: ; preds = %loopentry.1 br label %no_exit.1 - no_exit.1: ; preds = %endif.6, %no_exit.1.preheader - br bool false, label %then.6, label %shortcirc_next.3 - + br i1 false, label %then.6, label %shortcirc_next.3 shortcirc_next.3: ; preds = %no_exit.1 - br bool false, label %then.6, label %shortcirc_next.4 - + br i1 false, label %then.6, label %shortcirc_next.4 shortcirc_next.4: ; preds = %shortcirc_next.3 - br bool false, label %then.6, label %endif.6 - + br i1 false, label %then.6, label %endif.6 then.6: ; preds = %shortcirc_next.4, %shortcirc_next.3, %no_exit.1 ret void - endif.6: ; preds = %shortcirc_next.4 - br bool false, label %no_exit.1, label %loopexit.1.loopexit - + br i1 false, label %no_exit.1, label %loopexit.1.loopexit loopexit.1.loopexit: ; preds = %endif.6 br label %loopexit.1 - loopexit.1: ; preds = %loopexit.1.loopexit, %loopentry.1 - br bool false, label %then.i, label %loopentry.0.i - + br i1 false, label %then.i, label %loopentry.0.i then.i: ; preds = %loopexit.1 ret void - loopentry.0.i: ; preds = %loopexit.1 - br bool %tmp.143, label %no_exit.0.i.preheader, label %readvector.exit - + br i1 %tmp.143, label %no_exit.0.i.preheader, label %readvector.exit no_exit.0.i.preheader: ; preds = %loopentry.0.i br label %no_exit.0.i - no_exit.0.i: ; preds = %loopexit.1.i, %no_exit.0.i.preheader - br bool false, label %no_exit.1.i.preheader, label %loopexit.1.i - + br i1 false, label %no_exit.1.i.preheader, label %loopexit.1.i no_exit.1.i.preheader: ; preds = %no_exit.0.i br label %no_exit.1.i - no_exit.1.i: ; preds = %loopexit.2.i, %no_exit.1.i.preheader - br bool false, label %no_exit.2.i.preheader, label %loopexit.2.i - + br i1 false, label %no_exit.2.i.preheader, label %loopexit.2.i no_exit.2.i.preheader: ; preds = %no_exit.1.i br label %no_exit.2.i - no_exit.2.i: ; preds = %no_exit.2.i, %no_exit.2.i.preheader - br bool false, label %no_exit.2.i, label %loopexit.2.i.loopexit - + br i1 false, label %no_exit.2.i, label %loopexit.2.i.loopexit loopexit.2.i.loopexit: ; preds = %no_exit.2.i br label %loopexit.2.i - loopexit.2.i: ; preds = %loopexit.2.i.loopexit, %no_exit.1.i - br bool false, label %no_exit.1.i, label %loopexit.1.i.loopexit - + br i1 false, label %no_exit.1.i, label %loopexit.1.i.loopexit loopexit.1.i.loopexit: ; preds = %loopexit.2.i br label %loopexit.1.i - loopexit.1.i: ; preds = %loopexit.1.i.loopexit, %no_exit.0.i - br bool false, label %no_exit.0.i, label %readvector.exit.loopexit - + br i1 false, label %no_exit.0.i, label %readvector.exit.loopexit readvector.exit.loopexit: ; preds = %loopexit.1.i br label %readvector.exit - readvector.exit: ; preds = %readvector.exit.loopexit, %loopentry.0.i - br bool %tmp.143, label %loopentry.1.preheader.i, label %loopexit.0.i - + br i1 %tmp.143, label %loopentry.1.preheader.i, label %loopexit.0.i loopentry.1.preheader.i: ; preds = %readvector.exit br label %loopentry.1.outer.i - loopentry.1.outer.i: ; preds = %loopexit.1.i110, %loopentry.1.preheader.i br label %loopentry.1.i85 - loopentry.1.i85.loopexit: ; preds = %hamming.exit16.i br label %loopentry.1.i85 - loopentry.1.i85: ; preds = %loopentry.1.i85.loopexit, %loopentry.1.outer.i - br bool false, label %no_exit.1.preheader.i, label %loopexit.1.i110.loopexit1 - + br i1 false, label %no_exit.1.preheader.i, label %loopexit.1.i110.loopexit1 no_exit.1.preheader.i: ; preds = %loopentry.1.i85 br label %no_exit.1.i87 - no_exit.1.i87: ; preds = %then.1.i107, %no_exit.1.preheader.i - br bool false, label %no_exit.i.i101.preheader, label %hamming.exit.i104 - + br i1 false, label %no_exit.i.i101.preheader, label %hamming.exit.i104 no_exit.i.i101.preheader: ; preds = %no_exit.1.i87 br label %no_exit.i.i101 - no_exit.i.i101: ; preds = %no_exit.i.i101, %no_exit.i.i101.preheader - br bool false, label %no_exit.i.i101, label %hamming.exit.i104.loopexit - + br i1 false, label %no_exit.i.i101, label %hamming.exit.i104.loopexit hamming.exit.i104.loopexit: ; preds = %no_exit.i.i101 br label %hamming.exit.i104 - hamming.exit.i104: ; preds = %hamming.exit.i104.loopexit, %no_exit.1.i87 - br bool false, label %no_exit.i15.i.preheader, label %hamming.exit16.i - + br i1 false, label %no_exit.i15.i.preheader, label %hamming.exit16.i no_exit.i15.i.preheader: ; preds = %hamming.exit.i104 br label %no_exit.i15.i - no_exit.i15.i: ; preds = %no_exit.i15.i, %no_exit.i15.i.preheader - br bool false, label %no_exit.i15.i, label %hamming.exit16.i.loopexit - + br i1 false, label %no_exit.i15.i, label %hamming.exit16.i.loopexit hamming.exit16.i.loopexit: ; preds = %no_exit.i15.i br label %hamming.exit16.i - hamming.exit16.i: ; preds = %hamming.exit16.i.loopexit, %hamming.exit.i104 - br bool false, label %loopentry.1.i85.loopexit, label %then.1.i107 - + br i1 false, label %loopentry.1.i85.loopexit, label %then.1.i107 then.1.i107: ; preds = %hamming.exit16.i - br bool false, label %no_exit.1.i87, label %loopexit.1.i110.loopexit - + br i1 false, label %no_exit.1.i87, label %loopexit.1.i110.loopexit loopexit.1.i110.loopexit: ; preds = %then.1.i107 br label %loopexit.1.i110 - loopexit.1.i110.loopexit1: ; preds = %loopentry.1.i85 br label %loopexit.1.i110 - loopexit.1.i110: ; preds = %loopexit.1.i110.loopexit1, %loopexit.1.i110.loopexit - br bool false, label %loopentry.1.outer.i, label %loopexit.0.i.loopexit - + br i1 false, label %loopentry.1.outer.i, label %loopexit.0.i.loopexit loopexit.0.i.loopexit: ; preds = %loopexit.1.i110 br label %loopexit.0.i - loopexit.0.i: ; preds = %loopexit.0.i.loopexit, %readvector.exit - br bool false, label %UnifiedReturnBlock.i113, label %then.2.i112 - + br i1 false, label %UnifiedReturnBlock.i113, label %then.2.i112 then.2.i112: ; preds = %loopexit.0.i br label %checkham.exit - UnifiedReturnBlock.i113: ; preds = %loopexit.0.i br label %checkham.exit - checkham.exit: ; preds = %UnifiedReturnBlock.i113, %then.2.i112 - br bool false, label %loopentry.1.i14.preheader, label %loopentry.3.i.preheader - + br i1 false, label %loopentry.1.i14.preheader, label %loopentry.3.i.preheader loopentry.1.i14.preheader: ; preds = %checkham.exit br label %loopentry.1.i14 - loopentry.1.i14: ; preds = %loopexit.1.i18, %loopentry.1.i14.preheader - br bool false, label %no_exit.1.i16.preheader, label %loopexit.1.i18 - + br i1 false, label %no_exit.1.i16.preheader, label %loopexit.1.i18 no_exit.1.i16.preheader: ; preds = %loopentry.1.i14 br label %no_exit.1.i16 - no_exit.1.i16: ; preds = %no_exit.1.i16, %no_exit.1.i16.preheader - br bool false, label %no_exit.1.i16, label %loopexit.1.i18.loopexit - + br i1 false, label %no_exit.1.i16, label %loopexit.1.i18.loopexit loopexit.1.i18.loopexit: ; preds = %no_exit.1.i16 br label %loopexit.1.i18 - loopexit.1.i18: ; preds = %loopexit.1.i18.loopexit, %loopentry.1.i14 - br bool false, label %loopentry.1.i14, label %loopentry.3.i.loopexit - + br i1 false, label %loopentry.1.i14, label %loopentry.3.i.loopexit loopentry.3.i.loopexit: ; preds = %loopexit.1.i18 br label %loopentry.3.i.preheader - loopentry.3.i.preheader: ; preds = %loopentry.3.i.loopexit, %checkham.exit br label %loopentry.3.i - loopentry.3.i: ; preds = %endif.1.i, %loopentry.3.i.preheader - br bool false, label %loopentry.4.i.preheader, label %endif.1.i - + br i1 false, label %loopentry.4.i.preheader, label %endif.1.i loopentry.4.i.preheader: ; preds = %loopentry.3.i br label %loopentry.4.i - loopentry.4.i: ; preds = %loopexit.4.i, %loopentry.4.i.preheader - br bool false, label %no_exit.4.i.preheader, label %loopexit.4.i - + br i1 false, label %no_exit.4.i.preheader, label %loopexit.4.i no_exit.4.i.preheader: ; preds = %loopentry.4.i br label %no_exit.4.i - no_exit.4.i: ; preds = %no_exit.4.i.backedge, %no_exit.4.i.preheader - br bool false, label %endif.0.i, label %else.i - + br i1 false, label %endif.0.i, label %else.i else.i: ; preds = %no_exit.4.i - br bool false, label %no_exit.4.i.backedge, label %loopexit.4.i.loopexit - + br i1 false, label %no_exit.4.i.backedge, label %loopexit.4.i.loopexit no_exit.4.i.backedge: ; preds = %endif.0.i, %else.i br label %no_exit.4.i - endif.0.i: ; preds = %no_exit.4.i - br bool false, label %no_exit.4.i.backedge, label %loopexit.4.i.loopexit - + br i1 false, label %no_exit.4.i.backedge, label %loopexit.4.i.loopexit loopexit.4.i.loopexit: ; preds = %endif.0.i, %else.i br label %loopexit.4.i - loopexit.4.i: ; preds = %loopexit.4.i.loopexit, %loopentry.4.i - br bool false, label %loopentry.4.i, label %endif.1.i.loopexit - + br i1 false, label %loopentry.4.i, label %endif.1.i.loopexit endif.1.i.loopexit: ; preds = %loopexit.4.i br label %endif.1.i - endif.1.i: ; preds = %endif.1.i.loopexit, %loopentry.3.i - %exitcond = seteq uint 0, 10 ; <bool> [#uses=1] - br bool %exitcond, label %generateT.exit, label %loopentry.3.i - + %exitcond = icmp eq i32 0, 10 ; <i1> [#uses=1] + br i1 %exitcond, label %generateT.exit, label %loopentry.3.i generateT.exit: ; preds = %endif.1.i - br bool false, label %then.0.i, label %loopentry.1.i30.preheader - + br i1 false, label %then.0.i, label %loopentry.1.i30.preheader then.0.i: ; preds = %generateT.exit ret void - loopentry.1.i30.loopexit: ; preds = %loopexit.3.i br label %loopentry.1.i30.backedge - loopentry.1.i30.preheader: ; preds = %generateT.exit br label %loopentry.1.i30 - loopentry.1.i30: ; preds = %loopentry.1.i30.backedge, %loopentry.1.i30.preheader - br bool %tmp.143, label %no_exit.0.i31.preheader, label %loopentry.1.i30.backedge - + br i1 %tmp.143, label %no_exit.0.i31.preheader, label %loopentry.1.i30.backedge loopentry.1.i30.backedge: ; preds = %loopentry.1.i30, %loopentry.1.i30.loopexit br label %loopentry.1.i30 - no_exit.0.i31.preheader: ; preds = %loopentry.1.i30 br label %no_exit.0.i31 - no_exit.0.i31: ; preds = %loopexit.3.i, %no_exit.0.i31.preheader - br bool false, label %then.1.i, label %else.0.i - + br i1 false, label %then.1.i, label %else.0.i then.1.i: ; preds = %no_exit.0.i31 - br bool undef, label %then.0.i29, label %loopentry.0.i31 - + br i1 undef, label %then.0.i29, label %loopentry.0.i31 then.0.i29: ; preds = %then.1.i unreachable - loopentry.0.i31: ; preds = %then.1.i - br bool false, label %no_exit.0.i38.preheader, label %loopentry.1.i.preheader - + br i1 false, label %no_exit.0.i38.preheader, label %loopentry.1.i.preheader no_exit.0.i38.preheader: ; preds = %loopentry.0.i31 br label %no_exit.0.i38 - no_exit.0.i38: ; preds = %no_exit.0.i38, %no_exit.0.i38.preheader - br bool undef, label %no_exit.0.i38, label %loopentry.1.i.preheader.loopexit - + br i1 undef, label %no_exit.0.i38, label %loopentry.1.i.preheader.loopexit loopentry.1.i.preheader.loopexit: ; preds = %no_exit.0.i38 br label %loopentry.1.i.preheader - loopentry.1.i.preheader: ; preds = %loopentry.1.i.preheader.loopexit, %loopentry.0.i31 br label %loopentry.1.i - loopentry.1.i: ; preds = %endif.2.i, %loopentry.1.i.preheader - br bool undef, label %loopentry.2.i39.preheader, label %loopexit.1.i79.loopexit2 - + br i1 undef, label %loopentry.2.i39.preheader, label %loopexit.1.i79.loopexit2 loopentry.2.i39.preheader: ; preds = %loopentry.1.i br label %loopentry.2.i39 - loopentry.2.i39: ; preds = %loopexit.5.i77, %loopentry.2.i39.preheader - br bool false, label %loopentry.3.i40.preheader, label %hamming.exit.i71 - + br i1 false, label %loopentry.3.i40.preheader, label %hamming.exit.i71 loopentry.3.i40.preheader: ; preds = %loopentry.2.i39 br label %loopentry.3.i40 - loopentry.3.i40: ; preds = %loopexit.3.i51, %loopentry.3.i40.preheader - br bool false, label %no_exit.3.preheader.i42, label %loopexit.3.i51 - + br i1 false, label %no_exit.3.preheader.i42, label %loopexit.3.i51 no_exit.3.preheader.i42: ; preds = %loopentry.3.i40 br label %no_exit.3.i49 - no_exit.3.i49: ; preds = %no_exit.3.i49, %no_exit.3.preheader.i42 - br bool undef, label %no_exit.3.i49, label %loopexit.3.i51.loopexit - + br i1 undef, label %no_exit.3.i49, label %loopexit.3.i51.loopexit loopexit.3.i51.loopexit: ; preds = %no_exit.3.i49 br label %loopexit.3.i51 - loopexit.3.i51: ; preds = %loopexit.3.i51.loopexit, %loopentry.3.i40 - br bool undef, label %loopentry.3.i40, label %loopentry.4.i52 - + br i1 undef, label %loopentry.3.i40, label %loopentry.4.i52 loopentry.4.i52: ; preds = %loopexit.3.i51 - br bool false, label %no_exit.4.i54.preheader, label %hamming.exit.i71 - + br i1 false, label %no_exit.4.i54.preheader, label %hamming.exit.i71 no_exit.4.i54.preheader: ; preds = %loopentry.4.i52 br label %no_exit.4.i54 - no_exit.4.i54: ; preds = %no_exit.4.backedge.i, %no_exit.4.i54.preheader - br bool undef, label %then.1.i55, label %endif.1.i56 - + br i1 undef, label %then.1.i55, label %endif.1.i56 then.1.i55: ; preds = %no_exit.4.i54 - br bool undef, label %no_exit.4.backedge.i, label %loopexit.4.i57 - + br i1 undef, label %no_exit.4.backedge.i, label %loopexit.4.i57 no_exit.4.backedge.i: ; preds = %endif.1.i56, %then.1.i55 br label %no_exit.4.i54 - endif.1.i56: ; preds = %no_exit.4.i54 - br bool undef, label %no_exit.4.backedge.i, label %loopexit.4.i57 - + br i1 undef, label %no_exit.4.backedge.i, label %loopexit.4.i57 loopexit.4.i57: ; preds = %endif.1.i56, %then.1.i55 - br bool false, label %no_exit.i.i69.preheader, label %hamming.exit.i71 - + br i1 false, label %no_exit.i.i69.preheader, label %hamming.exit.i71 no_exit.i.i69.preheader: ; preds = %loopexit.4.i57 br label %no_exit.i.i69 - no_exit.i.i69: ; preds = %no_exit.i.i69, %no_exit.i.i69.preheader - br bool undef, label %no_exit.i.i69, label %hamming.exit.i71.loopexit - + br i1 undef, label %no_exit.i.i69, label %hamming.exit.i71.loopexit hamming.exit.i71.loopexit: ; preds = %no_exit.i.i69 br label %hamming.exit.i71 - hamming.exit.i71: ; preds = %hamming.exit.i71.loopexit, %loopexit.4.i57, %loopentry.4.i52, %loopentry.2.i39 - br bool undef, label %endif.2.i, label %loopentry.5.i72 - + br i1 undef, label %endif.2.i, label %loopentry.5.i72 loopentry.5.i72: ; preds = %hamming.exit.i71 - br bool false, label %shortcirc_next.i74.preheader, label %loopexit.5.i77 - + br i1 false, label %shortcirc_next.i74.preheader, label %loopexit.5.i77 shortcirc_next.i74.preheader: ; preds = %loopentry.5.i72 br label %shortcirc_next.i74 - shortcirc_next.i74: ; preds = %no_exit.5.i76, %shortcirc_next.i74.preheader - br bool undef, label %no_exit.5.i76, label %loopexit.5.i77.loopexit - + br i1 undef, label %no_exit.5.i76, label %loopexit.5.i77.loopexit no_exit.5.i76: ; preds = %shortcirc_next.i74 - br bool undef, label %shortcirc_next.i74, label %loopexit.5.i77.loopexit - + br i1 undef, label %shortcirc_next.i74, label %loopexit.5.i77.loopexit loopexit.5.i77.loopexit: ; preds = %no_exit.5.i76, %shortcirc_next.i74 br label %loopexit.5.i77 - loopexit.5.i77: ; preds = %loopexit.5.i77.loopexit, %loopentry.5.i72 - br bool undef, label %loopentry.2.i39, label %loopexit.1.i79.loopexit - + br i1 undef, label %loopentry.2.i39, label %loopexit.1.i79.loopexit endif.2.i: ; preds = %hamming.exit.i71 br label %loopentry.1.i - loopexit.1.i79.loopexit: ; preds = %loopexit.5.i77 br label %loopexit.1.i79 - loopexit.1.i79.loopexit2: ; preds = %loopentry.1.i br label %loopexit.1.i79 - loopexit.1.i79: ; preds = %loopexit.1.i79.loopexit2, %loopexit.1.i79.loopexit - br bool undef, label %then.3.i, label %loopentry.6.i80 - + br i1 undef, label %then.3.i, label %loopentry.6.i80 then.3.i: ; preds = %loopexit.1.i79 - br bool false, label %no_exit.6.i82.preheader, label %run.exit - + br i1 false, label %no_exit.6.i82.preheader, label %run.exit loopentry.6.i80: ; preds = %loopexit.1.i79 - br bool false, label %no_exit.6.i82.preheader, label %run.exit - + br i1 false, label %no_exit.6.i82.preheader, label %run.exit no_exit.6.i82.preheader: ; preds = %loopentry.6.i80, %then.3.i br label %no_exit.6.i82 - no_exit.6.i82: ; preds = %no_exit.6.i82, %no_exit.6.i82.preheader - br bool undef, label %no_exit.6.i82, label %run.exit.loopexit - + br i1 undef, label %no_exit.6.i82, label %run.exit.loopexit run.exit.loopexit: ; preds = %no_exit.6.i82 br label %run.exit - run.exit: ; preds = %run.exit.loopexit, %loopentry.6.i80, %then.3.i - br bool false, label %no_exit.1.i36.preheader, label %loopentry.3.i37 - + br i1 false, label %no_exit.1.i36.preheader, label %loopentry.3.i37 else.0.i: ; preds = %no_exit.0.i31 - br bool false, label %then.0.i4, label %loopentry.0.i6 - + br i1 false, label %then.0.i4, label %loopentry.0.i6 then.0.i4: ; preds = %else.0.i unreachable - loopentry.0.i6: ; preds = %else.0.i - br bool false, label %no_exit.0.i8.preheader, label %loopentry.2.i.preheader - + br i1 false, label %no_exit.0.i8.preheader, label %loopentry.2.i.preheader no_exit.0.i8.preheader: ; preds = %loopentry.0.i6 br label %no_exit.0.i8 - no_exit.0.i8: ; preds = %no_exit.0.i8, %no_exit.0.i8.preheader - br bool false, label %no_exit.0.i8, label %loopentry.2.i.preheader.loopexit - + br i1 false, label %no_exit.0.i8, label %loopentry.2.i.preheader.loopexit loopentry.2.i.preheader.loopexit: ; preds = %no_exit.0.i8 br label %loopentry.2.i.preheader - loopentry.2.i.preheader: ; preds = %loopentry.2.i.preheader.loopexit, %loopentry.0.i6 br label %loopentry.2.i - loopentry.2.i: ; preds = %endif.3.i19, %loopentry.2.i.preheader - br bool false, label %loopentry.3.i10.preheader, label %loopentry.4.i15 - + br i1 false, label %loopentry.3.i10.preheader, label %loopentry.4.i15 loopentry.3.i10.preheader: ; preds = %loopentry.2.i br label %loopentry.3.i10 - loopentry.3.i10: ; preds = %loopexit.3.i14, %loopentry.3.i10.preheader - br bool false, label %no_exit.3.preheader.i, label %loopexit.3.i14 - + br i1 false, label %no_exit.3.preheader.i, label %loopexit.3.i14 no_exit.3.preheader.i: ; preds = %loopentry.3.i10 br label %no_exit.3.i12 - no_exit.3.i12: ; preds = %no_exit.3.i12, %no_exit.3.preheader.i - br bool false, label %no_exit.3.i12, label %loopexit.3.i14.loopexit - + br i1 false, label %no_exit.3.i12, label %loopexit.3.i14.loopexit loopexit.3.i14.loopexit: ; preds = %no_exit.3.i12 br label %loopexit.3.i14 - loopexit.3.i14: ; preds = %loopexit.3.i14.loopexit, %loopentry.3.i10 - br bool false, label %loopentry.3.i10, label %loopentry.4.i15.loopexit - + br i1 false, label %loopentry.3.i10, label %loopentry.4.i15.loopexit loopentry.4.i15.loopexit: ; preds = %loopexit.3.i14 br label %loopentry.4.i15 - loopentry.4.i15: ; preds = %loopentry.4.i15.loopexit, %loopentry.2.i - br bool false, label %loopentry.5.outer.i.preheader, label %loopentry.7.i - + br i1 false, label %loopentry.5.outer.i.preheader, label %loopentry.7.i loopentry.5.outer.i.preheader: ; preds = %loopentry.4.i15 br label %loopentry.5.outer.i - loopentry.5.outer.i: ; preds = %loopexit.5.i, %loopentry.5.outer.i.preheader br label %loopentry.5.i - loopentry.5.i: ; preds = %endif.1.i18, %loopentry.5.outer.i - br bool false, label %no_exit.5.i.preheader, label %loopexit.5.i.loopexit3 - + br i1 false, label %no_exit.5.i.preheader, label %loopexit.5.i.loopexit3 no_exit.5.i.preheader: ; preds = %loopentry.5.i br label %no_exit.5.i - no_exit.5.i: ; preds = %then.2.i, %no_exit.5.i.preheader - br bool false, label %loopentry.6.i, label %endif.1.i18 - + br i1 false, label %loopentry.6.i, label %endif.1.i18 loopentry.6.i: ; preds = %no_exit.5.i - br bool false, label %no_exit.6.preheader.i, label %loopexit.6.i - + br i1 false, label %no_exit.6.preheader.i, label %loopexit.6.i no_exit.6.preheader.i: ; preds = %loopentry.6.i br label %no_exit.6.i - no_exit.6.i: ; preds = %no_exit.6.i, %no_exit.6.preheader.i - br bool false, label %no_exit.6.i, label %loopexit.6.i.loopexit - + br i1 false, label %no_exit.6.i, label %loopexit.6.i.loopexit loopexit.6.i.loopexit: ; preds = %no_exit.6.i br label %loopexit.6.i - loopexit.6.i: ; preds = %loopexit.6.i.loopexit, %loopentry.6.i - br bool false, label %then.2.i, label %endif.1.i18 - + br i1 false, label %then.2.i, label %endif.1.i18 then.2.i: ; preds = %loopexit.6.i - br bool false, label %no_exit.5.i, label %loopexit.5.i.loopexit - + br i1 false, label %no_exit.5.i, label %loopexit.5.i.loopexit endif.1.i18: ; preds = %loopexit.6.i, %no_exit.5.i br label %loopentry.5.i - loopexit.5.i.loopexit: ; preds = %then.2.i br label %loopexit.5.i - loopexit.5.i.loopexit3: ; preds = %loopentry.5.i br label %loopexit.5.i - loopexit.5.i: ; preds = %loopexit.5.i.loopexit3, %loopexit.5.i.loopexit - br bool false, label %loopentry.5.outer.i, label %loopentry.7.i.loopexit - + br i1 false, label %loopentry.5.outer.i, label %loopentry.7.i.loopexit loopentry.7.i.loopexit: ; preds = %loopexit.5.i br label %loopentry.7.i - loopentry.7.i: ; preds = %loopentry.7.i.loopexit, %loopentry.4.i15 - br bool false, label %no_exit.7.i.preheader, label %hamming.exit.i - + br i1 false, label %no_exit.7.i.preheader, label %hamming.exit.i no_exit.7.i.preheader: ; preds = %loopentry.7.i br label %no_exit.7.i - no_exit.7.i: ; preds = %no_exit.7.i, %no_exit.7.i.preheader - br bool false, label %no_exit.7.i, label %loopexit.7.i - + br i1 false, label %no_exit.7.i, label %loopexit.7.i loopexit.7.i: ; preds = %no_exit.7.i - br bool false, label %no_exit.i.i.preheader, label %hamming.exit.i - + br i1 false, label %no_exit.i.i.preheader, label %hamming.exit.i no_exit.i.i.preheader: ; preds = %loopexit.7.i br label %no_exit.i.i - no_exit.i.i: ; preds = %no_exit.i.i, %no_exit.i.i.preheader - br bool false, label %no_exit.i.i, label %hamming.exit.i.loopexit - + br i1 false, label %no_exit.i.i, label %hamming.exit.i.loopexit hamming.exit.i.loopexit: ; preds = %no_exit.i.i br label %hamming.exit.i - hamming.exit.i: ; preds = %hamming.exit.i.loopexit, %loopexit.7.i, %loopentry.7.i - br bool false, label %endif.3.i19, label %loopentry.8.i - + br i1 false, label %endif.3.i19, label %loopentry.8.i loopentry.8.i: ; preds = %hamming.exit.i - br bool false, label %shortcirc_next.i.preheader, label %loopexit.8.i - + br i1 false, label %shortcirc_next.i.preheader, label %loopexit.8.i shortcirc_next.i.preheader: ; preds = %loopentry.8.i br label %shortcirc_next.i - shortcirc_next.i: ; preds = %no_exit.8.i, %shortcirc_next.i.preheader - br bool false, label %no_exit.8.i, label %loopexit.8.i.loopexit - + br i1 false, label %no_exit.8.i, label %loopexit.8.i.loopexit no_exit.8.i: ; preds = %shortcirc_next.i - br bool false, label %shortcirc_next.i, label %loopexit.8.i.loopexit - + br i1 false, label %shortcirc_next.i, label %loopexit.8.i.loopexit loopexit.8.i.loopexit: ; preds = %no_exit.8.i, %shortcirc_next.i br label %loopexit.8.i - loopexit.8.i: ; preds = %loopexit.8.i.loopexit, %loopentry.8.i - br bool false, label %no_exit.9.i.preheader, label %endif.3.i19 - + br i1 false, label %no_exit.9.i.preheader, label %endif.3.i19 no_exit.9.i.preheader: ; preds = %loopexit.8.i br label %no_exit.9.i - no_exit.9.i: ; preds = %no_exit.9.i, %no_exit.9.i.preheader - br bool false, label %no_exit.9.i, label %endif.3.i19.loopexit - + br i1 false, label %no_exit.9.i, label %endif.3.i19.loopexit endif.3.i19.loopexit: ; preds = %no_exit.9.i br label %endif.3.i19 - endif.3.i19: ; preds = %endif.3.i19.loopexit, %loopexit.8.i, %hamming.exit.i - br bool false, label %loopentry.2.i, label %loopexit.1.i20 - + br i1 false, label %loopentry.2.i, label %loopexit.1.i20 loopexit.1.i20: ; preds = %endif.3.i19 - br bool false, label %then.4.i, label %UnifiedReturnBlock.i - + br i1 false, label %then.4.i, label %UnifiedReturnBlock.i then.4.i: ; preds = %loopexit.1.i20 br label %runcont.exit - UnifiedReturnBlock.i: ; preds = %loopexit.1.i20 br label %runcont.exit - runcont.exit: ; preds = %UnifiedReturnBlock.i, %then.4.i - br bool false, label %no_exit.1.i36.preheader, label %loopentry.3.i37 - + br i1 false, label %no_exit.1.i36.preheader, label %loopentry.3.i37 no_exit.1.i36.preheader: ; preds = %runcont.exit, %run.exit br label %no_exit.1.i36 - no_exit.1.i36: ; preds = %no_exit.1.i36, %no_exit.1.i36.preheader - br bool false, label %no_exit.1.i36, label %loopentry.3.i37.loopexit - + br i1 false, label %no_exit.1.i36, label %loopentry.3.i37.loopexit loopentry.3.i37.loopexit: ; preds = %no_exit.1.i36 br label %loopentry.3.i37 - loopentry.3.i37: ; preds = %loopentry.3.i37.loopexit, %runcont.exit, %run.exit - br bool false, label %loopentry.4.i38.preheader, label %loopexit.3.i - + br i1 false, label %loopentry.4.i38.preheader, label %loopexit.3.i loopentry.4.i38.preheader: ; preds = %loopentry.3.i37 br label %loopentry.4.i38 - loopentry.4.i38: ; preds = %loopexit.4.i42, %loopentry.4.i38.preheader - br bool false, label %no_exit.3.i.preheader, label %loopexit.4.i42 - + br i1 false, label %no_exit.3.i.preheader, label %loopexit.4.i42 no_exit.3.i.preheader: ; preds = %loopentry.4.i38 br label %no_exit.3.i - no_exit.3.i: ; preds = %no_exit.3.i.backedge, %no_exit.3.i.preheader - br bool false, label %endif.3.i, label %else.1.i - + br i1 false, label %endif.3.i, label %else.1.i else.1.i: ; preds = %no_exit.3.i - br bool false, label %no_exit.3.i.backedge, label %loopexit.4.i42.loopexit - + br i1 false, label %no_exit.3.i.backedge, label %loopexit.4.i42.loopexit no_exit.3.i.backedge: ; preds = %endif.3.i, %else.1.i br label %no_exit.3.i - endif.3.i: ; preds = %no_exit.3.i - br bool false, label %no_exit.3.i.backedge, label %loopexit.4.i42.loopexit - + br i1 false, label %no_exit.3.i.backedge, label %loopexit.4.i42.loopexit loopexit.4.i42.loopexit: ; preds = %endif.3.i, %else.1.i br label %loopexit.4.i42 - loopexit.4.i42: ; preds = %loopexit.4.i42.loopexit, %loopentry.4.i38 - br bool false, label %loopentry.4.i38, label %loopexit.3.i.loopexit - + br i1 false, label %loopentry.4.i38, label %loopexit.3.i.loopexit loopexit.3.i.loopexit: ; preds = %loopexit.4.i42 br label %loopexit.3.i - loopexit.3.i: ; preds = %loopexit.3.i.loopexit, %loopentry.3.i37 - %tmp.13.i155 = setlt int 0, 0 ; <bool> [#uses=1] - br bool %tmp.13.i155, label %no_exit.0.i31, label %loopentry.1.i30.loopexit + %tmp.13.i155 = icmp slt i32 0, 0 ; <i1> [#uses=1] + br i1 %tmp.13.i155, label %no_exit.0.i31, label %loopentry.1.i30.loopexit } diff --git a/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll b/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll index a224a2f..110a440 100644 --- a/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll +++ b/test/Transforms/SimplifyCFG/2006-08-03-Crash.ll @@ -1,104 +1,98 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -load-vn -gcse -simplifycfg \ +; RUN: llvm-as < %s | opt -load-vn -gcse -simplifycfg \ ; RUN: -disable-output ; PR867 +; END. -target endian = big -target pointersize = 32 +target datalayout = "E-p:32:32" target triple = "powerpc-apple-darwin8" - %struct.CUMULATIVE_ARGS = type { int, int, int, int, int, int, int, int, int, int, int, int } + %struct.CUMULATIVE_ARGS = type { i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32 } %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.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, ubyte, ubyte, %struct.language_function*, %struct.rtx_def*, uint, int, int, int, %struct.location_t, %struct.varray_head_tag*, %struct.tree_node*, ubyte, ubyte, ubyte } + %struct.emit_status = type { i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack*, i32, %struct.location_t, i32, i8*, %struct.rtx_def** } + %struct.expr_status = type { i32, i32, i32, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def* } + %struct.function = type { %struct.eh_status*, %struct.expr_status*, %struct.emit_status*, %struct.varasm_status*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.function*, i32, i32, i32, i32, %struct.rtx_def*, %struct.CUMULATIVE_ARGS, %struct.rtx_def*, %struct.rtx_def*, %struct.initial_value_struct*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, %struct.rtx_def*, i8, i32, i64, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.varray_head_tag*, %struct.temp_slot*, i32, %struct.var_refs_queue*, i32, i32, %struct.rtvec_def*, %struct.tree_node*, i32, i32, i32, %struct.machine_function*, i32, i32, i8, i8, %struct.language_function*, %struct.rtx_def*, i32, i32, i32, i32, %struct.location_t, %struct.varray_head_tag*, %struct.tree_node*, i8, i8, i8 } %struct.initial_value_struct = type opaque %struct.lang_decl = type opaque %struct.lang_type = type opaque %struct.language_function = type opaque - %struct.location_t = type { sbyte*, int } - %struct.machine_function = type { int, uint, sbyte*, int, int } - %struct.rtunion = type { int } - %struct.rtvec_def = type { int, [1 x %struct.rtx_def*] } - %struct.rtx_def = type { ushort, ubyte, ubyte, %struct.u } + %struct.location_t = type { i8*, i32 } + %struct.machine_function = type { i32, i32, i8*, i32, i32 } + %struct.rtunion = type { i32 } + %struct.rtvec_def = type { i32, [1 x %struct.rtx_def*] } + %struct.rtx_def = type { i16, i8, i8, %struct.u } %struct.sequence_stack = type { %struct.rtx_def*, %struct.rtx_def*, %struct.sequence_stack* } %struct.temp_slot = type opaque - %struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, %union.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, 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*, %struct.tree_decl_u2, %struct.tree_node*, %struct.tree_node*, long, %struct.lang_decl* } - %struct.tree_decl_u1 = type { long } + %struct.tree_common = type { %struct.tree_node*, %struct.tree_node*, %union.tree_ann_d*, i8, i8, i8, i8, i8 } + %struct.tree_decl = type { %struct.tree_common, %struct.location_t, i32, %struct.tree_node*, i8, i8, i8, i8, i8, i8, i8, i8, i32, %struct.tree_decl_u1, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.rtx_def*, %struct.tree_decl_u2, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_decl* } + %struct.tree_decl_u1 = type { i64 } %struct.tree_decl_u2 = type { %struct.function* } %struct.tree_node = type { %struct.tree_decl } - %struct.tree_type = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, uint, ushort, ubyte, ubyte, uint, %struct.tree_node*, %struct.tree_node*, %struct.rtunion, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, long, %struct.lang_type* } - %struct.u = type { [1 x long] } - %struct.var_refs_queue = type { %struct.rtx_def*, uint, int, %struct.var_refs_queue* } + %struct.tree_type = type { %struct.tree_common, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i32, i16, i8, i8, i32, %struct.tree_node*, %struct.tree_node*, %struct.rtunion, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, %struct.tree_node*, i64, %struct.lang_type* } + %struct.u = type { [1 x i64] } + %struct.var_refs_queue = type { %struct.rtx_def*, i32, i32, %struct.var_refs_queue* } %struct.varasm_status = type opaque - %struct.varray_head_tag = type { uint, uint, uint, sbyte*, %struct.u } + %struct.varray_head_tag = type { i32, i32, i32, i8*, %struct.u } %union.tree_ann_d = type opaque -%mode_class = external global [35 x ubyte] ; <[35 x ubyte]*> [#uses=3] +@mode_class = external global [35 x i8] ; <[35 x i8]*> [#uses=3] -implementation ; Functions: - -void %fold_builtin_classify() { +define void @fold_builtin_classify() { entry: - %tmp63 = load int* null ; <int> [#uses=1] - switch int %tmp63, label %bb276 [ - int 414, label %bb145 - int 417, label %bb + %tmp63 = load i32* null ; <i32> [#uses=1] + switch i32 %tmp63, label %bb276 [ + i32 414, label %bb145 + i32 417, label %bb ] - bb: ; preds = %entry ret void - bb145: ; preds = %entry %tmp146 = load %struct.tree_node** null ; <%struct.tree_node*> [#uses=1] - %tmp148 = getelementptr %struct.tree_node* %tmp146, int 0, uint 0, uint 0, uint 1 ; <%struct.tree_node**> [#uses=1] + %tmp148 = getelementptr %struct.tree_node* %tmp146, i32 0, i32 0, i32 0, i32 1 ; <%struct.tree_node**> [#uses=1] %tmp149 = load %struct.tree_node** %tmp148 ; <%struct.tree_node*> [#uses=1] - %tmp150 = cast %struct.tree_node* %tmp149 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1] - %tmp151 = getelementptr %struct.tree_type* %tmp150, int 0, uint 6 ; <ushort*> [#uses=1] - %tmp151 = cast ushort* %tmp151 to uint* ; <uint*> [#uses=1] - %tmp152 = load uint* %tmp151 ; <uint> [#uses=1] - %tmp154 = shr uint %tmp152, ubyte 16 ; <uint> [#uses=1] - %tmp154.mask = and uint %tmp154, 127 ; <uint> [#uses=1] - %tmp155 = getelementptr [35 x ubyte]* %mode_class, int 0, uint %tmp154.mask ; <ubyte*> [#uses=1] - %tmp156 = load ubyte* %tmp155 ; <ubyte> [#uses=1] - %tmp157 = seteq ubyte %tmp156, 4 ; <bool> [#uses=1] - br bool %tmp157, label %cond_next241, label %cond_true158 - + %tmp150 = bitcast %struct.tree_node* %tmp149 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1] + %tmp151 = getelementptr %struct.tree_type* %tmp150, i32 0, i32 6 ; <i16*> [#uses=1] + %tmp151.upgrd.1 = bitcast i16* %tmp151 to i32* ; <i32*> [#uses=1] + %tmp152 = load i32* %tmp151.upgrd.1 ; <i32> [#uses=1] + %tmp154 = lshr i32 %tmp152, 16 ; <i32> [#uses=1] + %tmp154.mask = and i32 %tmp154, 127 ; <i32> [#uses=1] + %gep.upgrd.2 = zext i32 %tmp154.mask to i64 ; <i64> [#uses=1] + %tmp155 = getelementptr [35 x i8]* @mode_class, i32 0, i64 %gep.upgrd.2 ; <i8*> [#uses=1] + %tmp156 = load i8* %tmp155 ; <i8> [#uses=1] + %tmp157 = icmp eq i8 %tmp156, 4 ; <i1> [#uses=1] + br i1 %tmp157, label %cond_next241, label %cond_true158 cond_true158: ; preds = %bb145 %tmp172 = load %struct.tree_node** null ; <%struct.tree_node*> [#uses=1] - %tmp174 = getelementptr %struct.tree_node* %tmp172, int 0, uint 0, uint 0, uint 1 ; <%struct.tree_node**> [#uses=1] + %tmp174 = getelementptr %struct.tree_node* %tmp172, i32 0, i32 0, i32 0, i32 1 ; <%struct.tree_node**> [#uses=1] %tmp175 = load %struct.tree_node** %tmp174 ; <%struct.tree_node*> [#uses=1] - %tmp176 = cast %struct.tree_node* %tmp175 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1] - %tmp177 = getelementptr %struct.tree_type* %tmp176, int 0, uint 6 ; <ushort*> [#uses=1] - %tmp177 = cast ushort* %tmp177 to uint* ; <uint*> [#uses=1] - %tmp178 = load uint* %tmp177 ; <uint> [#uses=1] - %tmp180 = shr uint %tmp178, ubyte 16 ; <uint> [#uses=1] - %tmp180.mask = and uint %tmp180, 127 ; <uint> [#uses=1] - %tmp181 = getelementptr [35 x ubyte]* %mode_class, int 0, uint %tmp180.mask ; <ubyte*> [#uses=1] - %tmp182 = load ubyte* %tmp181 ; <ubyte> [#uses=1] - %tmp183 = seteq ubyte %tmp182, 8 ; <bool> [#uses=1] - br bool %tmp183, label %cond_next241, label %cond_true184 - + %tmp176 = bitcast %struct.tree_node* %tmp175 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1] + %tmp177 = getelementptr %struct.tree_type* %tmp176, i32 0, i32 6 ; <i16*> [#uses=1] + %tmp177.upgrd.3 = bitcast i16* %tmp177 to i32* ; <i32*> [#uses=1] + %tmp178 = load i32* %tmp177.upgrd.3 ; <i32> [#uses=1] + %tmp180 = lshr i32 %tmp178, 16 ; <i32> [#uses=1] + %tmp180.mask = and i32 %tmp180, 127 ; <i32> [#uses=1] + %gep.upgrd.4 = zext i32 %tmp180.mask to i64 ; <i64> [#uses=1] + %tmp181 = getelementptr [35 x i8]* @mode_class, i32 0, i64 %gep.upgrd.4 ; <i8*> [#uses=1] + %tmp182 = load i8* %tmp181 ; <i8> [#uses=1] + %tmp183 = icmp eq i8 %tmp182, 8 ; <i1> [#uses=1] + br i1 %tmp183, label %cond_next241, label %cond_true184 cond_true184: ; preds = %cond_true158 %tmp185 = load %struct.tree_node** null ; <%struct.tree_node*> [#uses=1] - %tmp187 = getelementptr %struct.tree_node* %tmp185, int 0, uint 0, uint 0, uint 1 ; <%struct.tree_node**> [#uses=1] + %tmp187 = getelementptr %struct.tree_node* %tmp185, i32 0, i32 0, i32 0, i32 1 ; <%struct.tree_node**> [#uses=1] %tmp188 = load %struct.tree_node** %tmp187 ; <%struct.tree_node*> [#uses=1] - %tmp189 = cast %struct.tree_node* %tmp188 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1] - %tmp190 = getelementptr %struct.tree_type* %tmp189, int 0, uint 6 ; <ushort*> [#uses=1] - %tmp190 = cast ushort* %tmp190 to uint* ; <uint*> [#uses=1] - %tmp191 = load uint* %tmp190 ; <uint> [#uses=1] - %tmp193 = shr uint %tmp191, ubyte 16 ; <uint> [#uses=1] - %tmp193.mask = and uint %tmp193, 127 ; <uint> [#uses=1] - %tmp194 = getelementptr [35 x ubyte]* %mode_class, int 0, uint %tmp193.mask ; <ubyte*> [#uses=1] - %tmp195 = load ubyte* %tmp194 ; <ubyte> [#uses=1] - %tmp196 = seteq ubyte %tmp195, 4 ; <bool> [#uses=1] - br bool %tmp196, label %cond_next241, label %cond_true197 - + %tmp189 = bitcast %struct.tree_node* %tmp188 to %struct.tree_type* ; <%struct.tree_type*> [#uses=1] + %tmp190 = getelementptr %struct.tree_type* %tmp189, i32 0, i32 6 ; <i16*> [#uses=1] + %tmp190.upgrd.5 = bitcast i16* %tmp190 to i32* ; <i32*> [#uses=1] + %tmp191 = load i32* %tmp190.upgrd.5 ; <i32> [#uses=1] + %tmp193 = lshr i32 %tmp191, 16 ; <i32> [#uses=1] + %tmp193.mask = and i32 %tmp193, 127 ; <i32> [#uses=1] + %gep.upgrd.6 = zext i32 %tmp193.mask to i64 ; <i64> [#uses=1] + %tmp194 = getelementptr [35 x i8]* @mode_class, i32 0, i64 %gep.upgrd.6 ; <i8*> [#uses=1] + %tmp195 = load i8* %tmp194 ; <i8> [#uses=1] + %tmp196 = icmp eq i8 %tmp195, 4 ; <i1> [#uses=1] + br i1 %tmp196, label %cond_next241, label %cond_true197 cond_true197: ; preds = %cond_true184 ret void - cond_next241: ; preds = %cond_true184, %cond_true158, %bb145 - %tmp245 = load uint* null ; <uint> [#uses=0] + %tmp245 = load i32* null ; <i32> [#uses=0] ret void - bb276: ; preds = %entry ret void } diff --git a/test/Transforms/SimplifyCFG/2006-10-19-UncondDiv.ll b/test/Transforms/SimplifyCFG/2006-10-19-UncondDiv.ll index 26fce45..7165c5b 100644 --- a/test/Transforms/SimplifyCFG/2006-10-19-UncondDiv.ll +++ b/test/Transforms/SimplifyCFG/2006-10-19-UncondDiv.ll @@ -1,34 +1,26 @@ ; PR957 -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | \ ; RUN: not grep select -uint %test(uint %tmp) { -cond_false179: ; preds = %cond_true - %tmp181 = seteq uint %tmp, 0 ; <bool> [#uses=1] - br bool %tmp181, label %cond_true182, label %cond_next185 - -cond_true182: ; preds = %cond_false179 - br label %cond_next185 - -cond_next185: ; preds = %cond_true182, %cond_false179 - %d0.3 = phi uint [ div (uint 1, uint 0), %cond_true182 ], [ %tmp, -%cond_false179 ] ; <uint> [#uses=7] - - ret uint %d0.3 +define i32 @test(i32 %tmp) { +cond_false179: + %tmp181 = icmp eq i32 %tmp, 0 ; <i1> [#uses=1] + br i1 %tmp181, label %cond_true182, label %cond_next185 +cond_true182: ; preds = %cond_false179 + br label %cond_next185 +cond_next185: ; preds = %cond_true182, %cond_false179 + %d0.3 = phi i32 [ udiv (i32 1, i32 0), %cond_true182 ], [ %tmp, %cond_false179 ] ; <i32> [#uses=1] + ret i32 %d0.3 } -uint %test2(uint %tmp) { -cond_false179: ; preds = %cond_true - %tmp181 = seteq uint %tmp, 0 ; <bool> [#uses=1] - br bool %tmp181, label %cond_true182, label %cond_next185 - -cond_true182: ; preds = %cond_false179 - br label %cond_next185 - -cond_next185: ; preds = %cond_true182, %cond_false179 - %d0.3 = phi uint [ div (uint 1, uint 0), %cond_true182 ], [ %tmp, -%cond_false179 ] ; <uint> [#uses=7] - call uint %test(uint 4) - ret uint %d0.3 +define i32 @test2(i32 %tmp) { +cond_false179: + %tmp181 = icmp eq i32 %tmp, 0 ; <i1> [#uses=1] + br i1 %tmp181, label %cond_true182, label %cond_next185 +cond_true182: ; preds = %cond_false179 + br label %cond_next185 +cond_next185: ; preds = %cond_true182, %cond_false179 + %d0.3 = phi i32 [ udiv (i32 1, i32 0), %cond_true182 ], [ %tmp, %cond_false179 ] ; <i32> [#uses=1] + call i32 @test( i32 4 ) ; <i32>:0 [#uses=0] + ret i32 %d0.3 } - diff --git a/test/Transforms/SimplifyCFG/2006-10-29-InvokeCrash.ll b/test/Transforms/SimplifyCFG/2006-10-29-InvokeCrash.ll index d067ac0..f22ca6c 100644 --- a/test/Transforms/SimplifyCFG/2006-10-29-InvokeCrash.ll +++ b/test/Transforms/SimplifyCFG/2006-10-29-InvokeCrash.ll @@ -1,60 +1,58 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg -disable-output - +; RUN: llvm-as < %s | opt -simplifycfg -disable-output +; END. %struct..4._102 = type { %struct.QVectorData* } %struct..5._125 = type { %struct.QMapData* } %struct.QAbstractTextDocumentLayout = type { %struct.QObject } - %struct.QBasicAtomic = type { int } - %struct.QFont = type { %struct.QFontPrivate*, uint } + %struct.QBasicAtomic = type { i32 } + %struct.QFont = type { %struct.QFontPrivate*, i32 } %struct.QFontMetrics = type { %struct.QFontPrivate* } %struct.QFontPrivate = type opaque - "struct.QFragmentMap<QTextBlockData>" = type { %struct.QFragmentMapData } - %struct.QFragmentMapData = type { "struct.QFragmentMapData::._154", int } - "struct.QFragmentMapData::._154" = type { "struct.QFragmentMapData::Header"* } - "struct.QFragmentMapData::Header" = type { uint, uint, uint, uint, uint, uint, uint, uint } - "struct.QHash<uint,QHashDummyValue>" = type { "struct.QHash<uint,QHashDummyValue>::._152" } - "struct.QHash<uint,QHashDummyValue>::._152" = type { %struct.QHashData* } - %struct.QHashData = type { "struct.QHashData::Node"*, "struct.QHashData::Node"**, %struct.QBasicAtomic, int, int, short, short, int, ubyte } - "struct.QHashData::Node" = type { "struct.QHashData::Node"*, uint } - "struct.QList<QObject*>::._92" = type { %struct.QListData } - "struct.QList<QPointer<QObject> >" = type { "struct.QList<QObject*>::._92" } - %struct.QListData = type { "struct.QListData::Data"* } - "struct.QListData::Data" = type { %struct.QBasicAtomic, int, int, int, ubyte, [1 x sbyte*] } - "struct.QMap<QUrl,QVariant>" = type { %struct..5._125 } - %struct.QMapData = type { "struct.QMapData::Node"*, [12 x "struct.QMapData::Node"*], %struct.QBasicAtomic, int, int, uint, ubyte } - "struct.QMapData::Node" = type { "struct.QMapData::Node"*, [1 x "struct.QMapData::Node"*] } - %struct.QObject = type { int (...)**, %struct.QObjectData* } - %struct.QObjectData = type { int (...)**, %struct.QObject*, %struct.QObject*, "struct.QList<QPointer<QObject> >", ubyte, [3 x ubyte], int, int } - %struct.QObjectPrivate = type { %struct.QObjectData, int, %struct.QObject*, "struct.QList<QPointer<QObject> >", "struct.QVector<QAbstractTextDocumentLayout::Selection>", %struct.QString } - %struct.QPaintDevice = type { int (...)**, ushort } + %"struct.QFragmentMap<QTextBlockData>" = type { %struct.QFragmentMapData } + %struct.QFragmentMapData = type { %"struct.QFragmentMapData::._154", i32 } + %"struct.QFragmentMapData::._154" = type { %"struct.QFragmentMapData::Header"* } + %"struct.QFragmentMapData::Header" = type { i32, i32, i32, i32, i32, i32, i32, i32 } + %"struct.QHash<uint,QHashDummyValue>" = type { %"struct.QHash<uint,QHashDummyValue>::._152" } + %"struct.QHash<uint,QHashDummyValue>::._152" = type { %struct.QHashData* } + %struct.QHashData = type { %"struct.QHashData::Node"*, %"struct.QHashData::Node"**, %struct.QBasicAtomic, i32, i32, i16, i16, i32, i8 } + %"struct.QHashData::Node" = type { %"struct.QHashData::Node"*, i32 } + %"struct.QList<QObject*>::._92" = type { %struct.QListData } + %"struct.QList<QPointer<QObject> >" = type { %"struct.QList<QObject*>::._92" } + %struct.QListData = type { %"struct.QListData::Data"* } + %"struct.QListData::Data" = type { %struct.QBasicAtomic, i32, i32, i32, i8, [1 x i8*] } + %"struct.QMap<QUrl,QVariant>" = type { %struct..5._125 } + %struct.QMapData = type { %"struct.QMapData::Node"*, [12 x %"struct.QMapData::Node"*], %struct.QBasicAtomic, i32, i32, i32, i8 } + %"struct.QMapData::Node" = type { %"struct.QMapData::Node"*, [1 x %"struct.QMapData::Node"*] } + %struct.QObject = type { i32 (...)**, %struct.QObjectData* } + %struct.QObjectData = type { i32 (...)**, %struct.QObject*, %struct.QObject*, %"struct.QList<QPointer<QObject> >", i8, [3 x i8], i32, i32 } + %struct.QObjectPrivate = type { %struct.QObjectData, i32, %struct.QObject*, %"struct.QList<QPointer<QObject> >", %"struct.QVector<QAbstractTextDocumentLayout::Selection>", %struct.QString } + %struct.QPaintDevice = type { i32 (...)**, i16 } %struct.QPainter = type { %struct.QPainterPrivate* } %struct.QPainterPrivate = type opaque %struct.QPointF = type { double, double } %struct.QPrinter = type { %struct.QPaintDevice, %struct.QPrinterPrivate* } %struct.QPrinterPrivate = type opaque %struct.QRectF = type { double, double, double, double } - "struct.QSet<uint>" = type { "struct.QHash<uint,QHashDummyValue>" } - "struct.QSharedDataPointer<QTextFormatPrivate>" = type { %struct.QTextFormatPrivate* } - %struct.QString = type { "struct.QString::Data"* } - "struct.QString::Data" = type { %struct.QBasicAtomic, int, int, ushort*, ubyte, ubyte, [1 x ushort] } + %"struct.QSet<uint>" = type { %"struct.QHash<uint,QHashDummyValue>" } + %"struct.QSharedDataPointer<QTextFormatPrivate>" = type { %struct.QTextFormatPrivate* } + %struct.QString = type { %"struct.QString::Data"* } + %"struct.QString::Data" = type { %struct.QBasicAtomic, i32, i32, i16*, i8, i8, [1 x i16] } %struct.QTextBlockFormat = type { %struct.QTextFormat } %struct.QTextBlockGroup = type { %struct.QAbstractTextDocumentLayout } %struct.QTextDocumentConfig = type { %struct.QString } - %struct.QTextDocumentPrivate = type { %struct.QObjectPrivate, %struct.QString, "struct.QVector<QAbstractTextDocumentLayout::Selection>", bool, int, int, bool, int, int, int, int, bool, %struct.QTextFormatCollection, %struct.QTextBlockGroup*, %struct.QAbstractTextDocumentLayout*, "struct.QFragmentMap<QTextBlockData>", "struct.QFragmentMap<QTextBlockData>", int, "struct.QList<QPointer<QObject> >", "struct.QList<QPointer<QObject> >", "struct.QMap<QUrl,QVariant>", "struct.QMap<QUrl,QVariant>", "struct.QMap<QUrl,QVariant>", %struct.QTextDocumentConfig, bool, bool, %struct.QPointF } - %struct.QTextFormat = type { "struct.QSharedDataPointer<QTextFormatPrivate>", int } - %struct.QTextFormatCollection = type { "struct.QVector<QAbstractTextDocumentLayout::Selection>", "struct.QVector<QAbstractTextDocumentLayout::Selection>", "struct.QSet<uint>", %struct.QFont } + %struct.QTextDocumentPrivate = type { %struct.QObjectPrivate, %struct.QString, %"struct.QVector<QAbstractTextDocumentLayout::Selection>", i1, i32, i32, i1, i32, i32, i32, i32, i1, %struct.QTextFormatCollection, %struct.QTextBlockGroup*, %struct.QAbstractTextDocumentLayout*, %"struct.QFragmentMap<QTextBlockData>", %"struct.QFragmentMap<QTextBlockData>", i32, %"struct.QList<QPointer<QObject> >", %"struct.QList<QPointer<QObject> >", %"struct.QMap<QUrl,QVariant>", %"struct.QMap<QUrl,QVariant>", %"struct.QMap<QUrl,QVariant>", %struct.QTextDocumentConfig, i1, i1, %struct.QPointF } + %struct.QTextFormat = type { %"struct.QSharedDataPointer<QTextFormatPrivate>", i32 } + %struct.QTextFormatCollection = type { %"struct.QVector<QAbstractTextDocumentLayout::Selection>", %"struct.QVector<QAbstractTextDocumentLayout::Selection>", %"struct.QSet<uint>", %struct.QFont } %struct.QTextFormatPrivate = type opaque - "struct.QVector<QAbstractTextDocumentLayout::Selection>" = type { %struct..4._102 } - %struct.QVectorData = type { %struct.QBasicAtomic, int, int, ubyte } - -implementation ; Functions: + %"struct.QVector<QAbstractTextDocumentLayout::Selection>" = type { %struct..4._102 } + %struct.QVectorData = type { %struct.QBasicAtomic, i32, i32, i8 } -void %_ZNK13QTextDocument5printEP8QPrinter(%struct.QAbstractTextDocumentLayout* %this, %struct.QPrinter* %printer) { +define void @_ZNK13QTextDocument5printEP8QPrinter(%struct.QAbstractTextDocumentLayout* %this, %struct.QPrinter* %printer) { entry: %tmp = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=2] - %tmp = alloca %struct.QRectF, align 16 ; <%struct.QRectF*> [#uses=5] + %tmp.upgrd.1 = alloca %struct.QRectF, align 16 ; <%struct.QRectF*> [#uses=5] %tmp2 = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=3] - %tmp = alloca %struct.QFontMetrics, align 16 ; <%struct.QFontMetrics*> [#uses=4] - %tmp = alloca %struct.QFont, align 16 ; <%struct.QFont*> [#uses=4] + %tmp.upgrd.2 = alloca %struct.QFontMetrics, align 16 ; <%struct.QFontMetrics*> [#uses=4] + %tmp.upgrd.3 = alloca %struct.QFont, align 16 ; <%struct.QFont*> [#uses=4] %tmp3 = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=2] %p = alloca %struct.QPainter, align 16 ; <%struct.QPainter*> [#uses=14] %body = alloca %struct.QRectF, align 16 ; <%struct.QRectF*> [#uses=9] @@ -63,590 +61,495 @@ entry: %printerPageSize = alloca %struct.QPointF, align 16 ; <%struct.QPointF*> [#uses=3] %fmt = alloca %struct.QTextBlockFormat, align 16 ; <%struct.QTextBlockFormat*> [#uses=5] %font = alloca %struct.QFont, align 16 ; <%struct.QFont*> [#uses=5] - %tmp = call %struct.QTextDocumentPrivate* %_ZNK13QTextDocument6d_funcEv( %struct.QAbstractTextDocumentLayout* %this ) ; <%struct.QTextDocumentPrivate*> [#uses=5] - %tmp = getelementptr %struct.QPrinter* %printer, int 0, uint 0 ; <%struct.QPaintDevice*> [#uses=1] - call void %_ZN8QPainterC1EP12QPaintDevice( %struct.QPainter* %p, %struct.QPaintDevice* %tmp ) - %tmp = invoke bool %_ZNK8QPainter8isActiveEv( %struct.QPainter* %p ) - to label %invcont unwind label %cleanup329 ; <bool> [#uses=1] - + %tmp.upgrd.4 = call %struct.QTextDocumentPrivate* @_ZNK13QTextDocument6d_funcEv( %struct.QAbstractTextDocumentLayout* %this ) ; <%struct.QTextDocumentPrivate*> [#uses=5] + %tmp.upgrd.5 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1] + call void @_ZN8QPainterC1EP12QPaintDevice( %struct.QPainter* %p, %struct.QPaintDevice* %tmp.upgrd.5 ) + %tmp.upgrd.6 = invoke i1 @_ZNK8QPainter8isActiveEv( %struct.QPainter* %p ) + to label %invcont unwind label %cleanup329 ; <i1> [#uses=1] invcont: ; preds = %entry - br bool %tmp, label %cond_next, label %cleanup328 - + br i1 %tmp.upgrd.6, label %cond_next, label %cleanup328 cond_next: ; preds = %invcont - %tmp8 = invoke %struct.QAbstractTextDocumentLayout* %_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %this ) + %tmp8 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %this ) to label %invcont7 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=0] - invcont7: ; preds = %cond_next - %tmp10 = getelementptr %struct.QTextDocumentPrivate* %tmp, int 0, uint 26 ; <%struct.QPointF*> [#uses=1] - call void %_ZN7QPointFC1Edd( %struct.QPointF* %tmp, double 0.000000e+00, double 0.000000e+00 ) - call void %_ZN6QRectFC1ERK7QPointFRK6QSizeF( %struct.QRectF* %body, %struct.QPointF* %tmp, %struct.QPointF* %tmp10 ) - call void %_ZN7QPointFC1Ev( %struct.QPointF* %pageNumberPos ) - %tmp12 = getelementptr %struct.QTextDocumentPrivate* %tmp, int 0, uint 26 ; <%struct.QPointF*> [#uses=1] - %tmp13 = call bool %_ZNK6QSizeF7isValidEv( %struct.QPointF* %tmp12 ) ; <bool> [#uses=1] - br bool %tmp13, label %cond_next15, label %bb - + %tmp10 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1] + call void @_ZN7QPointFC1Edd( %struct.QPointF* %tmp, double 0.000000e+00, double 0.000000e+00 ) + call void @_ZN6QRectFC1ERK7QPointFRK6QSizeF( %struct.QRectF* %body, %struct.QPointF* %tmp, %struct.QPointF* %tmp10 ) + call void @_ZN7QPointFC1Ev( %struct.QPointF* %pageNumberPos ) + %tmp12 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1] + %tmp13 = call i1 @_ZNK6QSizeF7isValidEv( %struct.QPointF* %tmp12 ) ; <i1> [#uses=1] + br i1 %tmp13, label %cond_next15, label %bb cond_next15: ; preds = %invcont7 - %tmp17 = getelementptr %struct.QTextDocumentPrivate* %tmp, int 0, uint 26 ; <%struct.QPointF*> [#uses=1] - %tmp = call double %_ZNK6QSizeF6heightEv( %struct.QPointF* %tmp17 ) ; <double> [#uses=1] - %tmp18 = seteq double %tmp, 0x41DFFFFFFFC00000 ; <bool> [#uses=1] - br bool %tmp18, label %bb, label %cond_next20 - + %tmp17 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26 ; <%struct.QPointF*> [#uses=1] + %tmp.upgrd.7 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %tmp17 ) ; <double> [#uses=1] + %tmp18 = fcmp oeq double %tmp.upgrd.7, 0x41DFFFFFFFC00000 ; <i1> [#uses=1] + br i1 %tmp18, label %bb, label %cond_next20 cond_next20: ; preds = %cond_next15 br label %bb21 - bb: ; preds = %cond_next15, %invcont7 br label %bb21 - bb21: ; preds = %bb, %cond_next20 - %iftmp.406.0 = phi bool [ false, %bb ], [ true, %cond_next20 ] ; <bool> [#uses=1] - br bool %iftmp.406.0, label %cond_true24, label %cond_false - + %iftmp.406.0 = phi i1 [ false, %bb ], [ true, %cond_next20 ] ; <i1> [#uses=1] + br i1 %iftmp.406.0, label %cond_true24, label %cond_false cond_true24: ; preds = %bb21 - %tmp = invoke int %_Z13qt_defaultDpiv( ) - to label %invcont25 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp.upgrd.8 = invoke i32 @_Z13qt_defaultDpiv( ) + to label %invcont25 unwind label %cleanup329 ; <i32> [#uses=1] invcont25: ; preds = %cond_true24 - %tmp26 = cast int %tmp to double ; <double> [#uses=2] - %tmp30 = invoke %struct.QAbstractTextDocumentLayout* %_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %this ) + %tmp26 = sitofp i32 %tmp.upgrd.8 to double ; <double> [#uses=2] + %tmp30 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %this ) to label %invcont29 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=1] - invcont29: ; preds = %invcont25 - %tmp32 = invoke %struct.QPaintDevice* %_ZNK27QAbstractTextDocumentLayout11paintDeviceEv( %struct.QAbstractTextDocumentLayout* %tmp30 ) + %tmp32 = invoke %struct.QPaintDevice* @_ZNK27QAbstractTextDocumentLayout11paintDeviceEv( %struct.QAbstractTextDocumentLayout* %tmp30 ) to label %invcont31 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=3] - invcont31: ; preds = %invcont29 - %tmp34 = seteq %struct.QPaintDevice* %tmp32, null ; <bool> [#uses=1] - br bool %tmp34, label %cond_next42, label %cond_true35 - + %tmp34 = icmp eq %struct.QPaintDevice* %tmp32, null ; <i1> [#uses=1] + br i1 %tmp34, label %cond_next42, label %cond_true35 cond_true35: ; preds = %invcont31 - %tmp38 = invoke int %_ZNK12QPaintDevice11logicalDpiXEv( %struct.QPaintDevice* %tmp32 ) - to label %invcont37 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp38 = invoke i32 @_ZNK12QPaintDevice11logicalDpiXEv( %struct.QPaintDevice* %tmp32 ) + to label %invcont37 unwind label %cleanup329 ; <i32> [#uses=1] invcont37: ; preds = %cond_true35 - %tmp38 = cast int %tmp38 to double ; <double> [#uses=1] - %tmp41 = invoke int %_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp32 ) - to label %invcont40 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp38.upgrd.9 = sitofp i32 %tmp38 to double ; <double> [#uses=1] + %tmp41 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp32 ) + to label %invcont40 unwind label %cleanup329 ; <i32> [#uses=1] invcont40: ; preds = %invcont37 - %tmp41 = cast int %tmp41 to double ; <double> [#uses=1] + %tmp41.upgrd.10 = sitofp i32 %tmp41 to double ; <double> [#uses=1] br label %cond_next42 - cond_next42: ; preds = %invcont40, %invcont31 - %sourceDpiY.2 = phi double [ %tmp41, %invcont40 ], [ %tmp26, %invcont31 ] ; <double> [#uses=1] - %sourceDpiX.2 = phi double [ %tmp38, %invcont40 ], [ %tmp26, %invcont31 ] ; <double> [#uses=1] - %tmp44 = getelementptr %struct.QPrinter* %printer, int 0, uint 0 ; <%struct.QPaintDevice*> [#uses=1] - %tmp46 = invoke int %_ZNK12QPaintDevice11logicalDpiXEv( %struct.QPaintDevice* %tmp44 ) - to label %invcont45 unwind label %cleanup329 ; <int> [#uses=1] - + %sourceDpiY.2 = phi double [ %tmp41.upgrd.10, %invcont40 ], [ %tmp26, %invcont31 ] ; <double> [#uses=1] + %sourceDpiX.2 = phi double [ %tmp38.upgrd.9, %invcont40 ], [ %tmp26, %invcont31 ] ; <double> [#uses=1] + %tmp44 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1] + %tmp46 = invoke i32 @_ZNK12QPaintDevice11logicalDpiXEv( %struct.QPaintDevice* %tmp44 ) + to label %invcont45 unwind label %cleanup329 ; <i32> [#uses=1] invcont45: ; preds = %cond_next42 - %tmp46 = cast int %tmp46 to double ; <double> [#uses=1] - %tmp48 = fdiv double %tmp46, %sourceDpiX.2 ; <double> [#uses=2] - %tmp50 = getelementptr %struct.QPrinter* %printer, int 0, uint 0 ; <%struct.QPaintDevice*> [#uses=1] - %tmp52 = invoke int %_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp50 ) - to label %invcont51 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp46.upgrd.11 = sitofp i32 %tmp46 to double ; <double> [#uses=1] + %tmp48 = fdiv double %tmp46.upgrd.11, %sourceDpiX.2 ; <double> [#uses=2] + %tmp50 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1] + %tmp52 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp50 ) + to label %invcont51 unwind label %cleanup329 ; <i32> [#uses=1] invcont51: ; preds = %invcont45 - %tmp52 = cast int %tmp52 to double ; <double> [#uses=1] - %tmp54 = fdiv double %tmp52, %sourceDpiY.2 ; <double> [#uses=2] - invoke void %_ZN8QPainter5scaleEdd( %struct.QPainter* %p, double %tmp48, double %tmp54 ) + %tmp52.upgrd.12 = sitofp i32 %tmp52 to double ; <double> [#uses=1] + %tmp54 = fdiv double %tmp52.upgrd.12, %sourceDpiY.2 ; <double> [#uses=2] + invoke void @_ZN8QPainter5scaleEdd( %struct.QPainter* %p, double %tmp48, double %tmp54 ) to label %invcont57 unwind label %cleanup329 - invcont57: ; preds = %invcont51 - %tmp = getelementptr %struct.QPointF* %scaledPageSize, int 0, uint 0 ; <double*> [#uses=1] - %tmp60 = getelementptr %struct.QTextDocumentPrivate* %tmp, int 0, uint 26, uint 0 ; <double*> [#uses=1] + %tmp.upgrd.13 = getelementptr %struct.QPointF* %scaledPageSize, i32 0, i32 0 ; <double*> [#uses=1] + %tmp60 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26, i32 0 ; <double*> [#uses=1] %tmp61 = load double* %tmp60 ; <double> [#uses=1] - store double %tmp61, double* %tmp - %tmp62 = getelementptr %struct.QPointF* %scaledPageSize, int 0, uint 1 ; <double*> [#uses=1] - %tmp63 = getelementptr %struct.QTextDocumentPrivate* %tmp, int 0, uint 26, uint 1 ; <double*> [#uses=1] + store double %tmp61, double* %tmp.upgrd.13 + %tmp62 = getelementptr %struct.QPointF* %scaledPageSize, i32 0, i32 1 ; <double*> [#uses=1] + %tmp63 = getelementptr %struct.QTextDocumentPrivate* %tmp.upgrd.4, i32 0, i32 26, i32 1 ; <double*> [#uses=1] %tmp64 = load double* %tmp63 ; <double> [#uses=1] store double %tmp64, double* %tmp62 - %tmp65 = call double* %_ZN6QSizeF6rwidthEv( %struct.QPointF* %scaledPageSize ) ; <double*> [#uses=2] + %tmp65 = call double* @_ZN6QSizeF6rwidthEv( %struct.QPointF* %scaledPageSize ) ; <double*> [#uses=2] %tmp67 = load double* %tmp65 ; <double> [#uses=1] %tmp69 = mul double %tmp67, %tmp48 ; <double> [#uses=1] store double %tmp69, double* %tmp65 - %tmp71 = call double* %_ZN6QSizeF7rheightEv( %struct.QPointF* %scaledPageSize ) ; <double*> [#uses=2] + %tmp71 = call double* @_ZN6QSizeF7rheightEv( %struct.QPointF* %scaledPageSize ) ; <double*> [#uses=2] %tmp73 = load double* %tmp71 ; <double> [#uses=1] %tmp75 = mul double %tmp73, %tmp54 ; <double> [#uses=1] store double %tmp75, double* %tmp71 - %tmp78 = getelementptr %struct.QPrinter* %printer, int 0, uint 0 ; <%struct.QPaintDevice*> [#uses=1] - %tmp80 = invoke int %_ZNK12QPaintDevice6heightEv( %struct.QPaintDevice* %tmp78 ) - to label %invcont79 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp78 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1] + %tmp80 = invoke i32 @_ZNK12QPaintDevice6heightEv( %struct.QPaintDevice* %tmp78 ) + to label %invcont79 unwind label %cleanup329 ; <i32> [#uses=1] invcont79: ; preds = %invcont57 - %tmp82 = getelementptr %struct.QPrinter* %printer, int 0, uint 0 ; <%struct.QPaintDevice*> [#uses=1] - %tmp84 = invoke int %_ZNK12QPaintDevice5widthEv( %struct.QPaintDevice* %tmp82 ) - to label %invcont83 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp82 = getelementptr %struct.QPrinter* %printer, i32 0, i32 0 ; <%struct.QPaintDevice*> [#uses=1] + %tmp84 = invoke i32 @_ZNK12QPaintDevice5widthEv( %struct.QPaintDevice* %tmp82 ) + to label %invcont83 unwind label %cleanup329 ; <i32> [#uses=1] invcont83: ; preds = %invcont79 - %tmp80 = cast int %tmp80 to double ; <double> [#uses=1] - %tmp84 = cast int %tmp84 to double ; <double> [#uses=1] - call void %_ZN6QSizeFC1Edd( %struct.QPointF* %printerPageSize, double %tmp84, double %tmp80 ) - %tmp85 = call double %_ZNK6QSizeF6heightEv( %struct.QPointF* %printerPageSize ) ; <double> [#uses=1] - %tmp86 = call double %_ZNK6QSizeF6heightEv( %struct.QPointF* %scaledPageSize ) ; <double> [#uses=1] + %tmp80.upgrd.14 = sitofp i32 %tmp80 to double ; <double> [#uses=1] + %tmp84.upgrd.15 = sitofp i32 %tmp84 to double ; <double> [#uses=1] + call void @_ZN6QSizeFC1Edd( %struct.QPointF* %printerPageSize, double %tmp84.upgrd.15, double %tmp80.upgrd.14 ) + %tmp85 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %printerPageSize ) ; <double> [#uses=1] + %tmp86 = call double @_ZNK6QSizeF6heightEv( %struct.QPointF* %scaledPageSize ) ; <double> [#uses=1] %tmp87 = fdiv double %tmp85, %tmp86 ; <double> [#uses=1] - %tmp88 = call double %_ZNK6QSizeF5widthEv( %struct.QPointF* %printerPageSize ) ; <double> [#uses=1] - %tmp89 = call double %_ZNK6QSizeF5widthEv( %struct.QPointF* %scaledPageSize ) ; <double> [#uses=1] + %tmp88 = call double @_ZNK6QSizeF5widthEv( %struct.QPointF* %printerPageSize ) ; <double> [#uses=1] + %tmp89 = call double @_ZNK6QSizeF5widthEv( %struct.QPointF* %scaledPageSize ) ; <double> [#uses=1] %tmp90 = fdiv double %tmp88, %tmp89 ; <double> [#uses=1] - invoke void %_ZN8QPainter5scaleEdd( %struct.QPainter* %p, double %tmp90, double %tmp87 ) + invoke void @_ZN8QPainter5scaleEdd( %struct.QPainter* %p, double %tmp90, double %tmp87 ) to label %cond_next194 unwind label %cleanup329 - cond_false: ; preds = %bb21 - %tmp = getelementptr %struct.QAbstractTextDocumentLayout* %this, int 0, uint 0 ; <%struct.QObject*> [#uses=1] - %tmp95 = invoke %struct.QAbstractTextDocumentLayout* %_ZNK13QTextDocument5cloneEP7QObject( %struct.QAbstractTextDocumentLayout* %this, %struct.QObject* %tmp ) + %tmp.upgrd.16 = getelementptr %struct.QAbstractTextDocumentLayout* %this, i32 0, i32 0 ; <%struct.QObject*> [#uses=1] + %tmp95 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument5cloneEP7QObject( %struct.QAbstractTextDocumentLayout* %this, %struct.QObject* %tmp.upgrd.16 ) to label %invcont94 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=9] - invcont94: ; preds = %cond_false - %tmp99 = invoke %struct.QAbstractTextDocumentLayout* %_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) + %tmp99 = invoke %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) to label %invcont98 unwind label %cleanup329 ; <%struct.QAbstractTextDocumentLayout*> [#uses=1] - invcont98: ; preds = %invcont94 - %tmp101 = invoke %struct.QPaintDevice* %_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) + %tmp101 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) to label %invcont100 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=1] - invcont100: ; preds = %invcont98 - invoke void %_ZN27QAbstractTextDocumentLayout14setPaintDeviceEP12QPaintDevice( %struct.QAbstractTextDocumentLayout* %tmp99, %struct.QPaintDevice* %tmp101 ) + invoke void @_ZN27QAbstractTextDocumentLayout14setPaintDeviceEP12QPaintDevice( %struct.QAbstractTextDocumentLayout* %tmp99, %struct.QPaintDevice* %tmp101 ) to label %invcont103 unwind label %cleanup329 - invcont103: ; preds = %invcont100 - %tmp105 = invoke %struct.QPaintDevice* %_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) + %tmp105 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) to label %invcont104 unwind label %cleanup329 ; <%struct.QPaintDevice*> [#uses=1] - invcont104: ; preds = %invcont103 - %tmp107 = invoke int %_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp105 ) - to label %invcont106 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp107 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp105 ) + to label %invcont106 unwind label %cleanup329 ; <i32> [#uses=1] invcont106: ; preds = %invcont104 - %tmp108 = cast int %tmp107 to double ; <double> [#uses=1] + %tmp108 = sitofp i32 %tmp107 to double ; <double> [#uses=1] %tmp109 = mul double %tmp108, 0x3FE93264C993264C ; <double> [#uses=1] - %tmp109 = cast double %tmp109 to int ; <int> [#uses=3] - %tmp = call %struct.QTextBlockGroup* %_ZNK13QTextDocument9rootFrameEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) ; <%struct.QTextBlockGroup*> [#uses=1] - invoke csretcc void %_ZNK10QTextFrame11frameFormatEv( %struct.QTextBlockFormat* %fmt, %struct.QTextBlockGroup* %tmp ) + %tmp109.upgrd.17 = fptosi double %tmp109 to i32 ; <i32> [#uses=3] + %tmp.upgrd.18 = call %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) ; <%struct.QTextBlockGroup*> [#uses=1] + invoke void @_ZNK10QTextFrame11frameFormatEv( %struct.QTextBlockFormat* sret %fmt, %struct.QTextBlockGroup* %tmp.upgrd.18 ) to label %invcont111 unwind label %cleanup329 - invcont111: ; preds = %invcont106 - %tmp112 = cast int %tmp109 to double ; <double> [#uses=1] - invoke void %_ZN16QTextFrameFormat9setMarginEd( %struct.QTextBlockFormat* %fmt, double %tmp112 ) + %tmp112 = sitofp i32 %tmp109.upgrd.17 to double ; <double> [#uses=1] + invoke void @_ZN16QTextFrameFormat9setMarginEd( %struct.QTextBlockFormat* %fmt, double %tmp112 ) to label %invcont114 unwind label %cleanup192 - invcont114: ; preds = %invcont111 - %tmp116 = call %struct.QTextBlockGroup* %_ZNK13QTextDocument9rootFrameEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) ; <%struct.QTextBlockGroup*> [#uses=1] - invoke void %_ZN10QTextFrame14setFrameFormatERK16QTextFrameFormat( %struct.QTextBlockGroup* %tmp116, %struct.QTextBlockFormat* %fmt ) + %tmp116 = call %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv( %struct.QAbstractTextDocumentLayout* %tmp95 ) ; <%struct.QTextBlockGroup*> [#uses=1] + invoke void @_ZN10QTextFrame14setFrameFormatERK16QTextFrameFormat( %struct.QTextBlockGroup* %tmp116, %struct.QTextBlockFormat* %fmt ) to label %invcont117 unwind label %cleanup192 - invcont117: ; preds = %invcont114 - %tmp119 = invoke %struct.QPaintDevice* %_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) + %tmp119 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) to label %invcont118 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1] - invcont118: ; preds = %invcont117 - %tmp121 = invoke int %_ZNK12QPaintDevice6heightEv( %struct.QPaintDevice* %tmp119 ) - to label %invcont120 unwind label %cleanup192 ; <int> [#uses=1] - + %tmp121 = invoke i32 @_ZNK12QPaintDevice6heightEv( %struct.QPaintDevice* %tmp119 ) + to label %invcont120 unwind label %cleanup192 ; <i32> [#uses=1] invcont120: ; preds = %invcont118 - %tmp121 = cast int %tmp121 to double ; <double> [#uses=1] - %tmp123 = invoke %struct.QPaintDevice* %_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) + %tmp121.upgrd.19 = sitofp i32 %tmp121 to double ; <double> [#uses=1] + %tmp123 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) to label %invcont122 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1] - invcont122: ; preds = %invcont120 - %tmp125 = invoke int %_ZNK12QPaintDevice5widthEv( %struct.QPaintDevice* %tmp123 ) - to label %invcont124 unwind label %cleanup192 ; <int> [#uses=1] - + %tmp125 = invoke i32 @_ZNK12QPaintDevice5widthEv( %struct.QPaintDevice* %tmp123 ) + to label %invcont124 unwind label %cleanup192 ; <i32> [#uses=1] invcont124: ; preds = %invcont122 - %tmp125 = cast int %tmp125 to double ; <double> [#uses=1] - call void %_ZN6QRectFC1Edddd( %struct.QRectF* %tmp, double 0.000000e+00, double 0.000000e+00, double %tmp125, double %tmp121 ) - %tmp126 = getelementptr %struct.QRectF* %body, int 0, uint 0 ; <double*> [#uses=1] - %tmp127 = getelementptr %struct.QRectF* %tmp, int 0, uint 0 ; <double*> [#uses=1] + %tmp125.upgrd.20 = sitofp i32 %tmp125 to double ; <double> [#uses=1] + call void @_ZN6QRectFC1Edddd( %struct.QRectF* %tmp.upgrd.1, double 0.000000e+00, double 0.000000e+00, double %tmp125.upgrd.20, double %tmp121.upgrd.19 ) + %tmp126 = getelementptr %struct.QRectF* %body, i32 0, i32 0 ; <double*> [#uses=1] + %tmp127 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 0 ; <double*> [#uses=1] %tmp128 = load double* %tmp127 ; <double> [#uses=1] store double %tmp128, double* %tmp126 - %tmp129 = getelementptr %struct.QRectF* %body, int 0, uint 1 ; <double*> [#uses=1] - %tmp130 = getelementptr %struct.QRectF* %tmp, int 0, uint 1 ; <double*> [#uses=1] + %tmp129 = getelementptr %struct.QRectF* %body, i32 0, i32 1 ; <double*> [#uses=1] + %tmp130 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 1 ; <double*> [#uses=1] %tmp131 = load double* %tmp130 ; <double> [#uses=1] store double %tmp131, double* %tmp129 - %tmp132 = getelementptr %struct.QRectF* %body, int 0, uint 2 ; <double*> [#uses=1] - %tmp133 = getelementptr %struct.QRectF* %tmp, int 0, uint 2 ; <double*> [#uses=1] + %tmp132 = getelementptr %struct.QRectF* %body, i32 0, i32 2 ; <double*> [#uses=1] + %tmp133 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 2 ; <double*> [#uses=1] %tmp134 = load double* %tmp133 ; <double> [#uses=1] store double %tmp134, double* %tmp132 - %tmp135 = getelementptr %struct.QRectF* %body, int 0, uint 3 ; <double*> [#uses=1] - %tmp136 = getelementptr %struct.QRectF* %tmp, int 0, uint 3 ; <double*> [#uses=1] + %tmp135 = getelementptr %struct.QRectF* %body, i32 0, i32 3 ; <double*> [#uses=1] + %tmp136 = getelementptr %struct.QRectF* %tmp.upgrd.1, i32 0, i32 3 ; <double*> [#uses=1] %tmp137 = load double* %tmp136 ; <double> [#uses=1] store double %tmp137, double* %tmp135 - %tmp138 = call double %_ZNK6QRectF6heightEv( %struct.QRectF* %body ) ; <double> [#uses=1] - %tmp139 = cast int %tmp109 to double ; <double> [#uses=1] + %tmp138 = call double @_ZNK6QRectF6heightEv( %struct.QRectF* %body ) ; <double> [#uses=1] + %tmp139 = sitofp i32 %tmp109.upgrd.17 to double ; <double> [#uses=1] %tmp140 = sub double %tmp138, %tmp139 ; <double> [#uses=1] - %tmp142 = invoke %struct.QPaintDevice* %_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) + %tmp142 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) to label %invcont141 unwind label %cleanup192 ; <%struct.QPaintDevice*> [#uses=1] - invcont141: ; preds = %invcont124 - invoke csretcc void %_ZNK13QTextDocument11defaultFontEv( %struct.QFont* %tmp, %struct.QAbstractTextDocumentLayout* %tmp95 ) + invoke void @_ZNK13QTextDocument11defaultFontEv( %struct.QFont* sret %tmp.upgrd.3, %struct.QAbstractTextDocumentLayout* %tmp95 ) to label %invcont144 unwind label %cleanup192 - invcont144: ; preds = %invcont141 - invoke void %_ZN12QFontMetricsC1ERK5QFontP12QPaintDevice( %struct.QFontMetrics* %tmp, %struct.QFont* %tmp, %struct.QPaintDevice* %tmp142 ) + invoke void @_ZN12QFontMetricsC1ERK5QFontP12QPaintDevice( %struct.QFontMetrics* %tmp.upgrd.2, %struct.QFont* %tmp.upgrd.3, %struct.QPaintDevice* %tmp142 ) to label %invcont146 unwind label %cleanup173 - invcont146: ; preds = %invcont144 - %tmp149 = invoke int %_ZNK12QFontMetrics6ascentEv( %struct.QFontMetrics* %tmp ) - to label %invcont148 unwind label %cleanup168 ; <int> [#uses=1] - + %tmp149 = invoke i32 @_ZNK12QFontMetrics6ascentEv( %struct.QFontMetrics* %tmp.upgrd.2 ) + to label %invcont148 unwind label %cleanup168 ; <i32> [#uses=1] invcont148: ; preds = %invcont146 - %tmp149 = cast int %tmp149 to double ; <double> [#uses=1] - %tmp150 = add double %tmp140, %tmp149 ; <double> [#uses=1] - %tmp152 = invoke %struct.QPaintDevice* %_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) + %tmp149.upgrd.21 = sitofp i32 %tmp149 to double ; <double> [#uses=1] + %tmp150 = add double %tmp140, %tmp149.upgrd.21 ; <double> [#uses=1] + %tmp152 = invoke %struct.QPaintDevice* @_ZNK8QPainter6deviceEv( %struct.QPainter* %p ) to label %invcont151 unwind label %cleanup168 ; <%struct.QPaintDevice*> [#uses=1] - invcont151: ; preds = %invcont148 - %tmp154 = invoke int %_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp152 ) - to label %invcont153 unwind label %cleanup168 ; <int> [#uses=1] - + %tmp154 = invoke i32 @_ZNK12QPaintDevice11logicalDpiYEv( %struct.QPaintDevice* %tmp152 ) + to label %invcont153 unwind label %cleanup168 ; <i32> [#uses=1] invcont153: ; preds = %invcont151 - %tmp155 = mul int %tmp154, 5 ; <int> [#uses=1] - %tmp156 = sdiv int %tmp155, 72 ; <int> [#uses=1] - %tmp156 = cast int %tmp156 to double ; <double> [#uses=1] - %tmp157 = add double %tmp150, %tmp156 ; <double> [#uses=1] - %tmp158 = call double %_ZNK6QRectF5widthEv( %struct.QRectF* %body ) ; <double> [#uses=1] - %tmp159 = cast int %tmp109 to double ; <double> [#uses=1] + %tmp155 = mul i32 %tmp154, 5 ; <i32> [#uses=1] + %tmp156 = sdiv i32 %tmp155, 72 ; <i32> [#uses=1] + %tmp156.upgrd.22 = sitofp i32 %tmp156 to double ; <double> [#uses=1] + %tmp157 = add double %tmp150, %tmp156.upgrd.22 ; <double> [#uses=1] + %tmp158 = call double @_ZNK6QRectF5widthEv( %struct.QRectF* %body ) ; <double> [#uses=1] + %tmp159 = sitofp i32 %tmp109.upgrd.17 to double ; <double> [#uses=1] %tmp160 = sub double %tmp158, %tmp159 ; <double> [#uses=1] - call void %_ZN7QPointFC1Edd( %struct.QPointF* %tmp2, double %tmp160, double %tmp157 ) - %tmp161 = getelementptr %struct.QPointF* %pageNumberPos, int 0, uint 0 ; <double*> [#uses=1] - %tmp162 = getelementptr %struct.QPointF* %tmp2, int 0, uint 0 ; <double*> [#uses=1] + call void @_ZN7QPointFC1Edd( %struct.QPointF* %tmp2, double %tmp160, double %tmp157 ) + %tmp161 = getelementptr %struct.QPointF* %pageNumberPos, i32 0, i32 0 ; <double*> [#uses=1] + %tmp162 = getelementptr %struct.QPointF* %tmp2, i32 0, i32 0 ; <double*> [#uses=1] %tmp163 = load double* %tmp162 ; <double> [#uses=1] store double %tmp163, double* %tmp161 - %tmp164 = getelementptr %struct.QPointF* %pageNumberPos, int 0, uint 1 ; <double*> [#uses=1] - %tmp165 = getelementptr %struct.QPointF* %tmp2, int 0, uint 1 ; <double*> [#uses=1] + %tmp164 = getelementptr %struct.QPointF* %pageNumberPos, i32 0, i32 1 ; <double*> [#uses=1] + %tmp165 = getelementptr %struct.QPointF* %tmp2, i32 0, i32 1 ; <double*> [#uses=1] %tmp166 = load double* %tmp165 ; <double> [#uses=1] store double %tmp166, double* %tmp164 - invoke void %_ZN12QFontMetricsD1Ev( %struct.QFontMetrics* %tmp ) + invoke void @_ZN12QFontMetricsD1Ev( %struct.QFontMetrics* %tmp.upgrd.2 ) to label %cleanup171 unwind label %cleanup173 - cleanup168: ; preds = %invcont151, %invcont148, %invcont146 - invoke void %_ZN12QFontMetricsD1Ev( %struct.QFontMetrics* %tmp ) + invoke void @_ZN12QFontMetricsD1Ev( %struct.QFontMetrics* %tmp.upgrd.2 ) to label %cleanup173 unwind label %cleanup173 - cleanup171: ; preds = %invcont153 - invoke void %_ZN5QFontD1Ev( %struct.QFont* %tmp ) + invoke void @_ZN5QFontD1Ev( %struct.QFont* %tmp.upgrd.3 ) to label %finally170 unwind label %cleanup192 - cleanup173: ; preds = %cleanup168, %cleanup168, %invcont153, %invcont144 - invoke void %_ZN5QFontD1Ev( %struct.QFont* %tmp ) + invoke void @_ZN5QFontD1Ev( %struct.QFont* %tmp.upgrd.3 ) to label %cleanup192 unwind label %cleanup192 - finally170: ; preds = %cleanup171 - invoke csretcc void %_ZNK13QTextDocument11defaultFontEv( %struct.QFont* %font, %struct.QAbstractTextDocumentLayout* %tmp95 ) + invoke void @_ZNK13QTextDocument11defaultFontEv( %struct.QFont* sret %font, %struct.QAbstractTextDocumentLayout* %tmp95 ) to label %invcont177 unwind label %cleanup192 - invcont177: ; preds = %finally170 - invoke void %_ZN5QFont12setPointSizeEi( %struct.QFont* %font, int 10 ) + invoke void @_ZN5QFont12setPointSizeEi( %struct.QFont* %font, i32 10 ) to label %invcont179 unwind label %cleanup187 - invcont179: ; preds = %invcont177 - invoke void %_ZN13QTextDocument14setDefaultFontERK5QFont( %struct.QAbstractTextDocumentLayout* %tmp95, %struct.QFont* %font ) + invoke void @_ZN13QTextDocument14setDefaultFontERK5QFont( %struct.QAbstractTextDocumentLayout* %tmp95, %struct.QFont* %font ) to label %invcont181 unwind label %cleanup187 - invcont181: ; preds = %invcont179 - call csretcc void %_ZNK6QRectF4sizeEv( %struct.QPointF* %tmp3, %struct.QRectF* %body ) - invoke void %_ZN13QTextDocument11setPageSizeERK6QSizeF( %struct.QAbstractTextDocumentLayout* %tmp95, %struct.QPointF* %tmp3 ) + call void @_ZNK6QRectF4sizeEv( %struct.QPointF* sret %tmp3, %struct.QRectF* %body ) + invoke void @_ZN13QTextDocument11setPageSizeERK6QSizeF( %struct.QAbstractTextDocumentLayout* %tmp95, %struct.QPointF* %tmp3 ) to label %cleanup185 unwind label %cleanup187 - cleanup185: ; preds = %invcont181 - invoke void %_ZN5QFontD1Ev( %struct.QFont* %font ) + invoke void @_ZN5QFontD1Ev( %struct.QFont* %font ) to label %cleanup190 unwind label %cleanup192 - cleanup187: ; preds = %invcont181, %invcont179, %invcont177 - invoke void %_ZN5QFontD1Ev( %struct.QFont* %font ) + invoke void @_ZN5QFontD1Ev( %struct.QFont* %font ) to label %cleanup192 unwind label %cleanup192 - cleanup190: ; preds = %cleanup185 - invoke void %_ZN16QTextFrameFormatD1Ev( %struct.QTextBlockFormat* %fmt ) + invoke void @_ZN16QTextFrameFormatD1Ev( %struct.QTextBlockFormat* %fmt ) to label %cond_next194 unwind label %cleanup329 - cleanup192: ; preds = %cleanup187, %cleanup187, %cleanup185, %finally170, %cleanup173, %cleanup173, %cleanup171, %invcont141, %invcont124, %invcont122, %invcont120, %invcont118, %invcont117, %invcont114, %invcont111 - invoke void %_ZN16QTextFrameFormatD1Ev( %struct.QTextBlockFormat* %fmt ) + invoke void @_ZN16QTextFrameFormatD1Ev( %struct.QTextBlockFormat* %fmt ) to label %cleanup329 unwind label %cleanup329 - cond_next194: ; preds = %cleanup190, %invcont83 %clonedDoc.1 = phi %struct.QAbstractTextDocumentLayout* [ null, %invcont83 ], [ %tmp95, %cleanup190 ] ; <%struct.QAbstractTextDocumentLayout*> [#uses=3] %doc.1 = phi %struct.QAbstractTextDocumentLayout* [ %this, %invcont83 ], [ %tmp95, %cleanup190 ] ; <%struct.QAbstractTextDocumentLayout*> [#uses=2] - %tmp197 = invoke bool %_ZNK8QPrinter13collateCopiesEv( %struct.QPrinter* %printer ) - to label %invcont196 unwind label %cleanup329 ; <bool> [#uses=1] - + %tmp197 = invoke i1 @_ZNK8QPrinter13collateCopiesEv( %struct.QPrinter* %printer ) + to label %invcont196 unwind label %cleanup329 ; <i1> [#uses=1] invcont196: ; preds = %cond_next194 - br bool %tmp197, label %cond_true200, label %cond_false204 - + br i1 %tmp197, label %cond_true200, label %cond_false204 cond_true200: ; preds = %invcont196 - %tmp203 = invoke int %_ZNK8QPrinter9numCopiesEv( %struct.QPrinter* %printer ) - to label %invcont202 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp203 = invoke i32 @_ZNK8QPrinter9numCopiesEv( %struct.QPrinter* %printer ) + to label %invcont202 unwind label %cleanup329 ; <i32> [#uses=1] invcont202: ; preds = %cond_true200 br label %cond_next208 - cond_false204: ; preds = %invcont196 - %tmp207 = invoke int %_ZNK8QPrinter9numCopiesEv( %struct.QPrinter* %printer ) - to label %invcont206 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp207 = invoke i32 @_ZNK8QPrinter9numCopiesEv( %struct.QPrinter* %printer ) + to label %invcont206 unwind label %cleanup329 ; <i32> [#uses=1] invcont206: ; preds = %cond_false204 br label %cond_next208 - cond_next208: ; preds = %invcont206, %invcont202 - %pageCopies.0 = phi int [ %tmp203, %invcont202 ], [ 1, %invcont206 ] ; <int> [#uses=2] - %docCopies.0 = phi int [ 1, %invcont202 ], [ %tmp207, %invcont206 ] ; <int> [#uses=2] - %tmp211 = invoke int %_ZNK8QPrinter8fromPageEv( %struct.QPrinter* %printer ) - to label %invcont210 unwind label %cleanup329 ; <int> [#uses=3] - + %pageCopies.0 = phi i32 [ %tmp203, %invcont202 ], [ 1, %invcont206 ] ; <i32> [#uses=2] + %docCopies.0 = phi i32 [ 1, %invcont202 ], [ %tmp207, %invcont206 ] ; <i32> [#uses=2] + %tmp211 = invoke i32 @_ZNK8QPrinter8fromPageEv( %struct.QPrinter* %printer ) + to label %invcont210 unwind label %cleanup329 ; <i32> [#uses=3] invcont210: ; preds = %cond_next208 - %tmp214 = invoke int %_ZNK8QPrinter6toPageEv( %struct.QPrinter* %printer ) - to label %invcont213 unwind label %cleanup329 ; <int> [#uses=3] - + %tmp214 = invoke i32 @_ZNK8QPrinter6toPageEv( %struct.QPrinter* %printer ) + to label %invcont213 unwind label %cleanup329 ; <i32> [#uses=3] invcont213: ; preds = %invcont210 - %tmp216 = seteq int %tmp211, 0 ; <bool> [#uses=1] - br bool %tmp216, label %cond_true217, label %cond_next225 - + %tmp216 = icmp eq i32 %tmp211, 0 ; <i1> [#uses=1] + br i1 %tmp216, label %cond_true217, label %cond_next225 cond_true217: ; preds = %invcont213 - %tmp219 = seteq int %tmp214, 0 ; <bool> [#uses=1] - br bool %tmp219, label %cond_true220, label %cond_next225 - + %tmp219 = icmp eq i32 %tmp214, 0 ; <i1> [#uses=1] + br i1 %tmp219, label %cond_true220, label %cond_next225 cond_true220: ; preds = %cond_true217 - %tmp223 = invoke int %_ZNK13QTextDocument9pageCountEv( %struct.QAbstractTextDocumentLayout* %doc.1 ) - to label %invcont222 unwind label %cleanup329 ; <int> [#uses=1] - + %tmp223 = invoke i32 @_ZNK13QTextDocument9pageCountEv( %struct.QAbstractTextDocumentLayout* %doc.1 ) + to label %invcont222 unwind label %cleanup329 ; <i32> [#uses=1] invcont222: ; preds = %cond_true220 br label %cond_next225 - cond_next225: ; preds = %invcont222, %cond_true217, %invcont213 - %toPage.1 = phi int [ %tmp223, %invcont222 ], [ %tmp214, %cond_true217 ], [ %tmp214, %invcont213 ] ; <int> [#uses=2] - %fromPage.1 = phi int [ 1, %invcont222 ], [ %tmp211, %cond_true217 ], [ %tmp211, %invcont213 ] ; <int> [#uses=2] - %tmp.page = invoke uint %_ZNK8QPrinter9pageOrderEv( %struct.QPrinter* %printer ) - to label %invcont227 unwind label %cleanup329 ; <uint> [#uses=1] - + %toPage.1 = phi i32 [ %tmp223, %invcont222 ], [ %tmp214, %cond_true217 ], [ %tmp214, %invcont213 ] ; <i32> [#uses=2] + %fromPage.1 = phi i32 [ 1, %invcont222 ], [ %tmp211, %cond_true217 ], [ %tmp211, %invcont213 ] ; <i32> [#uses=2] + %tmp.page = invoke i32 @_ZNK8QPrinter9pageOrderEv( %struct.QPrinter* %printer ) + to label %invcont227 unwind label %cleanup329 ; <i32> [#uses=1] invcont227: ; preds = %cond_next225 - %tmp228 = seteq uint %tmp.page, 1 ; <bool> [#uses=1] - br bool %tmp228, label %cond_true230, label %cond_next234 - + %tmp228 = icmp eq i32 %tmp.page, 1 ; <i1> [#uses=1] + br i1 %tmp228, label %cond_true230, label %cond_next234 cond_true230: ; preds = %invcont227 br label %cond_next234 - cond_next234: ; preds = %cond_true230, %invcont227 - %ascending.1 = phi bool [ false, %cond_true230 ], [ true, %invcont227 ] ; <bool> [#uses=1] - %toPage.2 = phi int [ %fromPage.1, %cond_true230 ], [ %toPage.1, %invcont227 ] ; <int> [#uses=1] - %fromPage.2 = phi int [ %toPage.1, %cond_true230 ], [ %fromPage.1, %invcont227 ] ; <int> [#uses=1] + %ascending.1 = phi i1 [ false, %cond_true230 ], [ true, %invcont227 ] ; <i1> [#uses=1] + %toPage.2 = phi i32 [ %fromPage.1, %cond_true230 ], [ %toPage.1, %invcont227 ] ; <i32> [#uses=1] + %fromPage.2 = phi i32 [ %toPage.1, %cond_true230 ], [ %fromPage.1, %invcont227 ] ; <i32> [#uses=1] br label %bb309 - bb237: ; preds = %cond_true313, %cond_next293 - %iftmp.410.4 = phi bool [ %iftmp.410.5, %cond_true313 ], [ %iftmp.410.1, %cond_next293 ] ; <bool> [#uses=1] - %page.4 = phi int [ %fromPage.2, %cond_true313 ], [ %page.3, %cond_next293 ] ; <int> [#uses=4] + %iftmp.410.4 = phi i1 [ %iftmp.410.5, %cond_true313 ], [ %iftmp.410.1, %cond_next293 ] ; <i1> [#uses=1] + %page.4 = phi i32 [ %fromPage.2, %cond_true313 ], [ %page.3, %cond_next293 ] ; <i32> [#uses=4] br label %bb273 - invcont240: ; preds = %cond_true277 - %tmp242 = seteq uint %tmp241, 2 ; <bool> [#uses=1] - br bool %tmp242, label %bb252, label %cond_next244 - + %tmp242 = icmp eq i32 %tmp241, 2 ; <i1> [#uses=1] + br i1 %tmp242, label %bb252, label %cond_next244 cond_next244: ; preds = %invcont240 - %tmp247 = invoke uint %_ZNK8QPrinter12printerStateEv( %struct.QPrinter* %printer ) - to label %invcont246 unwind label %cleanup329 ; <uint> [#uses=1] - + %tmp247 = invoke i32 @_ZNK8QPrinter12printerStateEv( %struct.QPrinter* %printer ) + to label %invcont246 unwind label %cleanup329 ; <i32> [#uses=1] invcont246: ; preds = %cond_next244 - %tmp248 = seteq uint %tmp247, 3 ; <bool> [#uses=1] - br bool %tmp248, label %bb252, label %bb253 - + %tmp248 = icmp eq i32 %tmp247, 3 ; <i1> [#uses=1] + br i1 %tmp248, label %bb252, label %bb253 bb252: ; preds = %invcont246, %invcont240 br label %bb254 - bb253: ; preds = %invcont246 br label %bb254 - bb254: ; preds = %bb253, %bb252 - %iftmp.410.0 = phi bool [ true, %bb252 ], [ false, %bb253 ] ; <bool> [#uses=2] - br bool %iftmp.410.0, label %UserCanceled, label %cond_next258 - + %iftmp.410.0 = phi i1 [ true, %bb252 ], [ false, %bb253 ] ; <i1> [#uses=2] + br i1 %iftmp.410.0, label %UserCanceled, label %cond_next258 cond_next258: ; preds = %bb254 - invoke fastcc void %_Z9printPageiP8QPainterPK13QTextDocumentRK6QRectFRK7QPointF( int %page.4, %struct.QPainter* %p, %struct.QAbstractTextDocumentLayout* %doc.1, %struct.QRectF* %body, %struct.QPointF* %pageNumberPos ) + invoke fastcc void @_Z9printPageiP8QPainterPK13QTextDocumentRK6QRectFRK7QPointF( i32 %page.4, %struct.QPainter* %p, %struct.QAbstractTextDocumentLayout* %doc.1, %struct.QRectF* %body, %struct.QPointF* %pageNumberPos ) to label %invcont261 unwind label %cleanup329 - invcont261: ; preds = %cond_next258 - %tmp263 = add int %pageCopies.0, -1 ; <int> [#uses=1] - %tmp265 = setgt int %tmp263, %j.4 ; <bool> [#uses=1] - br bool %tmp265, label %cond_true266, label %cond_next270 - + %tmp263 = add i32 %pageCopies.0, -1 ; <i32> [#uses=1] + %tmp265 = icmp sgt i32 %tmp263, %j.4 ; <i1> [#uses=1] + br i1 %tmp265, label %cond_true266, label %cond_next270 cond_true266: ; preds = %invcont261 - %tmp269 = invoke bool %_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer ) - to label %cond_next270 unwind label %cleanup329 ; <bool> [#uses=0] - + %tmp269 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer ) + to label %cond_next270 unwind label %cleanup329 ; <i1> [#uses=0] cond_next270: ; preds = %cond_true266, %invcont261 - %tmp272 = add int %j.4, 1 ; <int> [#uses=1] + %tmp272 = add i32 %j.4, 1 ; <i32> [#uses=1] br label %bb273 - bb273: ; preds = %cond_next270, %bb237 - %iftmp.410.1 = phi bool [ %iftmp.410.4, %bb237 ], [ %iftmp.410.0, %cond_next270 ] ; <bool> [#uses=2] - %j.4 = phi int [ 0, %bb237 ], [ %tmp272, %cond_next270 ] ; <int> [#uses=3] - %tmp276 = setlt int %j.4, %pageCopies.0 ; <bool> [#uses=1] - br bool %tmp276, label %cond_true277, label %bb280 - + %iftmp.410.1 = phi i1 [ %iftmp.410.4, %bb237 ], [ %iftmp.410.0, %cond_next270 ] ; <i1> [#uses=2] + %j.4 = phi i32 [ 0, %bb237 ], [ %tmp272, %cond_next270 ] ; <i32> [#uses=3] + %tmp276 = icmp slt i32 %j.4, %pageCopies.0 ; <i1> [#uses=1] + br i1 %tmp276, label %cond_true277, label %bb280 cond_true277: ; preds = %bb273 - %tmp241 = invoke uint %_ZNK8QPrinter12printerStateEv( %struct.QPrinter* %printer ) - to label %invcont240 unwind label %cleanup329 ; <uint> [#uses=1] - + %tmp241 = invoke i32 @_ZNK8QPrinter12printerStateEv( %struct.QPrinter* %printer ) + to label %invcont240 unwind label %cleanup329 ; <i32> [#uses=1] bb280: ; preds = %bb273 - %tmp283 = seteq int %page.4, %toPage.2 ; <bool> [#uses=1] - br bool %tmp283, label %bb297, label %cond_next285 - + %tmp283 = icmp eq i32 %page.4, %toPage.2 ; <i1> [#uses=1] + br i1 %tmp283, label %bb297, label %cond_next285 cond_next285: ; preds = %bb280 - br bool %ascending.1, label %cond_true287, label %cond_false290 - + br i1 %ascending.1, label %cond_true287, label %cond_false290 cond_true287: ; preds = %cond_next285 - %tmp289 = add int %page.4, 1 ; <int> [#uses=1] + %tmp289 = add i32 %page.4, 1 ; <i32> [#uses=1] br label %cond_next293 - cond_false290: ; preds = %cond_next285 - %tmp292 = add int %page.4, -1 ; <int> [#uses=1] + %tmp292 = add i32 %page.4, -1 ; <i32> [#uses=1] br label %cond_next293 - cond_next293: ; preds = %cond_false290, %cond_true287 - %page.3 = phi int [ %tmp289, %cond_true287 ], [ %tmp292, %cond_false290 ] ; <int> [#uses=1] - %tmp296 = invoke bool %_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer ) - to label %bb237 unwind label %cleanup329 ; <bool> [#uses=0] - + %page.3 = phi i32 [ %tmp289, %cond_true287 ], [ %tmp292, %cond_false290 ] ; <i32> [#uses=1] + %tmp296 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer ) + to label %bb237 unwind label %cleanup329 ; <i1> [#uses=0] bb297: ; preds = %bb280 - %tmp299 = add int %docCopies.0, -1 ; <int> [#uses=1] - %tmp301 = setgt int %tmp299, %i.1 ; <bool> [#uses=1] - br bool %tmp301, label %cond_true302, label %cond_next306 - + %tmp299 = add i32 %docCopies.0, -1 ; <i32> [#uses=1] + %tmp301 = icmp sgt i32 %tmp299, %i.1 ; <i1> [#uses=1] + br i1 %tmp301, label %cond_true302, label %cond_next306 cond_true302: ; preds = %bb297 - %tmp305 = invoke bool %_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer ) - to label %cond_next306 unwind label %cleanup329 ; <bool> [#uses=0] - + %tmp305 = invoke i1 @_ZN8QPrinter7newPageEv( %struct.QPrinter* %printer ) + to label %cond_next306 unwind label %cleanup329 ; <i1> [#uses=0] cond_next306: ; preds = %cond_true302, %bb297 - %tmp308 = add int %i.1, 1 ; <int> [#uses=1] + %tmp308 = add i32 %i.1, 1 ; <i32> [#uses=1] br label %bb309 - bb309: ; preds = %cond_next306, %cond_next234 - %iftmp.410.5 = phi bool [ undef, %cond_next234 ], [ %iftmp.410.1, %cond_next306 ] ; <bool> [#uses=1] - %i.1 = phi int [ 0, %cond_next234 ], [ %tmp308, %cond_next306 ] ; <int> [#uses=3] - %tmp312 = setlt int %i.1, %docCopies.0 ; <bool> [#uses=1] - br bool %tmp312, label %cond_true313, label %UserCanceled - + %iftmp.410.5 = phi i1 [ undef, %cond_next234 ], [ %iftmp.410.1, %cond_next306 ] ; <i1> [#uses=1] + %i.1 = phi i32 [ 0, %cond_next234 ], [ %tmp308, %cond_next306 ] ; <i32> [#uses=3] + %tmp312 = icmp slt i32 %i.1, %docCopies.0 ; <i1> [#uses=1] + br i1 %tmp312, label %cond_true313, label %UserCanceled cond_true313: ; preds = %bb309 br label %bb237 - UserCanceled: ; preds = %bb309, %bb254 - %tmp318 = seteq %struct.QAbstractTextDocumentLayout* %clonedDoc.1, null ; <bool> [#uses=1] - br bool %tmp318, label %cleanup327, label %cond_true319 - + %tmp318 = icmp eq %struct.QAbstractTextDocumentLayout* %clonedDoc.1, null ; <i1> [#uses=1] + br i1 %tmp318, label %cleanup327, label %cond_true319 cond_true319: ; preds = %UserCanceled - %tmp = getelementptr %struct.QAbstractTextDocumentLayout* %clonedDoc.1, int 0, uint 0, uint 0 ; <int (...)***> [#uses=1] - %tmp = load int (...)*** %tmp ; <int (...)**> [#uses=1] - %tmp322 = getelementptr int (...)** %tmp, int 4 ; <int (...)**> [#uses=1] - %tmp = load int (...)** %tmp322 ; <int (...)*> [#uses=1] - %tmp = cast int (...)* %tmp to void (%struct.QAbstractTextDocumentLayout*)* ; <void (%struct.QAbstractTextDocumentLayout*)*> [#uses=1] - invoke void %tmp( %struct.QAbstractTextDocumentLayout* %clonedDoc.1 ) + %tmp.upgrd.23 = getelementptr %struct.QAbstractTextDocumentLayout* %clonedDoc.1, i32 0, i32 0, i32 0 ; <i32 (...)***> [#uses=1] + %tmp.upgrd.24 = load i32 (...)*** %tmp.upgrd.23 ; <i32 (...)**> [#uses=1] + %tmp322 = getelementptr i32 (...)** %tmp.upgrd.24, i32 4 ; <i32 (...)**> [#uses=1] + %tmp.upgrd.25 = load i32 (...)** %tmp322 ; <i32 (...)*> [#uses=1] + %tmp.upgrd.26 = bitcast i32 (...)* %tmp.upgrd.25 to void (%struct.QAbstractTextDocumentLayout*)* ; <void (%struct.QAbstractTextDocumentLayout*)*> [#uses=1] + invoke void %tmp.upgrd.26( %struct.QAbstractTextDocumentLayout* %clonedDoc.1 ) to label %cleanup327 unwind label %cleanup329 - cleanup327: ; preds = %cond_true319, %UserCanceled - call void %_ZN8QPainterD1Ev( %struct.QPainter* %p ) + call void @_ZN8QPainterD1Ev( %struct.QPainter* %p ) ret void - cleanup328: ; preds = %invcont - call void %_ZN8QPainterD1Ev( %struct.QPainter* %p ) + call void @_ZN8QPainterD1Ev( %struct.QPainter* %p ) ret void - cleanup329: ; preds = %cond_true319, %cond_true302, %cond_next293, %cond_true277, %cond_true266, %cond_next258, %cond_next244, %cond_next225, %cond_true220, %invcont210, %cond_next208, %cond_false204, %cond_true200, %cond_next194, %cleanup192, %cleanup192, %cleanup190, %invcont106, %invcont104, %invcont103, %invcont100, %invcont98, %invcont94, %cond_false, %invcont83, %invcont79, %invcont57, %invcont51, %invcont45, %cond_next42, %invcont37, %cond_true35, %invcont29, %invcont25, %cond_true24, %cond_next, %entry - call void %_ZN8QPainterD1Ev( %struct.QPainter* %p ) + call void @_ZN8QPainterD1Ev( %struct.QPainter* %p ) unwind } -declare void %_ZN6QSizeFC1Edd(%struct.QPointF*, double, double) +declare void @_ZN6QSizeFC1Edd(%struct.QPointF*, double, double) -declare bool %_ZNK6QSizeF7isValidEv(%struct.QPointF*) +declare i1 @_ZNK6QSizeF7isValidEv(%struct.QPointF*) -declare double %_ZNK6QSizeF5widthEv(%struct.QPointF*) +declare double @_ZNK6QSizeF5widthEv(%struct.QPointF*) -declare double %_ZNK6QSizeF6heightEv(%struct.QPointF*) +declare double @_ZNK6QSizeF6heightEv(%struct.QPointF*) -declare double* %_ZN6QSizeF6rwidthEv(%struct.QPointF*) +declare double* @_ZN6QSizeF6rwidthEv(%struct.QPointF*) -declare double* %_ZN6QSizeF7rheightEv(%struct.QPointF*) +declare double* @_ZN6QSizeF7rheightEv(%struct.QPointF*) -declare %struct.QTextDocumentPrivate* %_ZNK13QTextDocument6d_funcEv(%struct.QAbstractTextDocumentLayout*) +declare %struct.QTextDocumentPrivate* @_ZNK13QTextDocument6d_funcEv(%struct.QAbstractTextDocumentLayout*) -declare void %_ZN7QPointFC1Ev(%struct.QPointF*) +declare void @_ZN7QPointFC1Ev(%struct.QPointF*) -declare void %_ZN7QPointFC1Edd(%struct.QPointF*, double, double) +declare void @_ZN7QPointFC1Edd(%struct.QPointF*, double, double) -declare void %_ZN16QTextFrameFormat9setMarginEd(%struct.QTextBlockFormat*, double) +declare void @_ZN16QTextFrameFormat9setMarginEd(%struct.QTextBlockFormat*, double) -declare void %_ZN6QRectFC1Edddd(%struct.QRectF*, double, double, double, double) +declare void @_ZN6QRectFC1Edddd(%struct.QRectF*, double, double, double, double) -declare void %_ZN6QRectFC1ERK7QPointFRK6QSizeF(%struct.QRectF*, %struct.QPointF*, %struct.QPointF*) +declare void @_ZN6QRectFC1ERK7QPointFRK6QSizeF(%struct.QRectF*, %struct.QPointF*, %struct.QPointF*) -declare double %_ZNK6QRectF5widthEv(%struct.QRectF*) +declare double @_ZNK6QRectF5widthEv(%struct.QRectF*) -declare double %_ZNK6QRectF6heightEv(%struct.QRectF*) +declare double @_ZNK6QRectF6heightEv(%struct.QRectF*) -declare void %_ZNK6QRectF4sizeEv(%struct.QPointF*, %struct.QRectF*) +declare void @_ZNK6QRectF4sizeEv(%struct.QPointF*, %struct.QRectF*) -declare void %_ZN16QTextFrameFormatD1Ev(%struct.QTextBlockFormat*) +declare void @_ZN16QTextFrameFormatD1Ev(%struct.QTextBlockFormat*) -declare void %_ZNK10QTextFrame11frameFormatEv(%struct.QTextBlockFormat*, %struct.QTextBlockGroup*) +declare void @_ZNK10QTextFrame11frameFormatEv(%struct.QTextBlockFormat*, %struct.QTextBlockGroup*) -declare void %_ZN10QTextFrame14setFrameFormatERK16QTextFrameFormat(%struct.QTextBlockGroup*, %struct.QTextBlockFormat*) +declare void @_ZN10QTextFrame14setFrameFormatERK16QTextFrameFormat(%struct.QTextBlockGroup*, %struct.QTextBlockFormat*) -declare int %_ZNK12QPaintDevice5widthEv(%struct.QPaintDevice*) +declare i32 @_ZNK12QPaintDevice5widthEv(%struct.QPaintDevice*) -declare int %_ZNK12QPaintDevice6heightEv(%struct.QPaintDevice*) +declare i32 @_ZNK12QPaintDevice6heightEv(%struct.QPaintDevice*) -declare int %_ZNK12QPaintDevice11logicalDpiXEv(%struct.QPaintDevice*) +declare i32 @_ZNK12QPaintDevice11logicalDpiXEv(%struct.QPaintDevice*) -declare int %_ZNK12QPaintDevice11logicalDpiYEv(%struct.QPaintDevice*) +declare i32 @_ZNK12QPaintDevice11logicalDpiYEv(%struct.QPaintDevice*) -declare %struct.QAbstractTextDocumentLayout* %_ZNK13QTextDocument5cloneEP7QObject(%struct.QAbstractTextDocumentLayout*, %struct.QObject*) +declare %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument5cloneEP7QObject(%struct.QAbstractTextDocumentLayout*, %struct.QObject*) -declare void %_ZN5QFontD1Ev(%struct.QFont*) +declare void @_ZN5QFontD1Ev(%struct.QFont*) -declare %struct.QAbstractTextDocumentLayout* %_ZNK13QTextDocument14documentLayoutEv(%struct.QAbstractTextDocumentLayout*) +declare %struct.QAbstractTextDocumentLayout* @_ZNK13QTextDocument14documentLayoutEv(%struct.QAbstractTextDocumentLayout*) -declare %struct.QTextBlockGroup* %_ZNK13QTextDocument9rootFrameEv(%struct.QAbstractTextDocumentLayout*) +declare %struct.QTextBlockGroup* @_ZNK13QTextDocument9rootFrameEv(%struct.QAbstractTextDocumentLayout*) -declare int %_ZNK13QTextDocument9pageCountEv(%struct.QAbstractTextDocumentLayout*) +declare i32 @_ZNK13QTextDocument9pageCountEv(%struct.QAbstractTextDocumentLayout*) -declare void %_ZNK13QTextDocument11defaultFontEv(%struct.QFont*, %struct.QAbstractTextDocumentLayout*) +declare void @_ZNK13QTextDocument11defaultFontEv(%struct.QFont*, %struct.QAbstractTextDocumentLayout*) -declare void %_ZN13QTextDocument14setDefaultFontERK5QFont(%struct.QAbstractTextDocumentLayout*, %struct.QFont*) +declare void @_ZN13QTextDocument14setDefaultFontERK5QFont(%struct.QAbstractTextDocumentLayout*, %struct.QFont*) -declare void %_ZN13QTextDocument11setPageSizeERK6QSizeF(%struct.QAbstractTextDocumentLayout*, %struct.QPointF*) +declare void @_ZN13QTextDocument11setPageSizeERK6QSizeF(%struct.QAbstractTextDocumentLayout*, %struct.QPointF*) -declare void %_Z9printPageiP8QPainterPK13QTextDocumentRK6QRectFRK7QPointF(int, %struct.QPainter*, %struct.QAbstractTextDocumentLayout*, %struct.QRectF*, %struct.QPointF*) +declare void @_Z9printPageiP8QPainterPK13QTextDocumentRK6QRectFRK7QPointF(i32, %struct.QPainter*, %struct.QAbstractTextDocumentLayout*, %struct.QRectF*, %struct.QPointF*) -declare void %_ZN12QFontMetricsD1Ev(%struct.QFontMetrics*) +declare void @_ZN12QFontMetricsD1Ev(%struct.QFontMetrics*) -declare void %_ZN8QPainterC1EP12QPaintDevice(%struct.QPainter*, %struct.QPaintDevice*) +declare void @_ZN8QPainterC1EP12QPaintDevice(%struct.QPainter*, %struct.QPaintDevice*) -declare bool %_ZNK8QPainter8isActiveEv(%struct.QPainter*) +declare i1 @_ZNK8QPainter8isActiveEv(%struct.QPainter*) -declare int %_Z13qt_defaultDpiv() +declare i32 @_Z13qt_defaultDpiv() -declare %struct.QPaintDevice* %_ZNK27QAbstractTextDocumentLayout11paintDeviceEv(%struct.QAbstractTextDocumentLayout*) +declare %struct.QPaintDevice* @_ZNK27QAbstractTextDocumentLayout11paintDeviceEv(%struct.QAbstractTextDocumentLayout*) -declare void %_ZN8QPainter5scaleEdd(%struct.QPainter*, double, double) +declare void @_ZN8QPainter5scaleEdd(%struct.QPainter*, double, double) -declare %struct.QPaintDevice* %_ZNK8QPainter6deviceEv(%struct.QPainter*) +declare %struct.QPaintDevice* @_ZNK8QPainter6deviceEv(%struct.QPainter*) -declare void %_ZN27QAbstractTextDocumentLayout14setPaintDeviceEP12QPaintDevice(%struct.QAbstractTextDocumentLayout*, %struct.QPaintDevice*) +declare void @_ZN27QAbstractTextDocumentLayout14setPaintDeviceEP12QPaintDevice(%struct.QAbstractTextDocumentLayout*, %struct.QPaintDevice*) -declare void %_ZN12QFontMetricsC1ERK5QFontP12QPaintDevice(%struct.QFontMetrics*, %struct.QFont*, %struct.QPaintDevice*) +declare void @_ZN12QFontMetricsC1ERK5QFontP12QPaintDevice(%struct.QFontMetrics*, %struct.QFont*, %struct.QPaintDevice*) -declare int %_ZNK12QFontMetrics6ascentEv(%struct.QFontMetrics*) +declare i32 @_ZNK12QFontMetrics6ascentEv(%struct.QFontMetrics*) -declare void %_ZN5QFont12setPointSizeEi(%struct.QFont*, int) +declare void @_ZN5QFont12setPointSizeEi(%struct.QFont*, i32) -declare bool %_ZNK8QPrinter13collateCopiesEv(%struct.QPrinter*) +declare i1 @_ZNK8QPrinter13collateCopiesEv(%struct.QPrinter*) -declare int %_ZNK8QPrinter9numCopiesEv(%struct.QPrinter*) +declare i32 @_ZNK8QPrinter9numCopiesEv(%struct.QPrinter*) -declare int %_ZNK8QPrinter8fromPageEv(%struct.QPrinter*) +declare i32 @_ZNK8QPrinter8fromPageEv(%struct.QPrinter*) -declare int %_ZNK8QPrinter6toPageEv(%struct.QPrinter*) +declare i32 @_ZNK8QPrinter6toPageEv(%struct.QPrinter*) -declare uint %_ZNK8QPrinter9pageOrderEv(%struct.QPrinter*) +declare i32 @_ZNK8QPrinter9pageOrderEv(%struct.QPrinter*) -declare uint %_ZNK8QPrinter12printerStateEv(%struct.QPrinter*) +declare i32 @_ZNK8QPrinter12printerStateEv(%struct.QPrinter*) -declare bool %_ZN8QPrinter7newPageEv(%struct.QPrinter*) +declare i1 @_ZN8QPrinter7newPageEv(%struct.QPrinter*) -declare void %_ZN8QPainterD1Ev(%struct.QPainter*) +declare void @_ZN8QPainterD1Ev(%struct.QPainter*) diff --git a/test/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll b/test/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll index 3756fcb..d433f04 100644 --- a/test/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll +++ b/test/Transforms/SimplifyCFG/2006-12-08-Ptr-ICmp-Branch.ll @@ -1,145 +1,131 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplifycfg | llvm-dis +; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis ; END. -; ModuleID = 'bugpoint-tooptimize.bc' + +; ModuleID = '2006-12-08-Ptr-ICmp-Branch.ll' target datalayout = "e-p:32:32" -target endian = little -target pointersize = 32 target triple = "i686-pc-linux-gnu" - %struct.FILE = type { int, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, %struct._IO_marker*, %struct.FILE*, int, int, int, ushort, sbyte, [1 x sbyte], sbyte*, long, sbyte*, sbyte*, sbyte*, sbyte*, uint, int, [40 x sbyte] } - %struct._IO_FILE = type { int, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, %struct._IO_marker*, %struct.FILE*, int, int, int, ushort, sbyte, [1 x sbyte], sbyte*, long, sbyte*, sbyte*, sbyte*, sbyte*, uint, int, [40 x sbyte] } - %struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, int } - %struct.charsequence = type { sbyte*, uint, uint } - %struct.trie_s = type { [26 x %struct.trie_s*], int } -%str = external global [14 x sbyte] ; <[14 x sbyte]*> [#uses=0] -%str = external global [32 x sbyte] ; <[32 x sbyte]*> [#uses=0] -%str = external global [12 x sbyte] ; <[12 x sbyte]*> [#uses=0] -%C.0.2294 = external global %struct.charsequence ; <%struct.charsequence*> [#uses=3] -%t = external global %struct.trie_s* ; <%struct.trie_s**> [#uses=0] -%str = external global [3 x sbyte] ; <[3 x sbyte]*> [#uses=0] -%str = external global [26 x sbyte] ; <[26 x sbyte]*> [#uses=0] - -implementation ; Functions: - -declare void %charsequence_reset(%struct.charsequence*) -declare void %free(sbyte*) -declare void %charsequence_push(%struct.charsequence*, sbyte) -declare sbyte* %charsequence_val(%struct.charsequence*) -declare int %_IO_getc(%struct.FILE*) -declare int %tolower(int) -declare %struct.trie_s* %trie_insert(%struct.trie_s*, sbyte*) -declare int %feof(%struct.FILE*) - -void %addfile(%struct.trie_s* %t, %struct.FILE* %f) { -entry: - %t_addr = alloca %struct.trie_s* ; <%struct.trie_s**> [#uses=2] - %f_addr = alloca %struct.FILE* ; <%struct.FILE**> [#uses=3] - %c = alloca sbyte, align 1 ; <sbyte*> [#uses=7] - %wstate = alloca int, align 4 ; <int*> [#uses=4] - %cs = alloca %struct.charsequence, align 16 ; <%struct.charsequence*> [#uses=7] - %str = alloca sbyte*, align 4 ; <sbyte**> [#uses=3] - "alloca point" = bitcast int 0 to int ; <int> [#uses=0] - store %struct.trie_s* %t, %struct.trie_s** %t_addr - store %struct.FILE* %f, %struct.FILE** %f_addr - store int 0, int* %wstate - %tmp = getelementptr %struct.charsequence* %cs, uint 0, uint 0 ; <sbyte**> [#uses=1] - %tmp1 = getelementptr %struct.charsequence* %C.0.2294, uint 0, uint 0 ; <sbyte**> [#uses=1] - %tmp = load sbyte** %tmp1 ; <sbyte*> [#uses=1] - store sbyte* %tmp, sbyte** %tmp - %tmp = getelementptr %struct.charsequence* %cs, uint 0, uint 1 ; <uint*> [#uses=1] - %tmp2 = getelementptr %struct.charsequence* %C.0.2294, uint 0, uint 1 ; <uint*> [#uses=1] - %tmp = load uint* %tmp2 ; <uint> [#uses=1] - store uint %tmp, uint* %tmp - %tmp3 = getelementptr %struct.charsequence* %cs, uint 0, uint 2 ; <uint*> [#uses=1] - %tmp4 = getelementptr %struct.charsequence* %C.0.2294, uint 0, uint 2 ; <uint*> [#uses=1] - %tmp5 = load uint* %tmp4 ; <uint> [#uses=1] - store uint %tmp5, uint* %tmp3 - br label %bb33 - -bb: ; preds = %bb33 - %tmp = load %struct.FILE** %f_addr ; <%struct.FILE*> [#uses=1] - %tmp = call int %_IO_getc( %struct.FILE* %tmp ) ; <int> [#uses=1] - %tmp6 = call int %tolower( int %tmp ) ; <int> [#uses=1] - %tmp6 = trunc int %tmp6 to sbyte ; <sbyte> [#uses=1] - store sbyte %tmp6, sbyte* %c - %tmp7 = load int* %wstate ; <int> [#uses=1] - %tmp = icmp ne int %tmp7, 0 ; <bool> [#uses=1] - br bool %tmp, label %cond_true, label %cond_false - -cond_true: ; preds = %bb - %tmp = load sbyte* %c ; <sbyte> [#uses=1] - %tmp8 = icmp sle sbyte %tmp, 96 ; <bool> [#uses=1] - br bool %tmp8, label %cond_true9, label %cond_next - -cond_true9: ; preds = %cond_true - br label %bb16 + %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._IO_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._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 } + %struct.charsequence = type { i8*, i32, i32 } + %struct.trie_s = type { [26 x %struct.trie_s*], i32 } +@str = external global [14 x i8] ; <[14 x i8]*> [#uses=0] +@str.upgrd.1 = external global [32 x i8] ; <[32 x i8]*> [#uses=0] +@str.upgrd.2 = external global [12 x i8] ; <[12 x i8]*> [#uses=0] +@C.0.2294 = external global %struct.charsequence ; <%struct.charsequence*> [#uses=3] +@t = external global %struct.trie_s* ; <%struct.trie_s**> [#uses=0] +@str.upgrd.3 = external global [3 x i8] ; <[3 x i8]*> [#uses=0] +@str.upgrd.4 = external global [26 x i8] ; <[26 x i8]*> [#uses=0] -cond_next: ; preds = %cond_true - %tmp10 = load sbyte* %c ; <sbyte> [#uses=1] - %tmp11 = icmp sgt sbyte %tmp10, 122 ; <bool> [#uses=1] - br bool %tmp11, label %cond_true12, label %cond_next13 +declare void @charsequence_reset(%struct.charsequence*) -cond_true12: ; preds = %cond_next - br label %bb16 +declare void @free(i8*) -cond_next13: ; preds = %cond_next - %tmp14 = load sbyte* %c ; <sbyte> [#uses=1] - %tmp14 = sext sbyte %tmp14 to int ; <int> [#uses=1] - %tmp1415 = trunc int %tmp14 to sbyte ; <sbyte> [#uses=1] - call void %charsequence_push( %struct.charsequence* %cs, sbyte %tmp1415 ) - br label %bb21 +declare void @charsequence_push(%struct.charsequence*, i8) -bb16: ; preds = %cond_true12, %cond_true9 - %tmp17 = call sbyte* %charsequence_val( %struct.charsequence* %cs ) ; <sbyte*> [#uses=1] - store sbyte* %tmp17, sbyte** %str - %tmp = load %struct.trie_s** %t_addr ; <%struct.trie_s*> [#uses=1] - %tmp18 = load sbyte** %str ; <sbyte*> [#uses=1] - %tmp19 = call %struct.trie_s* %trie_insert( %struct.trie_s* %tmp, sbyte* %tmp18 ) ; <%struct.trie_s*> [#uses=0] - %tmp20 = load sbyte** %str ; <sbyte*> [#uses=1] - call void %free( sbyte* %tmp20 ) - store int 0, int* %wstate - br label %bb21 +declare i8* @charsequence_val(%struct.charsequence*) -bb21: ; preds = %bb16, %cond_next13 - br label %cond_next32 +declare i32 @_IO_getc(%struct.FILE*) -cond_false: ; preds = %bb - %tmp22 = load sbyte* %c ; <sbyte> [#uses=1] - %tmp23 = icmp sgt sbyte %tmp22, 96 ; <bool> [#uses=1] - br bool %tmp23, label %cond_true24, label %cond_next31 +declare i32 @tolower(i32) -cond_true24: ; preds = %cond_false - %tmp25 = load sbyte* %c ; <sbyte> [#uses=1] - %tmp26 = icmp sle sbyte %tmp25, 122 ; <bool> [#uses=1] - br bool %tmp26, label %cond_true27, label %cond_next30 +declare %struct.trie_s* @trie_insert(%struct.trie_s*, i8*) -cond_true27: ; preds = %cond_true24 - call void %charsequence_reset( %struct.charsequence* %cs ) - %tmp28 = load sbyte* %c ; <sbyte> [#uses=1] - %tmp28 = sext sbyte %tmp28 to int ; <int> [#uses=1] - %tmp2829 = trunc int %tmp28 to sbyte ; <sbyte> [#uses=1] - call void %charsequence_push( %struct.charsequence* %cs, sbyte %tmp2829 ) - store int 1, int* %wstate - br label %cond_next30 +declare i32 @feof(%struct.FILE*) -cond_next30: ; preds = %cond_true27, %cond_true24 - br label %cond_next31 - -cond_next31: ; preds = %cond_next30, %cond_false - br label %cond_next32 - -cond_next32: ; preds = %cond_next31, %bb21 - br label %bb33 - -bb33: ; preds = %cond_next32, %entry - %tmp34 = load %struct.FILE** %f_addr ; <%struct.FILE*> [#uses=1] - %tmp35 = call int %feof( %struct.FILE* %tmp34 ) ; <int> [#uses=1] - %tmp36 = icmp eq int %tmp35, 0 ; <bool> [#uses=1] - br bool %tmp36, label %bb, label %bb37 - -bb37: ; preds = %bb33 - br label %return - -return: ; preds = %bb37 - ret void +define void @addfile(%struct.trie_s* %t, %struct.FILE* %f) { +entry: + %t_addr = alloca %struct.trie_s* ; <%struct.trie_s**> [#uses=2] + %f_addr = alloca %struct.FILE* ; <%struct.FILE**> [#uses=3] + %c = alloca i8, align 1 ; <i8*> [#uses=7] + %wstate = alloca i32, align 4 ; <i32*> [#uses=4] + %cs = alloca %struct.charsequence, align 16 ; <%struct.charsequence*> [#uses=7] + %str = alloca i8*, align 4 ; <i8**> [#uses=3] + %"alloca point" = bitcast i32 0 to i32 ; <i32> [#uses=0] + store %struct.trie_s* %t, %struct.trie_s** %t_addr + store %struct.FILE* %f, %struct.FILE** %f_addr + store i32 0, i32* %wstate + %tmp = getelementptr %struct.charsequence* %cs, i64 0, i32 0 ; <i8**> [#uses=1] + %tmp1 = getelementptr %struct.charsequence* @C.0.2294, i64 0, i32 0 ; <i8**> [#uses=1] + %tmp.upgrd.5 = load i8** %tmp1 ; <i8*> [#uses=1] + store i8* %tmp.upgrd.5, i8** %tmp + %tmp.upgrd.6 = getelementptr %struct.charsequence* %cs, i64 0, i32 1 ; <i32*> [#uses=1] + %tmp2 = getelementptr %struct.charsequence* @C.0.2294, i64 0, i32 1 ; <i32*> [#uses=1] + %tmp.upgrd.7 = load i32* %tmp2 ; <i32> [#uses=1] + store i32 %tmp.upgrd.7, i32* %tmp.upgrd.6 + %tmp3 = getelementptr %struct.charsequence* %cs, i64 0, i32 2 ; <i32*> [#uses=1] + %tmp4 = getelementptr %struct.charsequence* @C.0.2294, i64 0, i32 2 ; <i32*> [#uses=1] + %tmp5 = load i32* %tmp4 ; <i32> [#uses=1] + store i32 %tmp5, i32* %tmp3 + br label %bb33 +bb: ; preds = %bb33 + %tmp.upgrd.8 = load %struct.FILE** %f_addr ; <%struct.FILE*> [#uses=1] + %tmp.upgrd.9 = call i32 @_IO_getc( %struct.FILE* %tmp.upgrd.8 ) ; <i32> [#uses=1] + %tmp6 = call i32 @tolower( i32 %tmp.upgrd.9 ) ; <i32> [#uses=1] + %tmp6.upgrd.10 = trunc i32 %tmp6 to i8 ; <i8> [#uses=1] + store i8 %tmp6.upgrd.10, i8* %c + %tmp7 = load i32* %wstate ; <i32> [#uses=1] + %tmp.upgrd.11 = icmp ne i32 %tmp7, 0 ; <i1> [#uses=1] + br i1 %tmp.upgrd.11, label %cond_true, label %cond_false +cond_true: ; preds = %bb + %tmp.upgrd.12 = load i8* %c ; <i8> [#uses=1] + %tmp8 = icmp sle i8 %tmp.upgrd.12, 96 ; <i1> [#uses=1] + br i1 %tmp8, label %cond_true9, label %cond_next +cond_true9: ; preds = %cond_true + br label %bb16 +cond_next: ; preds = %cond_true + %tmp10 = load i8* %c ; <i8> [#uses=1] + %tmp11 = icmp sgt i8 %tmp10, 122 ; <i1> [#uses=1] + br i1 %tmp11, label %cond_true12, label %cond_next13 +cond_true12: ; preds = %cond_next + br label %bb16 +cond_next13: ; preds = %cond_next + %tmp14 = load i8* %c ; <i8> [#uses=1] + %tmp14.upgrd.13 = sext i8 %tmp14 to i32 ; <i32> [#uses=1] + %tmp1415 = trunc i32 %tmp14.upgrd.13 to i8 ; <i8> [#uses=1] + call void @charsequence_push( %struct.charsequence* %cs, i8 %tmp1415 ) + br label %bb21 +bb16: ; preds = %cond_true12, %cond_true9 + %tmp17 = call i8* @charsequence_val( %struct.charsequence* %cs ) ; <i8*> [#uses=1] + store i8* %tmp17, i8** %str + %tmp.upgrd.14 = load %struct.trie_s** %t_addr ; <%struct.trie_s*> [#uses=1] + %tmp18 = load i8** %str ; <i8*> [#uses=1] + %tmp19 = call %struct.trie_s* @trie_insert( %struct.trie_s* %tmp.upgrd.14, i8* %tmp18 ) ; <%struct.trie_s*> [#uses=0] + %tmp20 = load i8** %str ; <i8*> [#uses=1] + call void @free( i8* %tmp20 ) + store i32 0, i32* %wstate + br label %bb21 +bb21: ; preds = %bb16, %cond_next13 + br label %cond_next32 +cond_false: ; preds = %bb + %tmp22 = load i8* %c ; <i8> [#uses=1] + %tmp23 = icmp sgt i8 %tmp22, 96 ; <i1> [#uses=1] + br i1 %tmp23, label %cond_true24, label %cond_next31 +cond_true24: ; preds = %cond_false + %tmp25 = load i8* %c ; <i8> [#uses=1] + %tmp26 = icmp sle i8 %tmp25, 122 ; <i1> [#uses=1] + br i1 %tmp26, label %cond_true27, label %cond_next30 +cond_true27: ; preds = %cond_true24 + call void @charsequence_reset( %struct.charsequence* %cs ) + %tmp28 = load i8* %c ; <i8> [#uses=1] + %tmp28.upgrd.15 = sext i8 %tmp28 to i32 ; <i32> [#uses=1] + %tmp2829 = trunc i32 %tmp28.upgrd.15 to i8 ; <i8> [#uses=1] + call void @charsequence_push( %struct.charsequence* %cs, i8 %tmp2829 ) + store i32 1, i32* %wstate + br label %cond_next30 +cond_next30: ; preds = %cond_true27, %cond_true24 + br label %cond_next31 +cond_next31: ; preds = %cond_next30, %cond_false + br label %cond_next32 +cond_next32: ; preds = %cond_next31, %bb21 + br label %bb33 +bb33: ; preds = %cond_next32, %entry + %tmp34 = load %struct.FILE** %f_addr ; <%struct.FILE*> [#uses=1] + %tmp35 = call i32 @feof( %struct.FILE* %tmp34 ) ; <i32> [#uses=1] + %tmp36 = icmp eq i32 %tmp35, 0 ; <i1> [#uses=1] + br i1 %tmp36, label %bb, label %bb37 +bb37: ; preds = %bb33 + br label %return +return: ; preds = %bb37 + ret void } - diff --git a/test/Transforms/SimplifyLibCalls/2005-05-20-sprintf-crash.ll b/test/Transforms/SimplifyLibCalls/2005-05-20-sprintf-crash.ll index 5b4fde8..860a6eb 100644 --- a/test/Transforms/SimplifyLibCalls/2005-05-20-sprintf-crash.ll +++ b/test/Transforms/SimplifyLibCalls/2005-05-20-sprintf-crash.ll @@ -1,10 +1,11 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls -disable-output +; RUN: llvm-as < %s | opt -simplify-libcalls -disable-output -%G = constant [3 x sbyte] c"%s\00" +@G = constant [3 x i8] c"%s\00" ; <[3 x i8]*> [#uses=1] -declare int %sprintf(sbyte*, sbyte*, ...) +declare i32 @sprintf(i8*, i8*, ...) -void %foo(sbyte*%P, int *%X) { - call int(sbyte*,sbyte*, ...)* %sprintf(sbyte* %P, sbyte* getelementptr ([3 x sbyte]* %G, int 0, int 0), int* %X) - ret void +define void @foo(i8* %P, i32* %X) { + call i32 (i8*, i8*, ...)* @sprintf( i8* %P, i8* getelementptr ([3 x i8]* @G, i32 0, i32 0), i32* %X ) ; <i32>:1 [#uses=0] + ret void } + diff --git a/test/Transforms/SimplifyLibCalls/ExitInMain.ll b/test/Transforms/SimplifyLibCalls/ExitInMain.ll index 3fded2c..8abf3b1 100644 --- a/test/Transforms/SimplifyLibCalls/ExitInMain.ll +++ b/test/Transforms/SimplifyLibCalls/ExitInMain.ll @@ -1,15 +1,15 @@ ; Test that the ExitInMainOptimization pass works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: grep {ret i32 3} | count 1 ; END. -declare void %exit(int) -declare void %exitonly(int) +declare void @exit(i32) -implementation ; Functions: +declare void @exitonly(i32) -int %main () { - call void %exitonly ( int 3 ) - call void %exit ( int 3 ) - ret int 0 +define i32 @main() { + call void @exitonly( i32 3 ) + call void @exit( i32 3 ) + ret i32 0 } + diff --git a/test/Transforms/SimplifyLibCalls/FFS.ll b/test/Transforms/SimplifyLibCalls/FFS.ll index 7049b5a..94228f0 100644 --- a/test/Transforms/SimplifyLibCalls/FFS.ll +++ b/test/Transforms/SimplifyLibCalls/FFS.ll @@ -1,29 +1,30 @@ ; Test that the ToAsciiOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*%ffs} -declare int %ffs(int) -declare int %ffsl(int) -declare int %ffsll(long) +@non_const = external global i32 ; <i32*> [#uses=1] -%non_const = external global int +declare i32 @ffs(i32) -implementation ; Functions: +declare i32 @ffsl(i32) -int %main () { - %arg = load int* %non_const - %val0 = call int %ffs(int %arg) - %val1 = call int %ffs(int 1) - %val2 = call int %ffs(int 2048) - %val3 = call int %ffsl(int 65536) - %val4 = call int %ffsll(long 1024) - %val5 = call int %ffsll(long 17179869184) - %val6 = call int %ffsll(long 1152921504606846976) - %rslt1 = add int %val1, %val2 - %rslt2 = add int %val3, %val4 - %rslt3 = add int %val5, %val6 - %rslt4 = add int %rslt1, %rslt2 - %rslt5 = add int %rslt4, %rslt3 - %rslt6 = add int %rslt5, %val0 - ret int %rslt5 +declare i32 @ffsll(i64) + +define i32 @main() { + %arg = load i32* @non_const ; <i32> [#uses=1] + %val0 = call i32 @ffs( i32 %arg ) ; <i32> [#uses=1] + %val1 = call i32 @ffs( i32 1 ) ; <i32> [#uses=1] + %val2 = call i32 @ffs( i32 2048 ) ; <i32> [#uses=1] + %val3 = call i32 @ffsl( i32 65536 ) ; <i32> [#uses=1] + %val4 = call i32 @ffsll( i64 1024 ) ; <i32> [#uses=1] + %val5 = call i32 @ffsll( i64 17179869184 ) ; <i32> [#uses=1] + %val6 = call i32 @ffsll( i64 1152921504606846976 ) ; <i32> [#uses=1] + %rslt1 = add i32 %val1, %val2 ; <i32> [#uses=1] + %rslt2 = add i32 %val3, %val4 ; <i32> [#uses=1] + %rslt3 = add i32 %val5, %val6 ; <i32> [#uses=1] + %rslt4 = add i32 %rslt1, %rslt2 ; <i32> [#uses=1] + %rslt5 = add i32 %rslt4, %rslt3 ; <i32> [#uses=2] + %rslt6 = add i32 %rslt5, %val0 ; <i32> [#uses=0] + ret i32 %rslt5 } + diff --git a/test/Transforms/SimplifyLibCalls/FPrintF.ll b/test/Transforms/SimplifyLibCalls/FPrintF.ll index 53b751f..ac6b3c1 100644 --- a/test/Transforms/SimplifyLibCalls/FPrintF.ll +++ b/test/Transforms/SimplifyLibCalls/FPrintF.ll @@ -1,29 +1,25 @@ ; Test that the FPrintFOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*fprintf} ; -%struct._IO_FILE = type { int, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, %struct._IO_marker*, %struct._IO_FILE*, int, int, int, ushort, sbyte, [1 x sbyte], sbyte*, long, sbyte*, sbyte*, int, [52 x sbyte] } -%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, int } + %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i32, [52 x i8] } + %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } +@str = constant [3 x i8] c"%s\00" ; <[3 x i8]*> [#uses=1] +@chr = constant [3 x i8] c"%c\00" ; <[3 x i8]*> [#uses=1] +@hello = constant [13 x i8] c"hello world\0A\00" ; <[13 x i8]*> [#uses=1] +@stdout = external global %struct._IO_FILE* ; <%struct._IO_FILE**> [#uses=3] -%str = constant [3 x sbyte] c"%s\00" -%chr = constant [3 x sbyte] c"%c\00" -%hello = constant [13 x sbyte] c"hello world\0A\00" -%stdout = external global %struct._IO_FILE* +declare i32 @fprintf(%struct._IO_FILE*, i8*, ...) -declare int %fprintf(%struct._IO_FILE*, sbyte*, ...) - -implementation - -int %foo() -{ +define i32 @foo() { entry: - %tmp.1 = load %struct._IO_FILE** %stdout - %tmp.0 = call int (%struct._IO_FILE*, sbyte*, ...)* %fprintf( %struct._IO_FILE* %tmp.1, sbyte* getelementptr ([13 x sbyte]* %hello, int 0, int 0) ) - %tmp.4 = load %struct._IO_FILE** %stdout - %tmp.3 = call int (%struct._IO_FILE*, sbyte*, ...)* %fprintf( %struct._IO_FILE* %tmp.4, sbyte* getelementptr ([3 x sbyte]* %str, int 0, int 0), sbyte* getelementptr ([13 x sbyte]* %hello, int 0, int 0) ) - %tmp.8 = load %struct._IO_FILE** %stdout - %tmp.7 = call int (%struct._IO_FILE*, sbyte*, ...)* %fprintf( %struct._IO_FILE* %tmp.8, sbyte* getelementptr ([3 x sbyte]* %chr, int 0, int 0), int 33 ) - ret int 0 + %tmp.1 = load %struct._IO_FILE** @stdout ; <%struct._IO_FILE*> [#uses=1] + %tmp.0 = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf( %struct._IO_FILE* %tmp.1, i8* getelementptr ([13 x i8]* @hello, i32 0, i32 0) ) ; <i32> [#uses=0] + %tmp.4 = load %struct._IO_FILE** @stdout ; <%struct._IO_FILE*> [#uses=1] + %tmp.3 = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf( %struct._IO_FILE* %tmp.4, i8* getelementptr ([3 x i8]* @str, i32 0, i32 0), i8* getelementptr ([13 x i8]* @hello, i32 0, i32 0) ) ; <i32> [#uses=0] + %tmp.8 = load %struct._IO_FILE** @stdout ; <%struct._IO_FILE*> [#uses=1] + %tmp.7 = call i32 (%struct._IO_FILE*, i8*, ...)* @fprintf( %struct._IO_FILE* %tmp.8, i8* getelementptr ([3 x i8]* @chr, i32 0, i32 0), i32 33 ) ; <i32> [#uses=0] + ret i32 0 } diff --git a/test/Transforms/SimplifyLibCalls/IsDigit.ll b/test/Transforms/SimplifyLibCalls/IsDigit.ll index bcdb60c..a290e01 100644 --- a/test/Transforms/SimplifyLibCalls/IsDigit.ll +++ b/test/Transforms/SimplifyLibCalls/IsDigit.ll @@ -1,21 +1,21 @@ ; Test that the IsDigitOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep call -declare int %isdigit(int) -declare int %isascii(int) +declare i32 @isdigit(i32) -implementation ; Functions: +declare i32 @isascii(i32) -int %main () { - %val1 = call int %isdigit(int 47) - %val2 = call int %isdigit(int 48) - %val3 = call int %isdigit(int 57) - %val4 = call int %isdigit(int 58) - %rslt1 = add int %val1, %val2 - %rslt2 = add int %val3, %val4 - %sum = add int %rslt1, %rslt2 - %rslt = call int %isdigit(int %sum) - %tmp = call int %isascii(int %rslt) - ret int %tmp +define i32 @main() { + %val1 = call i32 @isdigit( i32 47 ) ; <i32> [#uses=1] + %val2 = call i32 @isdigit( i32 48 ) ; <i32> [#uses=1] + %val3 = call i32 @isdigit( i32 57 ) ; <i32> [#uses=1] + %val4 = call i32 @isdigit( i32 58 ) ; <i32> [#uses=1] + %rslt1 = add i32 %val1, %val2 ; <i32> [#uses=1] + %rslt2 = add i32 %val3, %val4 ; <i32> [#uses=1] + %sum = add i32 %rslt1, %rslt2 ; <i32> [#uses=1] + %rslt = call i32 @isdigit( i32 %sum ) ; <i32> [#uses=1] + %tmp = call i32 @isascii( i32 %rslt ) ; <i32> [#uses=1] + ret i32 %tmp } + diff --git a/test/Transforms/SimplifyLibCalls/MemCpy.ll b/test/Transforms/SimplifyLibCalls/MemCpy.ll index 0a99488..da3261d 100644 --- a/test/Transforms/SimplifyLibCalls/MemCpy.ll +++ b/test/Transforms/SimplifyLibCalls/MemCpy.ll @@ -1,22 +1,22 @@ ; Test that the StrCatOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -constprop -simplify-libcalls | \ +; RUN: llvm-as < %s | opt -constprop -simplify-libcalls | \ ; RUN: llvm-dis | not grep {call.*llvm.memcpy.i32} -declare void %llvm.memcpy.i32(sbyte*,sbyte*,uint,uint) -%h = constant [2 x sbyte] c"h\00" -%hel = constant [4 x sbyte] c"hel\00" -%hello_u = constant [8 x sbyte] c"hello_u\00" +@h = constant [2 x i8] c"h\00" ; <[2 x i8]*> [#uses=1] +@hel = constant [4 x i8] c"hel\00" ; <[4 x i8]*> [#uses=1] +@hello_u = constant [8 x i8] c"hello_u\00" ; <[8 x i8]*> [#uses=1] -implementation ; Functions: +declare void @llvm.memcpy.i32(i8*, i8*, i32, i32) -int %main () { - %h_p = getelementptr [2 x sbyte]* %h, int 0, int 0 - %hel_p = getelementptr [4 x sbyte]* %hel, int 0, int 0 - %hello_u_p = getelementptr [8 x sbyte]* %hello_u, int 0, int 0 - %target = alloca [1024 x sbyte] - %target_p = getelementptr [1024 x sbyte]* %target, int 0, int 0 - call void %llvm.memcpy.i32(sbyte* %target_p, sbyte* %h_p, uint 2, uint 2) - call void %llvm.memcpy.i32(sbyte* %target_p, sbyte* %hel_p, uint 4, uint 4) - call void %llvm.memcpy.i32(sbyte* %target_p, sbyte* %hello_u_p, uint 8, uint 8) - ret int 0 +define i32 @main() { + %h_p = getelementptr [2 x i8]* @h, i32 0, i32 0 ; <i8*> [#uses=1] + %hel_p = getelementptr [4 x i8]* @hel, i32 0, i32 0 ; <i8*> [#uses=1] + %hello_u_p = getelementptr [8 x i8]* @hello_u, i32 0, i32 0 ; <i8*> [#uses=1] + %target = alloca [1024 x i8] ; <[1024 x i8]*> [#uses=1] + %target_p = getelementptr [1024 x i8]* %target, i32 0, i32 0 ; <i8*> [#uses=3] + call void @llvm.memcpy.i32( i8* %target_p, i8* %h_p, i32 2, i32 2 ) + call void @llvm.memcpy.i32( i8* %target_p, i8* %hel_p, i32 4, i32 4 ) + call void @llvm.memcpy.i32( i8* %target_p, i8* %hello_u_p, i32 8, i32 8 ) + ret i32 0 } + diff --git a/test/Transforms/SimplifyLibCalls/MemMove.ll b/test/Transforms/SimplifyLibCalls/MemMove.ll index 7c89d91..852f8db 100644 --- a/test/Transforms/SimplifyLibCalls/MemMove.ll +++ b/test/Transforms/SimplifyLibCalls/MemMove.ll @@ -1,22 +1,22 @@ ; Test that the StrCatOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -constprop -simplify-libcalls | \ +; RUN: llvm-as < %s | opt -constprop -simplify-libcalls | \ ; RUN: llvm-dis | not grep {call.*llvm.memmove.i32} -declare void %llvm.memmove.i32(sbyte*,sbyte*,uint,uint) -%h = constant [2 x sbyte] c"h\00" -%hel = constant [4 x sbyte] c"hel\00" -%hello_u = constant [8 x sbyte] c"hello_u\00" +@h = constant [2 x i8] c"h\00" ; <[2 x i8]*> [#uses=1] +@hel = constant [4 x i8] c"hel\00" ; <[4 x i8]*> [#uses=1] +@hello_u = constant [8 x i8] c"hello_u\00" ; <[8 x i8]*> [#uses=1] -implementation ; Functions: +declare void @llvm.memmove.i32(i8*, i8*, i32, i32) -int %main () { - %h_p = getelementptr [2 x sbyte]* %h, int 0, int 0 - %hel_p = getelementptr [4 x sbyte]* %hel, int 0, int 0 - %hello_u_p = getelementptr [8 x sbyte]* %hello_u, int 0, int 0 - %target = alloca [1024 x sbyte] - %target_p = getelementptr [1024 x sbyte]* %target, int 0, int 0 - call void %llvm.memmove.i32(sbyte* %target_p, sbyte* %h_p, uint 2, uint 2) - call void %llvm.memmove.i32(sbyte* %target_p, sbyte* %hel_p, uint 4, uint 4) - call void %llvm.memmove.i32(sbyte* %target_p, sbyte* %hello_u_p, uint 8, uint 8) - ret int 0 +define i32 @main() { + %h_p = getelementptr [2 x i8]* @h, i32 0, i32 0 ; <i8*> [#uses=1] + %hel_p = getelementptr [4 x i8]* @hel, i32 0, i32 0 ; <i8*> [#uses=1] + %hello_u_p = getelementptr [8 x i8]* @hello_u, i32 0, i32 0 ; <i8*> [#uses=1] + %target = alloca [1024 x i8] ; <[1024 x i8]*> [#uses=1] + %target_p = getelementptr [1024 x i8]* %target, i32 0, i32 0 ; <i8*> [#uses=3] + call void @llvm.memmove.i32( i8* %target_p, i8* %h_p, i32 2, i32 2 ) + call void @llvm.memmove.i32( i8* %target_p, i8* %hel_p, i32 4, i32 4 ) + call void @llvm.memmove.i32( i8* %target_p, i8* %hello_u_p, i32 8, i32 8 ) + ret i32 0 } + diff --git a/test/Transforms/SimplifyLibCalls/MemSet.ll b/test/Transforms/SimplifyLibCalls/MemSet.ll index dbeef9d..853dcbe 100644 --- a/test/Transforms/SimplifyLibCalls/MemSet.ll +++ b/test/Transforms/SimplifyLibCalls/MemSet.ll @@ -1,19 +1,18 @@ ; Test that the LLVMMemSetOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*llvm.memset} ; END. -declare void %llvm.memset.i32(sbyte*,ubyte,uint,uint) +declare void @llvm.memset.i32(i8*, i8, i32, i32) -implementation ; Functions: - -int %main () { - %target = alloca [1024 x sbyte] - %target_p = getelementptr [1024 x sbyte]* %target, int 0, int 0 - call void %llvm.memset.i32(sbyte* %target_p, ubyte 1, uint 0, uint 1) - call void %llvm.memset.i32(sbyte* %target_p, ubyte 1, uint 1, uint 1) - call void %llvm.memset.i32(sbyte* %target_p, ubyte 1, uint 2, uint 2) - call void %llvm.memset.i32(sbyte* %target_p, ubyte 1, uint 4, uint 4) - call void %llvm.memset.i32(sbyte* %target_p, ubyte 1, uint 8, uint 8) - ret int 0 +define i32 @main() { + %target = alloca [1024 x i8] ; <[1024 x i8]*> [#uses=1] + %target_p = getelementptr [1024 x i8]* %target, i32 0, i32 0 ; <i8*> [#uses=5] + call void @llvm.memset.i32( i8* %target_p, i8 1, i32 0, i32 1 ) + call void @llvm.memset.i32( i8* %target_p, i8 1, i32 1, i32 1 ) + call void @llvm.memset.i32( i8* %target_p, i8 1, i32 2, i32 2 ) + call void @llvm.memset.i32( i8* %target_p, i8 1, i32 4, i32 4 ) + call void @llvm.memset.i32( i8* %target_p, i8 1, i32 8, i32 8 ) + ret i32 0 } + diff --git a/test/Transforms/SimplifyLibCalls/Pow.ll b/test/Transforms/SimplifyLibCalls/Pow.ll index 773ba1e..fa638ef 100644 --- a/test/Transforms/SimplifyLibCalls/Pow.ll +++ b/test/Transforms/SimplifyLibCalls/Pow.ll @@ -1,24 +1,24 @@ ; Testcase for calls to the standard C "pow" function ; ; Equivalent to: http://gcc.gnu.org/ml/gcc-patches/2003-02/msg01786.html -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call double .pow} ; END. -declare double %pow(double, double) +declare double @pow(double, double) -double %test1(double %X) { - %Y = call double %pow(double %X, double 0.0) - ret double %Y ; x^0.0 always equals 1.0 +define double @test1(double %X) { + %Y = call double @pow( double %X, double 0.000000e+00 ) ; <double> [#uses=1] + ret double %Y } -double %test2(double %X) { - %Y = call double %pow(double %X, double -0.0) - ret double %Y ; x^-0.0 always equals 1.0 +define double @test2(double %X) { + %Y = call double @pow( double %X, double -0.000000e+00 ) ; <double> [#uses=1] + ret double %Y } -double %test3(double %X) { - %Y = call double %pow(double 1.0, double %X) - ret double %Y ; 1.0^x always equals 1.0 +define double @test3(double %X) { + %Y = call double @pow( double 1.000000e+00, double %X ) ; <double> [#uses=1] + ret double %Y } diff --git a/test/Transforms/SimplifyLibCalls/Puts.ll b/test/Transforms/SimplifyLibCalls/Puts.ll index 795b15c..e9bb2b3 100644 --- a/test/Transforms/SimplifyLibCalls/Puts.ll +++ b/test/Transforms/SimplifyLibCalls/Puts.ll @@ -1,27 +1,26 @@ ; Test that the PutsCatOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*fputs} ; -%struct._IO_FILE = type { int, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, sbyte*, %struct._IO_marker*, %struct._IO_FILE*, int, int, int, ushort, sbyte, [1 x sbyte], sbyte*, long, sbyte*, sbyte*, int, [52 x sbyte] } -%struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, int } -%stdout = external global %struct._IO_FILE* ; <%struct._IO_FILE**> [#uses=1] -declare int %fputs(sbyte*, %struct._IO_FILE*) + %struct._IO_FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct._IO_FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i32, [52 x i8] } + %struct._IO_marker = type { %struct._IO_marker*, %struct._IO_FILE*, i32 } +@stdout = external global %struct._IO_FILE* ; <%struct._IO_FILE**> [#uses=1] +@empty = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=1] +@len1 = constant [2 x i8] c"A\00" ; <[2 x i8]*> [#uses=1] +@long = constant [7 x i8] c"hello\0A\00" ; <[7 x i8]*> [#uses=1] -%empty = constant [1 x sbyte] c"\00" -%len1 = constant [2 x sbyte] c"A\00" -%long = constant [7 x sbyte] c"hello\0A\00" +declare i32 @fputs(i8*, %struct._IO_FILE*) -implementation ; Functions: - -int %main() { +define i32 @main() { entry: - %out = load %struct._IO_FILE** %stdout - %s1 = getelementptr [1 x sbyte]* %empty, int 0, int 0 - %s2 = getelementptr [2 x sbyte]* %len1, int 0, int 0 - %s3 = getelementptr [7 x sbyte]* %long, int 0, int 0 - %a = call int %fputs( sbyte* %s1, %struct._IO_FILE* %out ) - %b = call int %fputs( sbyte* %s2, %struct._IO_FILE* %out ) - %c = call int %fputs( sbyte* %s3, %struct._IO_FILE* %out ) - ret int 0 + %out = load %struct._IO_FILE** @stdout ; <%struct._IO_FILE*> [#uses=3] + %s1 = getelementptr [1 x i8]* @empty, i32 0, i32 0 ; <i8*> [#uses=1] + %s2 = getelementptr [2 x i8]* @len1, i32 0, i32 0 ; <i8*> [#uses=1] + %s3 = getelementptr [7 x i8]* @long, i32 0, i32 0 ; <i8*> [#uses=1] + %a = call i32 @fputs( i8* %s1, %struct._IO_FILE* %out ) ; <i32> [#uses=0] + %b = call i32 @fputs( i8* %s2, %struct._IO_FILE* %out ) ; <i32> [#uses=0] + %c = call i32 @fputs( i8* %s3, %struct._IO_FILE* %out ) ; <i32> [#uses=0] + ret i32 0 } + diff --git a/test/Transforms/SimplifyLibCalls/SPrintF.ll b/test/Transforms/SimplifyLibCalls/SPrintF.ll index a8ad369..53f5ef1 100644 --- a/test/Transforms/SimplifyLibCalls/SPrintF.ll +++ b/test/Transforms/SimplifyLibCalls/SPrintF.ll @@ -1,36 +1,36 @@ ; Test that the SPrintFOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*sprintf} -declare int %sprintf(sbyte*,sbyte*,...) -declare int %puts(sbyte*) -%hello = constant [6 x sbyte] c"hello\00" -%null = constant [1 x sbyte] c"\00" -%null_hello = constant [7 x sbyte] c"\00hello\00" -%fmt1 = constant [3 x sbyte] c"%s\00" -%fmt2 = constant [3 x sbyte] c"%c\00" +@hello = constant [6 x i8] c"hello\00" ; <[6 x i8]*> [#uses=1] +@null = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=1] +@null_hello = constant [7 x i8] c"\00hello\00" ; <[7 x i8]*> [#uses=1] +@fmt1 = constant [3 x i8] c"%s\00" ; <[3 x i8]*> [#uses=1] +@fmt2 = constant [3 x i8] c"%c\00" ; <[3 x i8]*> [#uses=1] -implementation ; Functions: +declare i32 @sprintf(i8*, i8*, ...) -int %foo (sbyte* %p) { - %target = alloca [1024 x sbyte] - %target_p = getelementptr [1024 x sbyte]* %target, int 0, int 0 - %hello_p = getelementptr [6 x sbyte]* %hello, int 0, int 0 - %null_p = getelementptr [1 x sbyte]* %null, int 0, int 0 - %nh_p = getelementptr [7 x sbyte]* %null_hello, int 0, int 0 - %fmt1_p = getelementptr [3 x sbyte]* %fmt1, int 0, int 0 - %fmt2_p = getelementptr [3 x sbyte]* %fmt2, int 0, int 0 - store sbyte 0, sbyte* %target_p - %r1 = call int (sbyte*,sbyte*,...)* %sprintf(sbyte* %target_p, sbyte* %hello_p) - %r2 = call int (sbyte*,sbyte*,...)* %sprintf(sbyte* %target_p, sbyte* %null_p) - %r3 = call int (sbyte*,sbyte*,...)* %sprintf(sbyte* %target_p, sbyte* %nh_p) - %r4 = call int (sbyte*,sbyte*,...)* %sprintf(sbyte* %target_p, sbyte* %fmt1_p, sbyte* %hello_p) - %r4.1 = call int (sbyte*,sbyte*,...)* %sprintf(sbyte* %target_p, sbyte* %fmt1_p, sbyte* %p) - %r5 = call int (sbyte*,sbyte*,...)* %sprintf(sbyte* %target_p, sbyte* %fmt2_p, int 82) - %r6 = add int %r1, %r2 - %r7 = add int %r3, %r6 - %r8 = add int %r5, %r7 - %r9 = add int %r8, %r4 - %r10 = add int %r9, %r4.1 - ret int %r10 +declare i32 @puts(i8*) + +define i32 @foo(i8* %p) { + %target = alloca [1024 x i8] ; <[1024 x i8]*> [#uses=1] + %target_p = getelementptr [1024 x i8]* %target, i32 0, i32 0 ; <i8*> [#uses=7] + %hello_p = getelementptr [6 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=2] + %null_p = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=1] + %nh_p = getelementptr [7 x i8]* @null_hello, i32 0, i32 0 ; <i8*> [#uses=1] + %fmt1_p = getelementptr [3 x i8]* @fmt1, i32 0, i32 0 ; <i8*> [#uses=2] + %fmt2_p = getelementptr [3 x i8]* @fmt2, i32 0, i32 0 ; <i8*> [#uses=1] + store i8 0, i8* %target_p + %r1 = call i32 (i8*, i8*, ...)* @sprintf( i8* %target_p, i8* %hello_p ) ; <i32> [#uses=1] + %r2 = call i32 (i8*, i8*, ...)* @sprintf( i8* %target_p, i8* %null_p ) ; <i32> [#uses=1] + %r3 = call i32 (i8*, i8*, ...)* @sprintf( i8* %target_p, i8* %nh_p ) ; <i32> [#uses=1] + %r4 = call i32 (i8*, i8*, ...)* @sprintf( i8* %target_p, i8* %fmt1_p, i8* %hello_p ) ; <i32> [#uses=1] + %r4.1 = call i32 (i8*, i8*, ...)* @sprintf( i8* %target_p, i8* %fmt1_p, i8* %p ) ; <i32> [#uses=1] + %r5 = call i32 (i8*, i8*, ...)* @sprintf( i8* %target_p, i8* %fmt2_p, i32 82 ) ; <i32> [#uses=1] + %r6 = add i32 %r1, %r2 ; <i32> [#uses=1] + %r7 = add i32 %r3, %r6 ; <i32> [#uses=1] + %r8 = add i32 %r5, %r7 ; <i32> [#uses=1] + %r9 = add i32 %r8, %r4 ; <i32> [#uses=1] + %r10 = add i32 %r9, %r4.1 ; <i32> [#uses=1] + ret i32 %r10 } diff --git a/test/Transforms/SimplifyLibCalls/StrCat.ll b/test/Transforms/SimplifyLibCalls/StrCat.ll index 06bc833..a6ef677 100644 --- a/test/Transforms/SimplifyLibCalls/StrCat.ll +++ b/test/Transforms/SimplifyLibCalls/StrCat.ll @@ -1,25 +1,26 @@ ; Test that the StrCatOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*strcat} -declare sbyte* %strcat(sbyte*,sbyte*) -declare int %puts(sbyte*) -%hello = constant [6 x sbyte] c"hello\00" -%null = constant [1 x sbyte] c"\00" -%null_hello = constant [7 x sbyte] c"\00hello\00" +@hello = constant [6 x i8] c"hello\00" ; <[6 x i8]*> [#uses=1] +@null = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=1] +@null_hello = constant [7 x i8] c"\00hello\00" ; <[7 x i8]*> [#uses=1] -implementation ; Functions: +declare i8* @strcat(i8*, i8*) -int %main () { - %target = alloca [1024 x sbyte] - %arg1 = getelementptr [1024 x sbyte]* %target, int 0, int 0 - store sbyte 0, sbyte* %arg1 - %arg2 = getelementptr [6 x sbyte]* %hello, int 0, int 0 - %rslt1 = call sbyte* %strcat(sbyte* %arg1, sbyte* %arg2) - %arg3 = getelementptr [1 x sbyte]* %null, int 0, int 0 - %rslt2 = call sbyte* %strcat(sbyte* %rslt1, sbyte* %arg3) - %arg4 = getelementptr [7 x sbyte]* %null_hello, int 0, int 0 - %rslt3 = call sbyte* %strcat(sbyte* %rslt2, sbyte* %arg4) - call int %puts(sbyte* %rslt3) - ret int 0 +declare i32 @puts(i8*) + +define i32 @main() { + %target = alloca [1024 x i8] ; <[1024 x i8]*> [#uses=1] + %arg1 = getelementptr [1024 x i8]* %target, i32 0, i32 0 ; <i8*> [#uses=2] + store i8 0, i8* %arg1 + %arg2 = getelementptr [6 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=1] + %rslt1 = call i8* @strcat( i8* %arg1, i8* %arg2 ) ; <i8*> [#uses=1] + %arg3 = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=1] + %rslt2 = call i8* @strcat( i8* %rslt1, i8* %arg3 ) ; <i8*> [#uses=1] + %arg4 = getelementptr [7 x i8]* @null_hello, i32 0, i32 0 ; <i8*> [#uses=1] + %rslt3 = call i8* @strcat( i8* %rslt2, i8* %arg4 ) ; <i8*> [#uses=1] + call i32 @puts( i8* %rslt3 ) ; <i32>:1 [#uses=0] + ret i32 0 } + diff --git a/test/Transforms/SimplifyLibCalls/StrChr.ll b/test/Transforms/SimplifyLibCalls/StrChr.ll index 56e6248..f526db4 100644 --- a/test/Transforms/SimplifyLibCalls/StrChr.ll +++ b/test/Transforms/SimplifyLibCalls/StrChr.ll @@ -1,22 +1,22 @@ ; Test that the StrChrOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*%strchr} -declare sbyte* %strchr(sbyte*,int) -declare int %puts(sbyte*) -%hello = constant [14 x sbyte] c"hello world\n\00" -%null = constant [1 x sbyte] c"\00" +@hello = constant [14 x i8] c"hello world\5Cn\00" ; <[14 x i8]*> [#uses=1] +@null = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=1] -implementation ; Functions: +declare i8* @strchr(i8*, i32) -int %main () { - %hello_p = getelementptr [14 x sbyte]* %hello, int 0, int 0 - %null_p = getelementptr [1 x sbyte]* %null, int 0, int 0 +declare i32 @puts(i8*) - %world = call sbyte* %strchr(sbyte* %hello_p, int 119 ) - %ignore = call sbyte* %strchr(sbyte* %null_p, int 119 ) - %len = call int %puts(sbyte* %world) - %index = add int %len, 112 - %result = call sbyte* %strchr(sbyte* %hello_p, int %index) - ret int %index +define i32 @main() { + %hello_p = getelementptr [14 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=2] + %null_p = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=1] + %world = call i8* @strchr( i8* %hello_p, i32 119 ) ; <i8*> [#uses=1] + %ignore = call i8* @strchr( i8* %null_p, i32 119 ) ; <i8*> [#uses=0] + %len = call i32 @puts( i8* %world ) ; <i32> [#uses=1] + %index = add i32 %len, 112 ; <i32> [#uses=2] + %result = call i8* @strchr( i8* %hello_p, i32 %index ) ; <i8*> [#uses=0] + ret i32 %index } + diff --git a/test/Transforms/SimplifyLibCalls/StrCmp.ll b/test/Transforms/SimplifyLibCalls/StrCmp.ll index ba2a4e0..ae28e4a 100644 --- a/test/Transforms/SimplifyLibCalls/StrCmp.ll +++ b/test/Transforms/SimplifyLibCalls/StrCmp.ll @@ -1,27 +1,28 @@ ; Test that the StrCmpOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*strcmp} -declare int %strcmp(sbyte*,sbyte*) -declare int %puts(sbyte*) -%hello = constant [6 x sbyte] c"hello\00" -%hell = constant [5 x sbyte] c"hell\00" -%null = constant [1 x sbyte] c"\00" +@hello = constant [6 x i8] c"hello\00" ; <[6 x i8]*> [#uses=1] +@hell = constant [5 x i8] c"hell\00" ; <[5 x i8]*> [#uses=1] +@null = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=1] -implementation ; Functions: +declare i32 @strcmp(i8*, i8*) -int %main () { - %hello_p = getelementptr [6 x sbyte]* %hello, int 0, int 0 - %hell_p = getelementptr [5 x sbyte]* %hell, int 0, int 0 - %null_p = getelementptr [1 x sbyte]* %null, int 0, int 0 - %temp1 = call int %strcmp(sbyte* %hello_p, sbyte* %hello_p) - %temp2 = call int %strcmp(sbyte* %null_p, sbyte* %null_p) - %temp3 = call int %strcmp(sbyte* %hello_p, sbyte* %null_p) - %temp4 = call int %strcmp(sbyte* %null_p, sbyte* %hello_p) - %temp5 = call int %strcmp(sbyte* %hell_p, sbyte* %hello_p) - %rslt1 = add int %temp1, %temp2 - %rslt2 = add int %rslt1, %temp3 - %rslt3 = add int %rslt2, %temp4 - %rslt4 = add int %rslt3, %temp5 - ret int %rslt4 +declare i32 @puts(i8*) + +define i32 @main() { + %hello_p = getelementptr [6 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=5] + %hell_p = getelementptr [5 x i8]* @hell, i32 0, i32 0 ; <i8*> [#uses=1] + %null_p = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=4] + %temp1 = call i32 @strcmp( i8* %hello_p, i8* %hello_p ) ; <i32> [#uses=1] + %temp2 = call i32 @strcmp( i8* %null_p, i8* %null_p ) ; <i32> [#uses=1] + %temp3 = call i32 @strcmp( i8* %hello_p, i8* %null_p ) ; <i32> [#uses=1] + %temp4 = call i32 @strcmp( i8* %null_p, i8* %hello_p ) ; <i32> [#uses=1] + %temp5 = call i32 @strcmp( i8* %hell_p, i8* %hello_p ) ; <i32> [#uses=1] + %rslt1 = add i32 %temp1, %temp2 ; <i32> [#uses=1] + %rslt2 = add i32 %rslt1, %temp3 ; <i32> [#uses=1] + %rslt3 = add i32 %rslt2, %temp4 ; <i32> [#uses=1] + %rslt4 = add i32 %rslt3, %temp5 ; <i32> [#uses=1] + ret i32 %rslt4 } + diff --git a/test/Transforms/SimplifyLibCalls/StrCpy.ll b/test/Transforms/SimplifyLibCalls/StrCpy.ll index 481dccf..f23582c 100644 --- a/test/Transforms/SimplifyLibCalls/StrCpy.ll +++ b/test/Transforms/SimplifyLibCalls/StrCpy.ll @@ -1,25 +1,26 @@ ; Test that the StrCpyOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*strcpy} -declare sbyte* %strcpy(sbyte*,sbyte*) -declare int %puts(sbyte*) -%hello = constant [6 x sbyte] c"hello\00" -%null = constant [1 x sbyte] c"\00" -%null_hello = constant [7 x sbyte] c"\00hello\00" +@hello = constant [6 x i8] c"hello\00" ; <[6 x i8]*> [#uses=1] +@null = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=1] +@null_hello = constant [7 x i8] c"\00hello\00" ; <[7 x i8]*> [#uses=1] -implementation ; Functions: +declare i8* @strcpy(i8*, i8*) -int %main () { - %target = alloca [1024 x sbyte] - %arg1 = getelementptr [1024 x sbyte]* %target, int 0, int 0 - store sbyte 0, sbyte* %arg1 - %arg2 = getelementptr [6 x sbyte]* %hello, int 0, int 0 - %rslt1 = call sbyte* %strcpy(sbyte* %arg1, sbyte* %arg2) - %arg3 = getelementptr [1 x sbyte]* %null, int 0, int 0 - %rslt2 = call sbyte* %strcpy(sbyte* %rslt1, sbyte* %arg3) - %arg4 = getelementptr [7 x sbyte]* %null_hello, int 0, int 0 - %rslt3 = call sbyte* %strcpy(sbyte* %rslt2, sbyte* %arg4) - call int %puts(sbyte* %rslt3) - ret int 0 +declare i32 @puts(i8*) + +define i32 @main() { + %target = alloca [1024 x i8] ; <[1024 x i8]*> [#uses=1] + %arg1 = getelementptr [1024 x i8]* %target, i32 0, i32 0 ; <i8*> [#uses=2] + store i8 0, i8* %arg1 + %arg2 = getelementptr [6 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=1] + %rslt1 = call i8* @strcpy( i8* %arg1, i8* %arg2 ) ; <i8*> [#uses=1] + %arg3 = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=1] + %rslt2 = call i8* @strcpy( i8* %rslt1, i8* %arg3 ) ; <i8*> [#uses=1] + %arg4 = getelementptr [7 x i8]* @null_hello, i32 0, i32 0 ; <i8*> [#uses=1] + %rslt3 = call i8* @strcpy( i8* %rslt2, i8* %arg4 ) ; <i8*> [#uses=1] + call i32 @puts( i8* %rslt3 ) ; <i32>:1 [#uses=0] + ret i32 0 } + diff --git a/test/Transforms/SimplifyLibCalls/StrLen.ll b/test/Transforms/SimplifyLibCalls/StrLen.ll index 98a76c8..521a224 100644 --- a/test/Transforms/SimplifyLibCalls/StrLen.ll +++ b/test/Transforms/SimplifyLibCalls/StrLen.ll @@ -1,58 +1,56 @@ ; Test that the StrCatOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*strlen} target datalayout = "e-p:32:32" +@hello = constant [6 x i8] c"hello\00" ; <[6 x i8]*> [#uses=3] +@null = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=3] +@null_hello = constant [7 x i8] c"\00hello\00" ; <[7 x i8]*> [#uses=1] -declare uint %strlen(sbyte*) -%hello = constant [6 x sbyte] c"hello\00" -%null = constant [1 x sbyte] c"\00" -%null_hello = constant [7 x sbyte] c"\00hello\00" +declare i32 @strlen(i8*) -implementation ; Functions: - -uint %test1() { - %hello_p = getelementptr [6 x sbyte]* %hello, int 0, int 0 - %hello_l = call uint %strlen(sbyte* %hello_p) - ret uint %hello_l +define i32 @test1() { + %hello_p = getelementptr [6 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=1] + %hello_l = call i32 @strlen( i8* %hello_p ) ; <i32> [#uses=1] + ret i32 %hello_l } -uint %test2() { - %null_p = getelementptr [1 x sbyte]* %null, int 0, int 0 - %null_l = call uint %strlen(sbyte* %null_p) - ret uint %null_l +define i32 @test2() { + %null_p = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=1] + %null_l = call i32 @strlen( i8* %null_p ) ; <i32> [#uses=1] + ret i32 %null_l } -uint %test3() { - %null_hello_p = getelementptr [7 x sbyte]* %null_hello, int 0, int 0 - %null_hello_l = call uint %strlen(sbyte* %null_hello_p) - ret uint %null_hello_l +define i32 @test3() { + %null_hello_p = getelementptr [7 x i8]* @null_hello, i32 0, i32 0 ; <i8*> [#uses=1] + %null_hello_l = call i32 @strlen( i8* %null_hello_p ) ; <i32> [#uses=1] + ret i32 %null_hello_l } -bool %test4() { - %hello_p = getelementptr [6 x sbyte]* %hello, int 0, int 0 - %hello_l = call uint %strlen(sbyte* %hello_p) - %eq_hello = seteq uint %hello_l, 0 - ret bool %eq_hello +define i1 @test4() { + %hello_p = getelementptr [6 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=1] + %hello_l = call i32 @strlen( i8* %hello_p ) ; <i32> [#uses=1] + %eq_hello = icmp eq i32 %hello_l, 0 ; <i1> [#uses=1] + ret i1 %eq_hello } -bool %test5() { - %null_p = getelementptr [1 x sbyte]* %null, int 0, int 0 - %null_l = call uint %strlen(sbyte* %null_p) - %eq_null = seteq uint %null_l, 0 - ret bool %eq_null +define i1 @test5() { + %null_p = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=1] + %null_l = call i32 @strlen( i8* %null_p ) ; <i32> [#uses=1] + %eq_null = icmp eq i32 %null_l, 0 ; <i1> [#uses=1] + ret i1 %eq_null } -bool %test6() { - %hello_p = getelementptr [6 x sbyte]* %hello, int 0, int 0 - %hello_l = call uint %strlen(sbyte* %hello_p) - %ne_hello = setne uint %hello_l, 0 - ret bool %ne_hello +define i1 @test6() { + %hello_p = getelementptr [6 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=1] + %hello_l = call i32 @strlen( i8* %hello_p ) ; <i32> [#uses=1] + %ne_hello = icmp ne i32 %hello_l, 0 ; <i1> [#uses=1] + ret i1 %ne_hello } -bool %test7() { - %null_p = getelementptr [1 x sbyte]* %null, int 0, int 0 - %null_l = call uint %strlen(sbyte* %null_p) - %ne_null = setne uint %null_l, 0 - ret bool %ne_null +define i1 @test7() { + %null_p = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=1] + %null_l = call i32 @strlen( i8* %null_p ) ; <i32> [#uses=1] + %ne_null = icmp ne i32 %null_l, 0 ; <i1> [#uses=1] + ret i1 %ne_null } diff --git a/test/Transforms/SimplifyLibCalls/StrNCmp.ll b/test/Transforms/SimplifyLibCalls/StrNCmp.ll index 7de3410f..f85394d 100644 --- a/test/Transforms/SimplifyLibCalls/StrNCmp.ll +++ b/test/Transforms/SimplifyLibCalls/StrNCmp.ll @@ -1,27 +1,28 @@ ; Test that the StrNCmpOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*strncmp} -declare int %strncmp(sbyte*,sbyte*,int) -declare int %puts(sbyte*) -%hello = constant [6 x sbyte] c"hello\00" -%hell = constant [5 x sbyte] c"hell\00" -%null = constant [1 x sbyte] c"\00" +@hello = constant [6 x i8] c"hello\00" ; <[6 x i8]*> [#uses=1] +@hell = constant [5 x i8] c"hell\00" ; <[5 x i8]*> [#uses=1] +@null = constant [1 x i8] zeroinitializer ; <[1 x i8]*> [#uses=1] -implementation ; Functions: +declare i32 @strncmp(i8*, i8*, i32) -int %main () { - %hello_p = getelementptr [6 x sbyte]* %hello, int 0, int 0 - %hell_p = getelementptr [5 x sbyte]* %hell, int 0, int 0 - %null_p = getelementptr [1 x sbyte]* %null, int 0, int 0 - %temp1 = call int %strncmp(sbyte* %hello_p, sbyte* %hello_p,int 5) - %temp2 = call int %strncmp(sbyte* %null_p, sbyte* %null_p,int 0) - %temp3 = call int %strncmp(sbyte* %hello_p, sbyte* %null_p,int 0) - %temp4 = call int %strncmp(sbyte* %null_p, sbyte* %hello_p,int 0) - %temp5 = call int %strncmp(sbyte* %hell_p, sbyte* %hello_p,int 4) - %rslt1 = add int %temp1, %temp2 - %rslt2 = add int %rslt1, %temp3 - %rslt3 = add int %rslt2, %temp4 - %rslt4 = add int %rslt3, %temp5 - ret int %rslt4 +declare i32 @puts(i8*) + +define i32 @main() { + %hello_p = getelementptr [6 x i8]* @hello, i32 0, i32 0 ; <i8*> [#uses=5] + %hell_p = getelementptr [5 x i8]* @hell, i32 0, i32 0 ; <i8*> [#uses=1] + %null_p = getelementptr [1 x i8]* @null, i32 0, i32 0 ; <i8*> [#uses=4] + %temp1 = call i32 @strncmp( i8* %hello_p, i8* %hello_p, i32 5 ) ; <i32> [#uses=1] + %temp2 = call i32 @strncmp( i8* %null_p, i8* %null_p, i32 0 ) ; <i32> [#uses=1] + %temp3 = call i32 @strncmp( i8* %hello_p, i8* %null_p, i32 0 ) ; <i32> [#uses=1] + %temp4 = call i32 @strncmp( i8* %null_p, i8* %hello_p, i32 0 ) ; <i32> [#uses=1] + %temp5 = call i32 @strncmp( i8* %hell_p, i8* %hello_p, i32 4 ) ; <i32> [#uses=1] + %rslt1 = add i32 %temp1, %temp2 ; <i32> [#uses=1] + %rslt2 = add i32 %rslt1, %temp3 ; <i32> [#uses=1] + %rslt3 = add i32 %rslt2, %temp4 ; <i32> [#uses=1] + %rslt4 = add i32 %rslt3, %temp5 ; <i32> [#uses=1] + ret i32 %rslt4 } + diff --git a/test/Transforms/SimplifyLibCalls/ToAscii.ll b/test/Transforms/SimplifyLibCalls/ToAscii.ll index 0bc2664..9200d2f 100644 --- a/test/Transforms/SimplifyLibCalls/ToAscii.ll +++ b/test/Transforms/SimplifyLibCalls/ToAscii.ll @@ -1,22 +1,21 @@ ; Test that the ToAsciiOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*toascii} -declare int %toascii(int) +declare i32 @toascii(i32) -implementation ; Functions: - -int %main () { - %val1 = call int %toascii(int 1) - %val2 = call int %toascii(int 0) - %val3 = call int %toascii(int 127) - %val4 = call int %toascii(int 128) - %val5 = call int %toascii(int 255) - %val6 = call int %toascii(int 256) - %rslt1 = add int %val1, %val2 - %rslt2 = add int %val3, %val4 - %rslt3 = add int %val5, %val6 - %rslt4 = add int %rslt1, %rslt2 - %rslt5 = add int %rslt4, %rslt3 - ret int %rslt5 +define i32 @main() { + %val1 = call i32 @toascii( i32 1 ) ; <i32> [#uses=1] + %val2 = call i32 @toascii( i32 0 ) ; <i32> [#uses=1] + %val3 = call i32 @toascii( i32 127 ) ; <i32> [#uses=1] + %val4 = call i32 @toascii( i32 128 ) ; <i32> [#uses=1] + %val5 = call i32 @toascii( i32 255 ) ; <i32> [#uses=1] + %val6 = call i32 @toascii( i32 256 ) ; <i32> [#uses=1] + %rslt1 = add i32 %val1, %val2 ; <i32> [#uses=1] + %rslt2 = add i32 %val3, %val4 ; <i32> [#uses=1] + %rslt3 = add i32 %val5, %val6 ; <i32> [#uses=1] + %rslt4 = add i32 %rslt1, %rslt2 ; <i32> [#uses=1] + %rslt5 = add i32 %rslt4, %rslt3 ; <i32> [#uses=1] + ret i32 %rslt5 } + diff --git a/test/Transforms/SimplifyLibCalls/floor.ll b/test/Transforms/SimplifyLibCalls/floor.ll index 2b940fd..9e9b154 100644 --- a/test/Transforms/SimplifyLibCalls/floor.ll +++ b/test/Transforms/SimplifyLibCalls/floor.ll @@ -1,4 +1,4 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis > %t +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis > %t ; RUN: not grep {call.*floor(} %t ; RUN: grep {call.*floorf(} %t ; RUN: not grep {call.*ceil(} %t @@ -7,28 +7,33 @@ ; RUN: grep {call.*nearbyintf(} %t ; XFAIL: sparc -declare double %floor(double) -declare double %ceil(double) -declare double %nearbyint(double) +declare double @floor(double) -float %test_floor(float %C) { - %D = cast float %C to double - %E = call double %floor(double %D) ; --> floorf - %F = cast double %E to float +declare double @ceil(double) + +declare double @nearbyint(double) + +define float @test_floor(float %C) { + %D = fpext float %C to double ; <double> [#uses=1] + ; --> floorf + %E = call double @floor( double %D ) ; <double> [#uses=1] + %F = fptrunc double %E to float ; <float> [#uses=1] ret float %F } -float %test_ceil(float %C) { - %D = cast float %C to double - %E = call double %ceil(double %D) ; --> ceilf - %F = cast double %E to float +define float @test_ceil(float %C) { + %D = fpext float %C to double ; <double> [#uses=1] + ; --> ceilf + %E = call double @ceil( double %D ) ; <double> [#uses=1] + %F = fptrunc double %E to float ; <float> [#uses=1] ret float %F } -float %test_nearbyint(float %C) { - %D = cast float %C to double - %E = call double %nearbyint(double %D) ; --> floorf - %F = cast double %E to float +define float @test_nearbyint(float %C) { + %D = fpext float %C to double ; <double> [#uses=1] + ; --> floorf + %E = call double @nearbyint( double %D ) ; <double> [#uses=1] + %F = fptrunc double %E to float ; <float> [#uses=1] ret float %F } diff --git a/test/Transforms/SimplifyLibCalls/memcmp.ll b/test/Transforms/SimplifyLibCalls/memcmp.ll index bea9eed..16ae0e7 100644 --- a/test/Transforms/SimplifyLibCalls/memcmp.ll +++ b/test/Transforms/SimplifyLibCalls/memcmp.ll @@ -1,24 +1,24 @@ ; Test that the memcmpOptimizer works correctly -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls | llvm-dis | \ +; RUN: llvm-as < %s | opt -simplify-libcalls | llvm-dis | \ ; RUN: not grep {call.*memcmp} -; RUN: llvm-upgrade < %s | llvm-as | opt -simplify-libcalls -disable-output +; RUN: llvm-as < %s | opt -simplify-libcalls -disable-output -declare int %memcmp(sbyte*,sbyte*,int) -%h = constant [2 x sbyte] c"h\00" -%hel = constant [4 x sbyte] c"hel\00" -%hello_u = constant [8 x sbyte] c"hello_u\00" +@h = constant [2 x i8] c"h\00" ; <[2 x i8]*> [#uses=0] +@hel = constant [4 x i8] c"hel\00" ; <[4 x i8]*> [#uses=0] +@hello_u = constant [8 x i8] c"hello_u\00" ; <[8 x i8]*> [#uses=0] -implementation +declare i32 @memcmp(i8*, i8*, i32) -void %test(sbyte *%P, sbyte *%Q, int %N, int* %IP, bool *%BP) { - %A = call int %memcmp(sbyte *%P, sbyte* %P, int %N) - volatile store int %A, int* %IP - %B = call int %memcmp(sbyte *%P, sbyte* %Q, int 0) - volatile store int %B, int* %IP - %C = call int %memcmp(sbyte *%P, sbyte* %Q, int 1) - volatile store int %C, int* %IP - %D = call int %memcmp(sbyte *%P, sbyte* %Q, int 2) - %E = seteq int %D, 0 - volatile store bool %E, bool* %BP - ret void +define void @test(i8* %P, i8* %Q, i32 %N, i32* %IP, i1* %BP) { + %A = call i32 @memcmp( i8* %P, i8* %P, i32 %N ) ; <i32> [#uses=1] + volatile store i32 %A, i32* %IP + %B = call i32 @memcmp( i8* %P, i8* %Q, i32 0 ) ; <i32> [#uses=1] + volatile store i32 %B, i32* %IP + %C = call i32 @memcmp( i8* %P, i8* %Q, i32 1 ) ; <i32> [#uses=1] + volatile store i32 %C, i32* %IP + %D = call i32 @memcmp( i8* %P, i8* %Q, i32 2 ) ; <i32> [#uses=1] + %E = icmp eq i32 %D, 0 ; <i1> [#uses=1] + volatile store i1 %E, i1* %BP + ret void } + diff --git a/test/Transforms/TailCallElim/accum_recursion.ll b/test/Transforms/TailCallElim/accum_recursion.ll index d82d963..e8c28ec 100644 --- a/test/Transforms/TailCallElim/accum_recursion.ll +++ b/test/Transforms/TailCallElim/accum_recursion.ll @@ -1,17 +1,15 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailcallelim | llvm-dis | not grep call +; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | not grep call -int %factorial(int %x) { +define i32 @factorial(i32 %x) { entry: - %tmp.1 = setgt int %x, 0 - br bool %tmp.1, label %then, label %else - -then: - %tmp.6 = add int %x, -1 - %tmp.4 = call int %factorial( int %tmp.6 ) - %tmp.7 = mul int %tmp.4, %x - ret int %tmp.7 - -else: - ret int 1 + %tmp.1 = icmp sgt i32 %x, 0 ; <i1> [#uses=1] + br i1 %tmp.1, label %then, label %else +then: ; preds = %entry + %tmp.6 = add i32 %x, -1 ; <i32> [#uses=1] + %tmp.4 = call i32 @factorial( i32 %tmp.6 ) ; <i32> [#uses=1] + %tmp.7 = mul i32 %tmp.4, %x ; <i32> [#uses=1] + ret i32 %tmp.7 +else: ; preds = %entry + ret i32 1 } diff --git a/test/Transforms/TailCallElim/accum_recursion_constant_arg.ll b/test/Transforms/TailCallElim/accum_recursion_constant_arg.ll index b103d89..4d63b59 100644 --- a/test/Transforms/TailCallElim/accum_recursion_constant_arg.ll +++ b/test/Transforms/TailCallElim/accum_recursion_constant_arg.ll @@ -3,20 +3,18 @@ ; go out to the anonymous users of the demo script for "suggesting" ; optimizations that should be done. :) -; RUN: llvm-upgrade < %s | llvm-as | opt -tailcallelim | llvm-dis | not grep call +; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | not grep call -int %mul(int %x, int %y) { +define i32 @mul(i32 %x, i32 %y) { entry: - %tmp.1 = seteq int %y, 0 - br bool %tmp.1, label %return, label %endif - -endif: - %tmp.8 = add int %y, -1 - %tmp.5 = call int %mul( int %x, int %tmp.8 ) - %tmp.9 = add int %tmp.5, %x - ret int %tmp.9 - -return: - ret int %x + %tmp.1 = icmp eq i32 %y, 0 ; <i1> [#uses=1] + br i1 %tmp.1, label %return, label %endif +endif: ; preds = %entry + %tmp.8 = add i32 %y, -1 ; <i32> [#uses=1] + %tmp.5 = call i32 @mul( i32 %x, i32 %tmp.8 ) ; <i32> [#uses=1] + %tmp.9 = add i32 %tmp.5, %x ; <i32> [#uses=1] + ret i32 %tmp.9 +return: ; preds = %entry + ret i32 %x } diff --git a/test/Transforms/TailCallElim/ackermann.ll b/test/Transforms/TailCallElim/ackermann.ll index dd6e276..f65c666 100644 --- a/test/Transforms/TailCallElim/ackermann.ll +++ b/test/Transforms/TailCallElim/ackermann.ll @@ -1,30 +1,26 @@ ; This function contains two tail calls, which should be eliminated -; RUN: llvm-upgrade < %s | llvm-as | \ +; RUN: llvm-as < %s | \ ; RUN: opt -tailcallelim -stats -disable-output |& grep {2 tailcallelim} -int %Ack(int %M.1, int %N.1) { +define i32 @Ack(i32 %M.1, i32 %N.1) { entry: - %tmp.1 = seteq int %M.1, 0 ; <bool> [#uses=1] - br bool %tmp.1, label %then.0, label %endif.0 - -then.0: - %tmp.4 = add int %N.1, 1 ; <int> [#uses=1] - ret int %tmp.4 - -endif.0: - %tmp.6 = seteq int %N.1, 0 ; <bool> [#uses=1] - br bool %tmp.6, label %then.1, label %endif.1 - -then.1: - %tmp.10 = add int %M.1, -1 ; <int> [#uses=1] - %tmp.8 = call int %Ack( int %tmp.10, int 1 ) ; <int> [#uses=1] - ret int %tmp.8 - -endif.1: - %tmp.13 = add int %M.1, -1 ; <int> [#uses=1] - %tmp.17 = add int %N.1, -1 ; <int> [#uses=1] - %tmp.14 = call int %Ack( int %M.1, int %tmp.17 ) ; <int> [#uses=1] - %tmp.11 = call int %Ack( int %tmp.13, int %tmp.14 ) ; <int> [#uses=1] - ret int %tmp.11 + %tmp.1 = icmp eq i32 %M.1, 0 ; <i1> [#uses=1] + br i1 %tmp.1, label %then.0, label %endif.0 +then.0: ; preds = %entry + %tmp.4 = add i32 %N.1, 1 ; <i32> [#uses=1] + ret i32 %tmp.4 +endif.0: ; preds = %entry + %tmp.6 = icmp eq i32 %N.1, 0 ; <i1> [#uses=1] + br i1 %tmp.6, label %then.1, label %endif.1 +then.1: ; preds = %endif.0 + %tmp.10 = add i32 %M.1, -1 ; <i32> [#uses=1] + %tmp.8 = call i32 @Ack( i32 %tmp.10, i32 1 ) ; <i32> [#uses=1] + ret i32 %tmp.8 +endif.1: ; preds = %endif.0 + %tmp.13 = add i32 %M.1, -1 ; <i32> [#uses=1] + %tmp.17 = add i32 %N.1, -1 ; <i32> [#uses=1] + %tmp.14 = call i32 @Ack( i32 %M.1, i32 %tmp.17 ) ; <i32> [#uses=1] + %tmp.11 = call i32 @Ack( i32 %tmp.13, i32 %tmp.14 ) ; <i32> [#uses=1] + ret i32 %tmp.11 } diff --git a/test/Transforms/TailCallElim/dont-tce-tail-marked-call.ll b/test/Transforms/TailCallElim/dont-tce-tail-marked-call.ll index d3ba65e..e20fe18 100644 --- a/test/Transforms/TailCallElim/dont-tce-tail-marked-call.ll +++ b/test/Transforms/TailCallElim/dont-tce-tail-marked-call.ll @@ -1,12 +1,13 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailcallelim | llvm-dis | \ +; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | \ ; RUN: grep {call i32 @foo} -declare void %bar(int*) -int %foo(uint %N) { - %A = alloca int, uint %N ;; Should stay in entry block because of 'tail' marker - store int 17, int* %A - call void %bar(int* %A) +declare void @bar(i32*) - %X = tail call int %foo(uint %N) ;; Cannot -tailcallelim this without increasing stack usage! - ret int %X +define i32 @foo(i32 %N) { + %A = alloca i32, i32 %N ; <i32*> [#uses=2] + store i32 17, i32* %A + call void @bar( i32* %A ) + %X = tail call i32 @foo( i32 %N ) ; <i32> [#uses=1] + ret i32 %X } + diff --git a/test/Transforms/TailCallElim/intervening-inst.ll b/test/Transforms/TailCallElim/intervening-inst.ll index a480e3b..ae4f509 100644 --- a/test/Transforms/TailCallElim/intervening-inst.ll +++ b/test/Transforms/TailCallElim/intervening-inst.ll @@ -1,19 +1,17 @@ ; This function contains intervening instructions which should be moved out of the way -; RUN: llvm-upgrade < %s | llvm-as | opt -tailcallelim | llvm-dis | not grep call +; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | not grep call -int %Test(int %X) { +define i32 @Test(i32 %X) { entry: - %tmp.1 = seteq int %X, 0 - br bool %tmp.1, label %then.0, label %endif.0 - -then.0: - %tmp.4 = add int %X, 1 - ret int %tmp.4 - -endif.0: - %tmp.10 = add int %X, -1 - %tmp.8 = call int %Test(int %tmp.10) - %DUMMY = add int %X, 1 ;; This should not prevent elimination - ret int %tmp.8 + %tmp.1 = icmp eq i32 %X, 0 ; <i1> [#uses=1] + br i1 %tmp.1, label %then.0, label %endif.0 +then.0: ; preds = %entry + %tmp.4 = add i32 %X, 1 ; <i32> [#uses=1] + ret i32 %tmp.4 +endif.0: ; preds = %entry + %tmp.10 = add i32 %X, -1 ; <i32> [#uses=1] + %tmp.8 = call i32 @Test( i32 %tmp.10 ) ; <i32> [#uses=1] + %DUMMY = add i32 %X, 1 ; <i32> [#uses=0] + ret i32 %tmp.8 } diff --git a/test/Transforms/TailCallElim/move_alloca_for_tail_call.ll b/test/Transforms/TailCallElim/move_alloca_for_tail_call.ll index 1b1f0d0..bd2b93f 100644 --- a/test/Transforms/TailCallElim/move_alloca_for_tail_call.ll +++ b/test/Transforms/TailCallElim/move_alloca_for_tail_call.ll @@ -1,12 +1,13 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailcallelim | llvm-dis | \ +; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | \ ; RUN: %prcontext alloca 1 | grep {i32 @foo} -declare void %bar(int*) -int %foo() { - %A = alloca int ;; Should stay in entry block because of 'tail' marker - store int 17, int* %A - call void %bar(int* %A) +declare void @bar(i32*) - %X = tail call int %foo() - ret int %X +define i32 @foo() { + %A = alloca i32 ; <i32*> [#uses=2] + store i32 17, i32* %A + call void @bar( i32* %A ) + %X = tail call i32 @foo( ) ; <i32> [#uses=1] + ret i32 %X } + diff --git a/test/Transforms/TailCallElim/return_constant.ll b/test/Transforms/TailCallElim/return_constant.ll index 5802024..ab69a42 100644 --- a/test/Transforms/TailCallElim/return_constant.ll +++ b/test/Transforms/TailCallElim/return_constant.ll @@ -1,19 +1,17 @@ ; Though this case seems to be fairly unlikely to occur in the wild, someone ; plunked it into the demo script, so maybe they care about it. ; -; RUN: llvm-upgrade < %s | llvm-as | opt -tailcallelim | llvm-dis | not grep call +; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | not grep call -int %aaa(int %c) { +define i32 @aaa(i32 %c) { entry: - %tmp.1 = seteq int %c, 0 ; <bool> [#uses=1] - br bool %tmp.1, label %return, label %else - -else: ; preds = %entry - %tmp.5 = add int %c, -1 ; <int> [#uses=1] - %tmp.3 = call int %aaa( int %tmp.5 ) ; <int> [#uses=0] - ret int 0 - -return: ; preds = %entry - ret int 0 + %tmp.1 = icmp eq i32 %c, 0 ; <i1> [#uses=1] + br i1 %tmp.1, label %return, label %else +else: ; preds = %entry + %tmp.5 = add i32 %c, -1 ; <i32> [#uses=1] + %tmp.3 = call i32 @aaa( i32 %tmp.5 ) ; <i32> [#uses=0] + ret i32 0 +return: ; preds = %entry + ret i32 0 } diff --git a/test/Transforms/TailCallElim/trivial_codegen_tailcall.ll b/test/Transforms/TailCallElim/trivial_codegen_tailcall.ll index 98c2332..90a8163 100644 --- a/test/Transforms/TailCallElim/trivial_codegen_tailcall.ll +++ b/test/Transforms/TailCallElim/trivial_codegen_tailcall.ll @@ -1,12 +1,11 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailcallelim | llvm-dis | \ +; RUN: llvm-as < %s | opt -tailcallelim | llvm-dis | \ ; RUN: grep {tail call void @foo} -declare void %foo() +declare void @foo() -void %bar() { - call void %foo() +define void @bar() { + call void @foo( ) ret void } - diff --git a/test/Transforms/TailDup/2003-06-24-Simpleloop.ll b/test/Transforms/TailDup/2003-06-24-Simpleloop.ll index e2b979c..5c3b539 100644 --- a/test/Transforms/TailDup/2003-06-24-Simpleloop.ll +++ b/test/Transforms/TailDup/2003-06-24-Simpleloop.ll @@ -1,18 +1,15 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate -disable-output +; RUN: llvm-as < %s | opt -tailduplicate -disable-output -void %motion_result7() { +define void @motion_result7() { entry: - br label %endif - -endif: - %i.1 = phi int [ %inc, %no_exit ], [ 0, %entry ] - %inc = add int %i.1, 1 - br bool false, label %no_exit, label %UnifiedExitNode - -no_exit: - br bool false, label %UnifiedExitNode, label %endif - -UnifiedExitNode: - ret void + br label %endif +endif: ; preds = %no_exit, %entry + %i.1 = phi i32 [ %inc, %no_exit ], [ 0, %entry ] ; <i32> [#uses=1] + %inc = add i32 %i.1, 1 ; <i32> [#uses=1] + br i1 false, label %no_exit, label %UnifiedExitNode +no_exit: ; preds = %endif + br i1 false, label %UnifiedExitNode, label %endif +UnifiedExitNode: ; preds = %no_exit, %endif + ret void } diff --git a/test/Transforms/TailDup/2003-07-22-InfiniteLoop.ll b/test/Transforms/TailDup/2003-07-22-InfiniteLoop.ll index 4d65069..705f8bc 100644 --- a/test/Transforms/TailDup/2003-07-22-InfiniteLoop.ll +++ b/test/Transforms/TailDup/2003-07-22-InfiniteLoop.ll @@ -1,13 +1,11 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate -disable-output +; RUN: llvm-as < %s | opt -tailduplicate -disable-output -implementation - -int %sum() { +define i32 @sum() { entry: br label %loopentry - -loopentry: - %i.0 = phi int [ 1, %entry ], [ %tmp.3, %loopentry ] - %tmp.3 = add int %i.0, 1 +loopentry: ; preds = %loopentry, %entry + %i.0 = phi i32 [ 1, %entry ], [ %tmp.3, %loopentry ] ; <i32> [#uses=1] + %tmp.3 = add i32 %i.0, 1 ; <i32> [#uses=1] br label %loopentry } + diff --git a/test/Transforms/TailDup/2003-08-23-InvalidatedPointers.ll b/test/Transforms/TailDup/2003-08-23-InvalidatedPointers.ll index 72e03e1..1fae77b 100644 --- a/test/Transforms/TailDup/2003-08-23-InvalidatedPointers.ll +++ b/test/Transforms/TailDup/2003-08-23-InvalidatedPointers.ll @@ -1,40 +1,29 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate -disable-output - -implementation - -int %sell_haggle() { -entry: ; No predecessors! - br bool false, label %then.5, label %UnifiedExitNode +; RUN: llvm-as < %s | opt -tailduplicate -disable-output +define i32 @sell_haggle() { +entry: + br i1 false, label %then.5, label %UnifiedExitNode then.5: ; preds = %entry - br bool false, label %loopentry.1.preheader, label %else.1 - + br i1 false, label %loopentry.1.preheader, label %else.1 else.1: ; preds = %then.5 br label %loopentry.1.preheader - -loopentry.1.preheader: ; preds = %then.5, %else.1 - %final_ask.0 = phi int [ 0, %else.1 ], [ 0, %then.5 ] ; <int> [#uses=2] +loopentry.1.preheader: ; preds = %else.1, %then.5 + %final_ask.0 = phi i32 [ 0, %else.1 ], [ 0, %then.5 ] ; <i32> [#uses=2] br label %loopentry.1 - -loopentry.1: ; preds = %loopentry.1.preheader, %endif.17 - switch uint 0, label %UnifiedExitNode [ - uint 2, label %UnifiedExitNode - uint 1, label %endif.16 +loopentry.1: ; preds = %endif.17, %loopentry.1.preheader + switch i32 0, label %UnifiedExitNode [ + i32 2, label %UnifiedExitNode + i32 1, label %endif.16 ] - endif.16: ; preds = %loopentry.1 - br bool false, label %then.17, label %UnifiedExitNode - + br i1 false, label %then.17, label %UnifiedExitNode then.17: ; preds = %endif.16 - br bool false, label %then.18, label %endif.17 - + br i1 false, label %then.18, label %endif.17 then.18: ; preds = %then.17 - br bool false, label %endif.17, label %UnifiedExitNode - -endif.17: ; preds = %then.17, %then.18 - %cur_ask.3 = phi int [ %final_ask.0, %then.17 ], [ %final_ask.0, %then.18 ] ; <int> [#uses=0] - br bool false, label %loopentry.1, label %UnifiedExitNode - -UnifiedExitNode: ; preds = %entry, %endif.17, %then.18, %endif.16, %loopentry.1, %loopentry.1 - ret int 0 + br i1 false, label %endif.17, label %UnifiedExitNode +endif.17: ; preds = %then.18, %then.17 + %cur_ask.3 = phi i32 [ %final_ask.0, %then.17 ], [ %final_ask.0, %then.18 ] ; <i32> [#uses=0] + br i1 false, label %loopentry.1, label %UnifiedExitNode +UnifiedExitNode: ; preds = %endif.17, %then.18, %endif.16, %loopentry.1, %loopentry.1, %entry + ret i32 0 } diff --git a/test/Transforms/TailDup/2003-08-31-UnreachableBlocks.ll b/test/Transforms/TailDup/2003-08-31-UnreachableBlocks.ll index 416a5df..e464713 100644 --- a/test/Transforms/TailDup/2003-08-31-UnreachableBlocks.ll +++ b/test/Transforms/TailDup/2003-08-31-UnreachableBlocks.ll @@ -1,20 +1,17 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate -disable-output +; RUN: llvm-as < %s | opt -tailduplicate -disable-output -int %foo() { +define i32 @foo() { entry: br label %return.i - -after_ret.i: +after_ret.i: ; No predecessors! br label %return.i - -return.i: - %tmp.3 = cast int* null to int +return.i: ; preds = %after_ret.i, %entry + %tmp.3 = ptrtoint i32* null to i32 ; <i32> [#uses=1] br label %return.i1 - -after_ret.i1: +after_ret.i1: ; No predecessors! br label %return.i1 - -return.i1: - %tmp.8 = sub int %tmp.3, 0 - ret int 0 +return.i1: ; preds = %after_ret.i1, %return.i + %tmp.8 = sub i32 %tmp.3, 0 ; <i32> [#uses=0] + ret i32 0 } + diff --git a/test/Transforms/TailDup/2004-04-01-DemoteRegToStack.llx b/test/Transforms/TailDup/2004-04-01-DemoteRegToStack.llx index 4ea8490..81624ff 100644 --- a/test/Transforms/TailDup/2004-04-01-DemoteRegToStack.llx +++ b/test/Transforms/TailDup/2004-04-01-DemoteRegToStack.llx @@ -1,22 +1,20 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate -disable-output +; RUN: llvm-as < %s | opt -tailduplicate -disable-output -void %interpret() { +define void @interpret() { entry: br label %retry - -retry: - %tmp.8 = call int %interp() - switch uint 0, label %endif.4 [ - uint 4294967271, label %return - uint 4294967280, label %return +retry: ; preds = %endif.4, %entry + %tmp.8 = call i32 @interp( ) ; <i32> [#uses=3] + switch i32 0, label %endif.4 [ + i32 -25, label %return + i32 -16, label %return ] - -endif.4: - br bool false, label %return, label %retry - -return: - %result.0 = phi int [ %tmp.8, %retry ], [%tmp.8, %retry], [ %tmp.8, %endif.4 ] +endif.4: ; preds = %retry + br i1 false, label %return, label %retry +return: ; preds = %endif.4, %retry, %retry + %result.0 = phi i32 [ %tmp.8, %retry ], [ %tmp.8, %retry ], [ %tmp.8, %endif.4 ] ; <i32> [#uses=0] ret void } -declare int %interp() +declare i32 @interp() + diff --git a/test/Transforms/TailDup/MergeTest.ll b/test/Transforms/TailDup/MergeTest.ll index c11d735..252bf56 100644 --- a/test/Transforms/TailDup/MergeTest.ll +++ b/test/Transforms/TailDup/MergeTest.ll @@ -1,31 +1,27 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate | llvm-dis | grep add | not grep uses=1 +; RUN: llvm-as < %s | opt -tailduplicate | llvm-dis | grep add | not grep uses=1 -int %test1(bool %C, int %A, int* %P) { +define i32 @test1(i1 %C, i32 %A, i32* %P) { entry: - br bool %C, label %L1, label %L2 - -L1: - store int 1, int* %P - br label %L2 - -L2: - %X = add int %A, 17 - ret int %X + br i1 %C, label %L1, label %L2 +L1: ; preds = %entry + store i32 1, i32* %P + br label %L2 +L2: ; preds = %L1, %entry + %X = add i32 %A, 17 ; <i32> [#uses=1] + ret i32 %X } -int %test2(bool %C, int %A, int* %P) { +define i32 @test2(i1 %C, i32 %A, i32* %P) { entry: - br bool %C, label %L1, label %L2 - -L1: - store int 1, int* %P - br label %L3 - -L2: - store int 7, int* %P + br i1 %C, label %L1, label %L2 +L1: ; preds = %entry + store i32 1, i32* %P + br label %L3 +L2: ; preds = %entry + store i32 7, i32* %P br label %L3 -L3: - %X = add int %A, 17 - ret int %X +L3: ; preds = %L2, %L1 + %X = add i32 %A, 17 ; <i32> [#uses=1] + ret i32 %X } diff --git a/test/Transforms/TailDup/PHIUpdateTest.ll b/test/Transforms/TailDup/PHIUpdateTest.ll index ae591a0..6f86587 100644 --- a/test/Transforms/TailDup/PHIUpdateTest.ll +++ b/test/Transforms/TailDup/PHIUpdateTest.ll @@ -1,20 +1,16 @@ ; This test checks to make sure phi nodes are updated properly ; -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate -disable-output +; RUN: llvm-as < %s | opt -tailduplicate -disable-output - - -int %test(bool %c, int %X, int %Y) { +define i32 @test(i1 %c, i32 %X, i32 %Y) { br label %L - -L: - %A = add int %X, %Y - br bool %c, label %T, label %F - -F: - br bool %c, label %L, label %T - -T: - %V = phi int [%A, %L], [0, %F] - ret int %V +L: ; preds = %F, %0 + %A = add i32 %X, %Y ; <i32> [#uses=1] + br i1 %c, label %T, label %F +F: ; preds = %L + br i1 %c, label %L, label %T +T: ; preds = %F, %L + %V = phi i32 [ %A, %L ], [ 0, %F ] ; <i32> [#uses=1] + ret i32 %V } + diff --git a/test/Transforms/TailDup/basictest.ll b/test/Transforms/TailDup/basictest.ll index 085acf5..ef36890 100644 --- a/test/Transforms/TailDup/basictest.ll +++ b/test/Transforms/TailDup/basictest.ll @@ -1,22 +1,20 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate -disable-output +; RUN: llvm-as < %s | opt -tailduplicate -disable-output -declare void %__main() +declare void @__main() -int %main() { -entry: ; No predecessors! - call void %__main( ) +define i32 @main() { +entry: + call void @__main( ) br label %loopentry - -loopentry: ; preds = %entry, %no_exit - %i.0 = phi int [ %inc, %no_exit ], [ 0, %entry ] ; <int> [#uses=2] - %tmp.1 = setle int %i.0, 99 ; <bool> [#uses=1] - br bool %tmp.1, label %no_exit, label %return - +loopentry: ; preds = %no_exit, %entry + %i.0 = phi i32 [ %inc, %no_exit ], [ 0, %entry ] ; <i32> [#uses=3] + %tmp.1 = icmp sle i32 %i.0, 99 ; <i1> [#uses=1] + br i1 %tmp.1, label %no_exit, label %return no_exit: ; preds = %loopentry - %tmp.51 = call int %main( ) ; <int> [#uses=0] - %inc = add int %i.0, 1 ; <int> [#uses=1] + %tmp.51 = call i32 @main( ) ; <i32> [#uses=0] + %inc = add i32 %i.0, 1 ; <i32> [#uses=1] br label %loopentry - return: ; preds = %loopentry - ret int %i.0 + ret i32 %i.0 } + diff --git a/test/Transforms/TailDup/basictest2.ll b/test/Transforms/TailDup/basictest2.ll index c67b3d5..f79d718 100644 --- a/test/Transforms/TailDup/basictest2.ll +++ b/test/Transforms/TailDup/basictest2.ll @@ -1,17 +1,15 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate -disable-output +; RUN: llvm-as < %s | opt -tailduplicate -disable-output -void %ab() { +define void @ab() { entry: br label %loopentry.5 - -loopentry.5: - %poscnt.1 = phi long [ 0, %entry ], [ %tmp.289, %no_exit.5 ] - %tmp.289 = shr long %poscnt.1, ubyte 1 - br bool false, label %no_exit.5, label %loopexit.5 - -no_exit.5: +loopentry.5: ; preds = %no_exit.5, %entry + %poscnt.1 = phi i64 [ 0, %entry ], [ %tmp.289, %no_exit.5 ] ; <i64> [#uses=1] + %tmp.289 = ashr i64 %poscnt.1, 1 ; <i64> [#uses=1] + br i1 false, label %no_exit.5, label %loopexit.5 +no_exit.5: ; preds = %loopentry.5 br label %loopentry.5 - -loopexit.5: +loopexit.5: ; preds = %loopentry.5 ret void } + diff --git a/test/Transforms/TailDup/if-tail-dup.ll b/test/Transforms/TailDup/if-tail-dup.ll index 952a2e8..7c4d9c2 100644 --- a/test/Transforms/TailDup/if-tail-dup.ll +++ b/test/Transforms/TailDup/if-tail-dup.ll @@ -1,4 +1,4 @@ -; RUN: llvm-upgrade < %s | llvm-as | opt -tailduplicate | \ +; RUN: llvm-as < %s | opt -tailduplicate | \ ; RUN: llc -march=x86 -o %t -f ; RUN: grep {\\\<je\\\>} %t ; RUN: not grep jmp %t @@ -12,50 +12,38 @@ ; if (c & 8) P[3] = 1; ;} -implementation - -void %foo(int %c, int* %P) { +define void @foo(i32 %c, i32* %P) { entry: - %tmp1 = and int %c, 1 ; <int> [#uses=1] - %tmp1 = seteq int %tmp1, 0 ; <bool> [#uses=1] - br bool %tmp1, label %cond_next, label %cond_true - -cond_true: ; preds = %entry - store int 1, int* %P - br label %cond_next - -cond_next: ; preds = %entry, %cond_true - %tmp5 = and int %c, 2 ; <int> [#uses=1] - %tmp5 = seteq int %tmp5, 0 ; <bool> [#uses=1] - br bool %tmp5, label %cond_next10, label %cond_true6 - -cond_true6: ; preds = %cond_next - %tmp8 = getelementptr int* %P, int 1 ; <int*> [#uses=1] - store int 1, int* %tmp8 - br label %cond_next10 - -cond_next10: ; preds = %cond_next, %cond_true6 - %tmp13 = and int %c, 4 ; <int> [#uses=1] - %tmp13 = seteq int %tmp13, 0 ; <bool> [#uses=1] - br bool %tmp13, label %cond_next18, label %cond_true14 - -cond_true14: ; preds = %cond_next10 - %tmp16 = getelementptr int* %P, int 2 ; <int*> [#uses=1] - store int 1, int* %tmp16 - br label %cond_next18 - -cond_next18: ; preds = %cond_next10, %cond_true14 - %tmp21 = and int %c, 8 ; <int> [#uses=1] - %tmp21 = seteq int %tmp21, 0 ; <bool> [#uses=1] - br bool %tmp21, label %return, label %cond_true22 - -cond_true22: ; preds = %cond_next18 - %tmp24 = getelementptr int* %P, int 3 ; <int*> [#uses=1] - store int 1, int* %tmp24 - ret void - -return: ; preds = %cond_next18 - ret void + %tmp1 = and i32 %c, 1 ; <i32> [#uses=1] + %tmp1.upgrd.1 = icmp eq i32 %tmp1, 0 ; <i1> [#uses=1] + br i1 %tmp1.upgrd.1, label %cond_next, label %cond_true +cond_true: ; preds = %entry + store i32 1, i32* %P + br label %cond_next +cond_next: ; preds = %cond_true, %entry + %tmp5 = and i32 %c, 2 ; <i32> [#uses=1] + %tmp5.upgrd.2 = icmp eq i32 %tmp5, 0 ; <i1> [#uses=1] + br i1 %tmp5.upgrd.2, label %cond_next10, label %cond_true6 +cond_true6: ; preds = %cond_next + %tmp8 = getelementptr i32* %P, i32 1 ; <i32*> [#uses=1] + store i32 1, i32* %tmp8 + br label %cond_next10 +cond_next10: ; preds = %cond_true6, %cond_next + %tmp13 = and i32 %c, 4 ; <i32> [#uses=1] + %tmp13.upgrd.3 = icmp eq i32 %tmp13, 0 ; <i1> [#uses=1] + br i1 %tmp13.upgrd.3, label %cond_next18, label %cond_true14 +cond_true14: ; preds = %cond_next10 + %tmp16 = getelementptr i32* %P, i32 2 ; <i32*> [#uses=1] + store i32 1, i32* %tmp16 + br label %cond_next18 +cond_next18: ; preds = %cond_true14, %cond_next10 + %tmp21 = and i32 %c, 8 ; <i32> [#uses=1] + %tmp21.upgrd.4 = icmp eq i32 %tmp21, 0 ; <i1> [#uses=1] + br i1 %tmp21.upgrd.4, label %return, label %cond_true22 +cond_true22: ; preds = %cond_next18 + %tmp24 = getelementptr i32* %P, i32 3 ; <i32*> [#uses=1] + store i32 1, i32* %tmp24 + ret void +return: ; preds = %cond_next18 + ret void } - - diff --git a/test/Verifier/invoke-1.ll b/test/Verifier/invoke-1.ll index 36bb9d0..427abe0 100644 --- a/test/Verifier/invoke-1.ll +++ b/test/Verifier/invoke-1.ll @@ -1,10 +1,10 @@ -; RUN: llvm-upgrade < %s | not llvm-as |& grep {not verify as correct} +; RUN: not llvm-as < %s |& grep {not verify as correct} ; PR1042 -int %foo() { - %A = invoke int %foo( ) - to label %L unwind label %L ; <int> [#uses=1] - -L: ; preds = %0, %0 - ret int %A +define i32 @foo() { + %A = invoke i32 @foo( ) + to label %L unwind label %L ; <i32> [#uses=1] +L: ; preds = %0, %0 + ret i32 %A } + diff --git a/test/Verifier/invoke-2.ll b/test/Verifier/invoke-2.ll index e544eed..27375fa 100644 --- a/test/Verifier/invoke-2.ll +++ b/test/Verifier/invoke-2.ll @@ -1,13 +1,14 @@ -; RUN: llvm-upgrade < %s | not llvm-as -f |& grep {not verify as correct} +; RUN: not llvm-as < %s -f |& grep {not verify as correct} ; PR1042 -int %foo() { - br bool false, label %L1, label %L2 -L1: - %A = invoke int %foo() to label %L unwind label %L - -L2: - br label %L -L: - ret int %A +define i32 @foo() { + br i1 false, label %L1, label %L2 +L1: ; preds = %0 + %A = invoke i32 @foo( ) + to label %L unwind label %L ; <i32> [#uses=1] +L2: ; preds = %0 + br label %L +L: ; preds = %L2, %L1, %L1 + ret i32 %A } + |