Make test work on non-x86 machines (like my G4 PPC).
[oota-llvm.git] / test / DebugInfo / funccall.ll
index cb5dab62caf79d95e36134ab75ed59b36cbe42fc..47fe4c2498c513aba3c1aa2f6852039de04bff85 100644 (file)
-;; 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
 }