Chris Lattner | 94276b6 | 2004-01-05 05:32:40 +0000 | [diff] [blame^] | 1 | %lldb.compile_unit = type { uint, ushort, ushort, sbyte*, sbyte*, sbyte*, { }* } |
| 2 | %lldb.global = type { uint, %lldb.compile_unit*, sbyte*, { }*, sbyte*, bool } |
| 3 | %lldb.local = type { %lldb.global*, sbyte*, sbyte* } |
| 4 | %llvm.dbg.translation_units = linkonce global { } { } ; <{ }*> [#uses=1] |
| 5 | %llvm.dbg.globals = linkonce global { } { } ; <{ }*> [#uses=1] |
| 6 | %.str_1 = internal constant [11 x sbyte] c"funccall.c\00" ; <[11 x sbyte]*> [#uses=1] |
| 7 | %.str_2 = internal constant [12 x sbyte] c"/home/sabre\00" ; <[12 x sbyte]*> [#uses=1] |
| 8 | %.str_3 = internal constant [14 x sbyte] c"llvmgcc 3.4.x\00" ; <[14 x sbyte]*> [#uses=1] |
| 9 | %d.compile_unit = internal constant %lldb.compile_unit { uint 17, ushort 0, ushort 1, sbyte* getelementptr ([11 x sbyte]* %.str_1, long 0, long 0), sbyte* getelementptr ([12 x sbyte]* %.str_2, long 0, long 0), sbyte* getelementptr ([14 x sbyte]* %.str_3, long 0, long 0), { }* %llvm.dbg.translation_units } ; <%lldb.compile_unit*> [#uses=9] |
| 10 | %.str_5 = internal global [5 x sbyte] c"main\00" ; <[5 x sbyte]*> [#uses=1] |
| 11 | %.str_6 = internal global [4 x sbyte] c"foo\00" ; <[4 x sbyte]*> [#uses=1] |
| 12 | %.str_7 = internal global [2 x sbyte] c"q\00" ; <[2 x sbyte]*> [#uses=1] |
| 13 | %d.main = global %lldb.global { uint 46, %lldb.compile_unit* %d.compile_unit, sbyte* getelementptr ([5 x sbyte]* %.str_5, long 0, long 0), { }* %llvm.dbg.globals, sbyte* null, bool true } ; <%lldb.global*> [#uses=1] |
| 14 | %d.foo = global %lldb.global { uint 46, %lldb.compile_unit* %d.compile_unit, sbyte* getelementptr ([4 x sbyte]* %.str_6, long 0, long 0), { }* %llvm.dbg.globals, sbyte* null, bool true } ; <%lldb.global*> [#uses=1] |
| 15 | %q = internal global int 0 ; <int*> [#uses=7] |
| 16 | %d.q = internal global { %lldb.global, int* } { %lldb.global { uint 52, %lldb.compile_unit* %d.compile_unit, sbyte* getelementptr ([2 x sbyte]* %.str_7, long 0, long 0), { }* %llvm.dbg.globals, sbyte* null, bool false }, int* %q } ; <{ %lldb.global, int* }*> [#uses=0] |
| 17 | |
| 18 | implementation ; Functions: |
| 19 | |
| 20 | declare { }* %llvm.dbg.stoppoint({ }*, uint, uint, %lldb.compile_unit*) |
| 21 | |
| 22 | declare { }* %llvm.dbg.func.start(%lldb.global*) |
| 23 | |
| 24 | declare { }* %llvm.dbg.region.start({ }*) |
| 25 | |
| 26 | declare { }* %llvm.dbg.region.end({ }*) |
| 27 | |
| 28 | void %foo() { |
| 29 | %t = alloca int ; <int*> [#uses=2] |
| 30 | %.1 = call { }* %llvm.dbg.func.start( %lldb.global* %d.foo ) ; <{ }*> [#uses=1] |
| 31 | %.2 = call { }* %llvm.dbg.stoppoint( { }* %.1, uint 5, uint 2, %lldb.compile_unit* %d.compile_unit ) ; <{ }*> [#uses=1] |
| 32 | %tmp.0 = load int* %q ; <int> [#uses=1] |
| 33 | store int %tmp.0, int* %t |
| 34 | %.3 = call { }* %llvm.dbg.stoppoint( { }* %.2, uint 6, uint 2, %lldb.compile_unit* %d.compile_unit ) ; <{ }*> [#uses=1] |
| 35 | %tmp.01 = load int* %t ; <int> [#uses=1] |
| 36 | %tmp.1 = add int %tmp.01, 1 ; <int> [#uses=1] |
| 37 | store int %tmp.1, int* %q |
| 38 | %.4 = call { }* %llvm.dbg.stoppoint( { }* %.3, uint 7, uint 1, %lldb.compile_unit* %d.compile_unit ) ; <{ }*> [#uses=1] |
| 39 | call { }* %llvm.dbg.region.end( { }* %.4 ) ; <{ }*>:0 [#uses=0] |
| 40 | ret void |
| 41 | } |
| 42 | |
| 43 | int %main() { |
| 44 | entry: |
| 45 | %.1 = call { }* %llvm.dbg.func.start( %lldb.global* %d.main ) ; <{ }*> [#uses=1] |
| 46 | %result = alloca int ; <int*> [#uses=2] |
| 47 | %.2 = call { }* %llvm.dbg.stoppoint( { }* %.1, uint 9, uint 2, %lldb.compile_unit* %d.compile_unit ) ; <{ }*> [#uses=1] |
| 48 | store int 0, int* %q |
| 49 | %.3 = call { }* %llvm.dbg.stoppoint( { }* %.2, uint 10, uint 2, %lldb.compile_unit* %d.compile_unit ) ; <{ }*> [#uses=1] |
| 50 | call void %foo( ) |
| 51 | %.4 = call { }* %llvm.dbg.stoppoint( { }* %.3, uint 11, uint 2, %lldb.compile_unit* %d.compile_unit ) ; <{ }*> [#uses=1] |
| 52 | %tmp.2 = load int* %q ; <int> [#uses=1] |
| 53 | %tmp.3 = sub int %tmp.2, 1 ; <int> [#uses=1] |
| 54 | store int %tmp.3, int* %q |
| 55 | %.5 = call { }* %llvm.dbg.stoppoint( { }* %.4, uint 13, uint 2, %lldb.compile_unit* %d.compile_unit ) ; <{ }*> [#uses=1] |
| 56 | %tmp.4 = load int* %q ; <int> [#uses=1] |
| 57 | store int %tmp.4, int* %result |
| 58 | br label %return |
| 59 | |
| 60 | after_ret: ; No predecessors! |
| 61 | br label %return |
| 62 | |
| 63 | return: ; preds = %entry, %after_ret |
| 64 | %tmp.5 = load int* %result ; <int> [#uses=1] |
| 65 | %.6 = call { }* %llvm.dbg.stoppoint( { }* %.5, uint 14, uint 1, %lldb.compile_unit* %d.compile_unit ) ; <{ }*> [#uses=1] |
| 66 | call { }* %llvm.dbg.region.end( { }* %.6 ) ; <{ }*>:0 [#uses=0] |
| 67 | ret int %tmp.5 |
| 68 | } |