[LLVMdev] Incorrect DebugInfo in MCJIT
ymli
ymli at cs.nctu.edu.tw
Fri Sep 5 19:17:34 PDT 2014
Hi all,
In some cases, the debug info of function calls are set incorrectly by Virtual
Register Rewriting Pass.
While lowering the mov instruction that storing the callee's address,
if we have multiple calls to the same function then LLVM will duplicate that
mov instructions including the same DebugInfo. That will generate wrong
DwarfDebufInfo to make gdb confused while stepping in to a function.
The following are experiments with gdb.
Environment:
clang/llvm executables are built under `cmake -DCMAKE_DEBUG_TYPE=Debug`
The experiment: Use lli/mcjit with debug-info, try to step-in on certain lines
with gdb.
After the Virtual Register Rewriter Pass, in some more complex cases,
during the Machine Instruction level, we can find that on the debug info of
a mov instruction of a function call will be incorrect. That mov instruction
prepares callee address in a X64 register.
When gdb try to step-in to that call, it will stop on the wrong place.
The details of my test cases and MachineInstruction level dumps are as attached.
Steps:
1. There are two test cases written in C, fib.c and b.c
2. Compile them with the latest Clang/LLVM (r217182) and LLVM 3.4.2,
use -g with -O0 optimization level
3. Record all IR with `-print-after-all` in lli
4. Use gdb to step in a function call
clang lli/mcjit
----------------------------------------------------
fib.c -> fib0.ll -> log0.txt
----------------------------------------------------
b.c -> b.ll -> log0_34.txt
----------------------------------------------------
Experiment 1. svn tip (r217182) with -g -O0
$ ./build/bin/clang -g -O0 -S -emit-llvm fib.c -o fib0.ll
$ ./build/bin/lli -jit-emit-debug -print-after-all fib0.ll 2> log0.txt
-------------------------------------------------------------------------------
$ ../gdb-7.8/gdb/gdb -q --args ./build/bin/lli -jit-emit-debug fib0.ll
Reading symbols from ./build/bin/lli...done.
(gdb) b fib.c:53
No source file named fib.c.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (fib.c:53) pending.
(gdb) r
Breakpoint 1, fib (r=0x7fffffffdc14, n=0x7fffffffdc10) at fib.c:53
53 gpu_reg_p.s_regs[2] = sub_32(gpu_reg_p.s_regs[1], 1);
(gdb) s
42 gpu_reg_p.s_regs[2] = sub_32(gpu_reg_p.s_regs[1], 2);
(gdb)
-------------------------------------------------------------------------------
Experiment 2. llvm-3.4.2 with -g -O0
$ ./build34/bin/clang -g -O0 -S -emit-llvm b.c -o b0.ll
$ ./build34/bin/lli -use-mcjit -jit-emit-debug -print-after-all b0.ll
2> log0_34.ll
-------------------------------------------------------------------------------
$ ../gdb-7.8/gdb/gdb -q --args ./build34/bin/lli -use-mcjit
-jit-emit-debug b0.ll
Reading symbols from ./build34/bin/lli...done.
(gdb) b b.c:30
No source file named b.c.
Make breakpoint pending on future shared library load? (y or [n]) y
Breakpoint 1 (b.c:30) pending.
(gdb) r
Starting program: /home/xatier/exp/tip/build34/bin/lli -use-mcjit
-jit-emit-debug b0.ll
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, f1 (a=0x7fffffffdef8) at b.c:30
30 f2(&j);
(gdb) s
17 f2(a);
(gdb)
-------------------------------------------------------------------------------
--
ymli
-------------- next part --------------
==============================================
log0_34.txt
==============================================
# *** IR Dump After Live Register Matrix ***:
# Machine code for function f1: Post SSA
Frame Objects:
fi#0: size=8, align=8, at location [SP+8]
fi#1: size=4, align=4, at location [SP+8]
fi#2: size=4, align=4, at location [SP+8]
fi#3: size=4, align=4, at location [SP+8]
Function Live Ins: %RDI in %vreg0
0B BB#0: derived from LLVM BB %entry
Live Ins: %RDI
16B %vreg0<def> = COPY %RDI; GR64:%vreg0
32B MOV64mr <fi#0>, 1, %noreg, 0, %noreg, %vreg0; mem:ST8[%a.addr] GR64:%vreg0
--------------------------------------------------------------------------------------------------------------
48B %vreg30<def> = MOV64ri <ga:@f2>; GR64:%vreg30 dbg:b.c:17
--------------------------------------------------------------------------------------------------------------
64B %vreg31<def> = MOV64ri <ga:@f3>; GR64:%vreg31 dbg:b.c:19
80B %vreg32<def> = LEA64r <fi#2>, 1, %noreg, 0, %noreg; GR64:%vreg32
96B %vreg33<def> = LEA64r <fi#3>, 1, %noreg, 0, %noreg; GR64:%vreg33
112B %vreg35<def> = LEA64r <fi#1>, 1, %noreg, 0, %noreg; GR64:%vreg35
144B %vreg42<def> = MOV64ri <ga:@printf>; GR64:%vreg42 dbg:b.c:51
Successors according to CFG: BB#1
1008B BB#4: derived from LLVM BB %if.else
Predecessors according to CFG: BB#2
1024B %vreg11<def> = MOV32rm <fi#2>, 1, %noreg, 0, %noreg; mem:LD4[%j] GR32:%vreg11 dbg:b.c:27
1056B %vreg11<def,tied1> = INC64_32r %vreg11<tied0>, %EFLAGS<imp-def,dead>; GR32:%vreg11 dbg:b.c:27
1072B MOV32mr <fi#2>, 1, %noreg, 0, %noreg, %vreg11; mem:ST4[%j] GR32:%vreg11 dbg:b.c:27
1088B MOV32mr <fi#3>, 1, %noreg, 0, %noreg, %vreg11; mem:ST4[%k] GR32:%vreg11 dbg:b.c:28
--------------------------------------------------------------------------------------------------------------
1104B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:30
1120B %RDI<def> = COPY %vreg32; GR64:%vreg32 dbg:b.c:30
1136B CALL64r %vreg30, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; GR64:%vreg30 dbg:b.c:30
1152B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:30
--------------------------------------------------------------------------------------------------------------
1168B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:31
1184B %RDI<def> = COPY %vreg32; GR64:%vreg32 dbg:b.c:31
1200B %RSI<def> = COPY %vreg35; GR64:%vreg35 dbg:b.c:31
1216B CALL64r %vreg31, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg31 dbg:b.c:31
1232B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:31
1248B %vreg16<def> = MOV64rm <fi#0>, 1, %noreg, 0, %noreg; mem:LD8[%a.addr] GR64:%vreg16 dbg:b.c:32
1264B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:32
1280B %RDI<def> = COPY %vreg16; GR64:%vreg16 dbg:b.c:32
1296B CALL64r %vreg30, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; GR64:%vreg30 dbg:b.c:32
1312B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:32
1328B %vreg47:sub_32bit<def,read-undef> = IMUL32rmi8 <fi#1>, 1, %noreg, 0, %noreg, 13, %EFLAGS<imp-def,dead>; mem:LD4[%i] GR64_NOSP:%vreg47 dbg:b.c:33
1344B %vreg46:sub_32bit<def,read-undef> = MOV32rm <fi#2>, 1, %noreg, 0, %noreg; mem:LD4[%j] GR64_with_sub_8bit:%vreg46 dbg:b.c:33
1392B %vreg19<def> = LEA64_32r %vreg46, 1, %vreg47, 0, %noreg; GR32:%vreg19 GR64_with_sub_8bit:%vreg46 GR64_NOSP:%vreg47 dbg:b.c:33
1408B MOV32mr <fi#2>, 1, %noreg, 0, %noreg, %vreg19; mem:ST4[%j] GR32:%vreg19 dbg:b.c:33
1456B %vreg22<def> = LEA64_32r %vreg46, 1, %vreg47, -1, %noreg; GR32:%vreg22 GR64_with_sub_8bit:%vreg46 GR64_NOSP:%vreg47 dbg:b.c:34
1472B MOV32mr <fi#3>, 1, %noreg, 0, %noreg, %vreg22; mem:ST4[%k] GR32:%vreg22 dbg:b.c:34
1488B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:35
1504B %RDI<def> = COPY %vreg32; GR64:%vreg32 dbg:b.c:35
1520B %RSI<def> = COPY %vreg35; GR64:%vreg35 dbg:b.c:35
1536B CALL64r %vreg31, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg31 dbg:b.c:35
1552B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:35
1568B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:36
1584B %RDI<def> = COPY %vreg32; GR64:%vreg32 dbg:b.c:36
1600B %RSI<def> = COPY %vreg33; GR64:%vreg33 dbg:b.c:36
1616B CALL64r %vreg31, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg31 dbg:b.c:36
1632B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:36
1648B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:37
1664B %RDI<def> = COPY %vreg35; GR64:%vreg35 dbg:b.c:37
1680B %RSI<def> = COPY %vreg33; GR64:%vreg33 dbg:b.c:37
1696B CALL64r %vreg31, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg31 dbg:b.c:37
1712B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:37
1728B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:38
1744B %RDI<def> = COPY %vreg32; GR64:%vreg32 dbg:b.c:38
1760B CALL64r %vreg30, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; GR64:%vreg30 dbg:b.c:38
1776B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:38
1792B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:39
1808B %RDI<def> = COPY %vreg32; GR64:%vreg32 dbg:b.c:39
1824B %RSI<def> = COPY %vreg35; GR64:%vreg35 dbg:b.c:39
1840B CALL64r %vreg31, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg31 dbg:b.c:39
1856B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:39
1872B DEC64_32m <fi#1>, 1, %noreg, 0, %noreg, %EFLAGS<imp-def,dead>; mem:ST4[%i] LD4[%i] dbg:b.c:40
1888B %vreg24<def> = MOV64rm <fi#0>, 1, %noreg, 0, %noreg; mem:LD8[%a.addr] GR64:%vreg24 dbg:b.c:41
1904B INC64_32m %vreg24, 1, %noreg, 0, %noreg, %EFLAGS<imp-def,dead>; mem:ST4[%17] LD4[%17] GR64:%vreg24 dbg:b.c:41
1920B %vreg27<def> = MOV32rm <fi#2>, 1, %noreg, 0, %noreg; mem:LD4[%j] GR32:%vreg27 dbg:b.c:42
1952B %vreg27<def,tied1> = INC64_32r %vreg27<tied0>, %EFLAGS<imp-def,dead>; GR32:%vreg27 dbg:b.c:42
1968B MOV32mr <fi#2>, 1, %noreg, 0, %noreg, %vreg27; mem:ST4[%j] GR32:%vreg27 dbg:b.c:42
2000B %vreg27<def,tied1> = SUB32rm %vreg27<tied0>, <fi#1>, 1, %noreg, 0, %noreg, %EFLAGS<imp-def,dead>; mem:LD4[%i] GR32:%vreg27 dbg:b.c:43
2016B MOV32mr <fi#3>, 1, %noreg, 0, %noreg, %vreg27; mem:ST4[%k] GR32:%vreg27 dbg:b.c:43
2032B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:44
2048B %RDI<def> = COPY %vreg35; GR64:%vreg35 dbg:b.c:44
2064B %RSI<def> = COPY %vreg33; GR64:%vreg33 dbg:b.c:44
2080B CALL64r %vreg31, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg31 dbg:b.c:44
2096B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:44
2112B DEC64_32m <fi#1>, 1, %noreg, 0, %noreg, %EFLAGS<imp-def,dead>; mem:ST4[%i] LD4[%i] dbg:b.c:45
2128B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:46
2144B %RDI<def> = COPY %vreg32; GR64:%vreg32 dbg:b.c:46
2160B CALL64r %vreg30, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; GR64:%vreg30 dbg:b.c:46
2176B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:46
2192B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:47
2208B %RDI<def> = COPY %vreg35; GR64:%vreg35 dbg:b.c:47
2224B CALL64r %vreg30, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; GR64:%vreg30 dbg:b.c:47
2240B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:47
2256B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:48
2272B %RDI<def> = COPY %vreg33; GR64:%vreg33 dbg:b.c:48
2288B CALL64r %vreg30, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; GR64:%vreg30 dbg:b.c:48
2304B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:48
2320B %vreg28<def> = MOV64rm <fi#0>, 1, %noreg, 0, %noreg; mem:LD8[%a.addr] GR64:%vreg28 dbg:b.c:49
2336B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:49
2352B %RDI<def> = COPY %vreg28; GR64:%vreg28 dbg:b.c:49
2368B CALL64r %vreg30, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; GR64:%vreg30 dbg:b.c:49
2384B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:49
Successors according to CFG: BB#5
# *** IR Dump After Virtual Register Rewriter ***:
# Machine code for function f1: Post SSA
Frame Objects:
fi#0: size=8, align=8, at location [SP+8]
fi#1: size=4, align=4, at location [SP+8]
fi#2: size=4, align=4, at location [SP+8]
fi#3: size=4, align=4, at location [SP+8]
fi#4: size=8, align=8, at location [SP+8]
Function Live Ins: %RDI in %vreg0
1008B BB#4: derived from LLVM BB %if.else
Live Ins: %R14 %R15
Predecessors according to CFG: BB#2
1024B %EAX<def> = MOV32rm <fi#2>, 1, %noreg, 0, %noreg; mem:LD4[%j] dbg:b.c:27
1056B %EAX<def,tied1> = INC64_32r %EAX<kill,tied0>, %EFLAGS<imp-def,dead>; dbg:b.c:27
1072B MOV32mr <fi#2>, 1, %noreg, 0, %noreg, %EAX; mem:ST4[%j] dbg:b.c:27
1088B MOV32mr <fi#3>, 1, %noreg, 0, %noreg, %EAX<kill>; mem:ST4[%k] dbg:b.c:28
--------------------------------------------------------------------------------------------------------------
1104B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:30
1120B %RDI<def> = COPY %R14; dbg:b.c:30
1128B %R13<def> = MOV64ri <ga:@f2>; dbg:b.c:17
1136B CALL64r %R13, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; dbg:b.c:30
1152B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:30
--------------------------------------------------------------------------------------------------------------
1168B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:31
1184B %RDI<def> = COPY %R14; dbg:b.c:31
1188B %RBX<def> = LEA64r <fi#1>, 1, %noreg, 0, %noreg
1200B %RSI<def> = COPY %RBX; dbg:b.c:31
1208B %R12<def> = MOV64ri <ga:@f3>; dbg:b.c:19
1216B CALL64r %R12, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:b.c:31
1232B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:31
1248B %RDI<def> = MOV64rm <fi#0>, 1, %noreg, 0, %noreg; mem:LD8[%a.addr] dbg:b.c:32
1264B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:32
1296B CALL64r %R13, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; dbg:b.c:32
1312B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:32
1328B %EAX<def> = IMUL32rmi8 <fi#1>, 1, %noreg, 0, %noreg, 13, %EFLAGS<imp-def,dead>, %RAX<imp-def>; mem:LD4[%i] dbg:b.c:33
1344B %ECX<def> = MOV32rm <fi#2>, 1, %noreg, 0, %noreg, %RCX<imp-def>; mem:LD4[%j] dbg:b.c:33
1392B %EDX<def> = LEA64_32r %RCX, 1, %RAX, 0, %noreg; dbg:b.c:33
1408B MOV32mr <fi#2>, 1, %noreg, 0, %noreg, %EDX<kill>; mem:ST4[%j] dbg:b.c:33
1456B %EAX<def> = LEA64_32r %RCX<kill>, 1, %RAX<kill>, -1, %noreg; dbg:b.c:34
1472B MOV32mr <fi#3>, 1, %noreg, 0, %noreg, %EAX<kill>; mem:ST4[%k] dbg:b.c:34
1488B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:35
1504B %RDI<def> = COPY %R14; dbg:b.c:35
1520B %RSI<def> = COPY %RBX; dbg:b.c:35
1536B CALL64r %R12, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:b.c:35
1552B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:35
1568B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:36
1584B %RDI<def> = COPY %R14; dbg:b.c:36
1600B %RSI<def> = COPY %R15; dbg:b.c:36
1616B CALL64r %R12, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:b.c:36
1632B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:36
1648B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:37
1664B %RDI<def> = COPY %RBX; dbg:b.c:37
1680B %RSI<def> = COPY %R15; dbg:b.c:37
1696B CALL64r %R12, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:b.c:37
1712B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:37
1728B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:38
1744B %RDI<def> = COPY %R14; dbg:b.c:38
1760B CALL64r %R13, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; dbg:b.c:38
1776B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:38
1792B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:39
1808B %RDI<def> = COPY %R14; dbg:b.c:39
1824B %RSI<def> = COPY %RBX; dbg:b.c:39
1840B CALL64r %R12, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:b.c:39
1856B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:39
1872B DEC64_32m <fi#1>, 1, %noreg, 0, %noreg, %EFLAGS<imp-def,dead>; mem:ST4[%i] LD4[%i] dbg:b.c:40
1888B %RAX<def> = MOV64rm <fi#0>, 1, %noreg, 0, %noreg; mem:LD8[%a.addr] dbg:b.c:41
1904B INC64_32m %RAX<kill>, 1, %noreg, 0, %noreg, %EFLAGS<imp-def,dead>; mem:ST4[%17] LD4[%17] dbg:b.c:41
1920B %EAX<def> = MOV32rm <fi#2>, 1, %noreg, 0, %noreg; mem:LD4[%j] dbg:b.c:42
1952B %EAX<def,tied1> = INC64_32r %EAX<kill,tied0>, %EFLAGS<imp-def,dead>; dbg:b.c:42
1968B MOV32mr <fi#2>, 1, %noreg, 0, %noreg, %EAX; mem:ST4[%j] dbg:b.c:42
2000B %EAX<def,tied1> = SUB32rm %EAX<kill,tied0>, <fi#1>, 1, %noreg, 0, %noreg, %EFLAGS<imp-def,dead>; mem:LD4[%i] dbg:b.c:43
2016B MOV32mr <fi#3>, 1, %noreg, 0, %noreg, %EAX<kill>; mem:ST4[%k] dbg:b.c:43
2032B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:44
2048B %RDI<def> = COPY %RBX; dbg:b.c:44
2064B %RSI<def> = COPY %R15; dbg:b.c:44
2080B CALL64r %R12<kill>, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:b.c:44
2096B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:44
2112B DEC64_32m <fi#1>, 1, %noreg, 0, %noreg, %EFLAGS<imp-def,dead>; mem:ST4[%i] LD4[%i] dbg:b.c:45
2128B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:46
2144B %RDI<def> = COPY %R14; dbg:b.c:46
2160B CALL64r %R13, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; dbg:b.c:46
2176B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:46
2192B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:47
2208B %RDI<def> = COPY %RBX<kill>; dbg:b.c:47
2224B CALL64r %R13, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; dbg:b.c:47
2240B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:47
2256B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:48
2272B %RDI<def> = COPY %R15; dbg:b.c:48
2288B CALL64r %R13, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; dbg:b.c:48
2304B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:48
2320B %RDI<def> = MOV64rm <fi#0>, 1, %noreg, 0, %noreg; mem:LD8[%a.addr] dbg:b.c:49
2336B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:49
2368B CALL64r %R13<kill>, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>; dbg:b.c:49
2384B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:b.c:49
Successors according to CFG: BB#5
-------------- next part --------------
A non-text attachment was scrubbed...
Name: b.c
Type: text/x-csrc
Size: 1135 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140905/ec61548a/attachment.c>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: fib.c
Type: text/x-csrc
Size: 1912 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140905/ec61548a/attachment-0001.c>
-------------- next part --------------
==============================================
log0.txt
==============================================
# *** IR Dump After Live Register Matrix ***:
# Machine code for function fib: Post SSA
Frame Objects:
fi#0: size=8, align=8, at location [SP+8]
fi#1: size=8, align=8, at location [SP+8]
fi#2: size=520, align=8, at location [SP+8]
fi#3: size=4, align=4, at location [SP+8]
fi#4: size=4, align=4, at location [SP+8]
fi#5: size=4, align=4, at location [SP+8]
fi#6: size=4, align=4, at location [SP+8]
fi#7: size=4, align=4, at location [SP+8]
Function Live Ins: %RDI in %vreg0, %RSI in %vreg1
384B BB#1: derived from LLVM BB %if.end
Predecessors according to CFG: BB#0
400B %vreg7<def> = MOV32rm <fi#2>, 1, %noreg, 12, %noreg; mem:LD4[%arrayidx8] GR32:%vreg7 dbg:fib.c:42:31
416B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:42:31
--------------------------------------------------------------------------------------------------------------------------------------------
432B %vreg8<def> = MOV64ri <ga:@sub_32>; GR64:%vreg8 dbg:fib.c:42:31
--------------------------------------------------------------------------------------------------------------------------------------------
480B %ESI<def> = MOV32ri 2
488B %EDI<def> = COPY %vreg7; GR32:%vreg7 dbg:fib.c:42:31
496B CALL64r %vreg8, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %ESI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; GR64:%vreg8 dbg:fib.c:42:31
512B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:42:31
528B %vreg10<def> = COPY %EAX<kill>; GR32:%vreg10 dbg:fib.c:42:31
544B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %vreg10; mem:ST4[%arrayidx11](align=8) GR32:%vreg10 dbg:fib.c:42:31
560B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:43:9
576B %vreg11<def> = MOV64ri <ga:@st_32>; GR64:%vreg11 dbg:fib.c:43:9
592B %vreg12<def> = LEA64r <fi#4>, 1, %noreg, 0, %noreg; GR64:%vreg12
608B %EDI<def> = COPY %vreg10; GR32:%vreg10 dbg:fib.c:43:9
624B %RSI<def> = COPY %vreg12; GR64:%vreg12 dbg:fib.c:43:9
640B CALL64r %vreg11, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg11 dbg:fib.c:43:9
656B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:43:9
672B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:44:9
688B %vreg13<def> = MOV64ri <ga:@fib>; GR64:%vreg13 dbg:fib.c:44:9
704B %vreg14<def> = LEA64r <fi#5>, 1, %noreg, 0, %noreg; GR64:%vreg14
720B %RDI<def> = COPY %vreg14; GR64:%vreg14 dbg:fib.c:44:9
736B %RSI<def> = COPY %vreg12; GR64:%vreg12 dbg:fib.c:44:9
752B CALL64r %vreg13, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg13 dbg:fib.c:44:9
768B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:44:9
784B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:45:31
800B %RDI<def> = COPY %vreg14; GR64:%vreg14 dbg:fib.c:45:31
816B CALL64r %vreg2, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; GR64:%vreg2 dbg:fib.c:45:31
832B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:45:31
848B %vreg16<def> = COPY %EAX<kill>; GR32:%vreg16 dbg:fib.c:45:31
864B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %vreg16; mem:ST4[%arrayidx16](align=8) GR32:%vreg16 dbg:fib.c:45:31
880B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:48:5
896B %vreg17<def> = LEA64r <fi#3>, 1, %noreg, 0, %noreg; GR64:%vreg17
912B %EDI<def> = COPY %vreg16; GR32:%vreg16 dbg:fib.c:48:5
928B %RSI<def> = COPY %vreg17; GR64:%vreg17 dbg:fib.c:48:5
944B CALL64r %vreg11, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg11 dbg:fib.c:48:5
960B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:48:5
--------------------------------------------------------------------------------------------------------------------------------------------
976B %vreg18<def> = MOV32rm <fi#2>, 1, %noreg, 12, %noreg; mem:LD4[%arrayidx22] GR32:%vreg18 dbg:fib.c:53:31
992B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:53:31
1040B %ESI<def> = MOV32ri 1
1048B %EDI<def> = COPY %vreg18; GR32:%vreg18 dbg:fib.c:53:31
1056B CALL64r %vreg8, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %ESI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; GR64:%vreg8 dbg:fib.c:53:31
1072B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:53:31
1088B %vreg20<def> = COPY %EAX<kill>; GR32:%vreg20 dbg:fib.c:53:31
--------------------------------------------------------------------------------------------------------------------------------------------
1104B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %vreg20; mem:ST4[%arrayidx25](align=8) GR32:%vreg20 dbg:fib.c:53:31
1120B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:54:9
1136B %vreg21<def> = LEA64r <fi#6>, 1, %noreg, 0, %noreg; GR64:%vreg21
1152B %EDI<def> = COPY %vreg20; GR32:%vreg20 dbg:fib.c:54:9
1168B %RSI<def> = COPY %vreg21; GR64:%vreg21 dbg:fib.c:54:9
1184B CALL64r %vreg11, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg11 dbg:fib.c:54:9
1200B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:54:9
1216B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:55:9
1232B %vreg22<def> = LEA64r <fi#7>, 1, %noreg, 0, %noreg; GR64:%vreg22
1248B %RDI<def> = COPY %vreg22; GR64:%vreg22 dbg:fib.c:55:9
1264B %RSI<def> = COPY %vreg21; GR64:%vreg21 dbg:fib.c:55:9
1280B CALL64r %vreg13, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg13 dbg:fib.c:55:9
1296B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:55:9
1312B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:56:31
1328B %RDI<def> = COPY %vreg22; GR64:%vreg22 dbg:fib.c:56:31
1344B CALL64r %vreg2, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; GR64:%vreg2 dbg:fib.c:56:31
1360B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:56:31
1376B %vreg23<def> = COPY %EAX<kill>; GR32:%vreg23 dbg:fib.c:56:31
1392B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %vreg23; mem:ST4[%arrayidx30](align=8) GR32:%vreg23 dbg:fib.c:56:31
1408B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:59:27
1424B %RDI<def> = COPY %vreg17; GR64:%vreg17 dbg:fib.c:59:27
1440B CALL64r %vreg2, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; GR64:%vreg2 dbg:fib.c:59:27
1456B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:59:27
1472B %vreg24<def> = COPY %EAX<kill>; GR32:%vreg24 dbg:fib.c:59:27
1488B MOV32mr <fi#2>, 1, %noreg, 20, %noreg, %vreg24; mem:ST4[%arrayidx33] GR32:%vreg24 dbg:fib.c:59:27
1504B %vreg25<def> = MOV32rm <fi#2>, 1, %noreg, 16, %noreg; mem:LD4[%arrayidx35](align=8) GR32:%vreg25 dbg:fib.c:60:27
1520B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:60:27
1536B %vreg26<def> = MOV64ri <ga:@add_32>; GR64:%vreg26 dbg:fib.c:60:27
1552B %EDI<def> = COPY %vreg25; GR32:%vreg25 dbg:fib.c:60:27
1568B %ESI<def> = COPY %vreg24; GR32:%vreg24 dbg:fib.c:60:27
1584B CALL64r %vreg26, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %ESI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; GR64:%vreg26 dbg:fib.c:60:27
1600B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:60:27
1616B %vreg27<def> = COPY %EAX<kill>; GR32:%vreg27 dbg:fib.c:60:27
1632B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %vreg27; mem:ST4[%arrayidx40](align=8) GR32:%vreg27 dbg:fib.c:60:27
1648B %vreg28<def> = MOV64rm <fi#0>, 1, %noreg, 0, %noreg; mem:LD8[%r.addr] GR64:%vreg28 dbg:fib.c:61:5
1664B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:61:5
1680B %EDI<def> = COPY %vreg27; GR32:%vreg27 dbg:fib.c:61:5
1696B %RSI<def> = COPY %vreg28; GR64:%vreg28 dbg:fib.c:61:5
1712B CALL64r %vreg11, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; GR64:%vreg11 dbg:fib.c:61:5
1728B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:61:5
1744B JMP_4 <BB#3>; dbg:fib.c:62:5
Successors according to CFG: BB#3
# *** IR Dump After Virtual Register Rewriter ***:
# Machine code for function fib: Post SSA
Frame Objects:
fi#0: size=8, align=8, at location [SP+8]
fi#1: size=8, align=8, at location [SP+8]
fi#2: size=520, align=8, at location [SP+8]
fi#3: size=4, align=4, at location [SP+8]
fi#4: size=4, align=4, at location [SP+8]
fi#5: size=4, align=4, at location [SP+8]
fi#6: size=4, align=4, at location [SP+8]
fi#7: size=4, align=4, at location [SP+8]
Function Live Ins: %RDI in %vreg0, %RSI in %vreg1
384B BB#1: derived from LLVM BB %if.end
Live Ins: %R12
Predecessors according to CFG: BB#0
DBG_VALUE <fi#3>, 0, !"p"; line no:38
DBG_VALUE <fi#4>, 0, !"nm2"; line no:40
DBG_VALUE <fi#5>, 0, !"res"; line no:41
400B %EDI<def> = MOV32rm <fi#2>, 1, %noreg, 12, %noreg; mem:LD4[%arrayidx8] dbg:fib.c:42:31
416B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:42:31
--------------------------------------------------------------------------------------------------------------------------------------------
432B %RAX<def> = MOV64ri <ga:@sub_32>; dbg:fib.c:42:31
--------------------------------------------------------------------------------------------------------------------------------------------
480B %ESI<def> = MOV32ri 2
496B CALL64r %RAX<kill>, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %ESI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; dbg:fib.c:42:31
512B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:42:31
544B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %EAX; mem:ST4[%arrayidx11](align=8) dbg:fib.c:42:31
560B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:43:9
576B %R13<def> = MOV64ri <ga:@st_32>; dbg:fib.c:43:9
592B %R14<def> = LEA64r <fi#4>, 1, %noreg, 0, %noreg
608B %EDI<def> = COPY %EAX<kill>; dbg:fib.c:43:9
624B %RSI<def> = COPY %R14; dbg:fib.c:43:9
640B CALL64r %R13, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:fib.c:43:9
656B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:43:9
672B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:44:9
688B %RAX<def> = MOV64ri <ga:@fib>; dbg:fib.c:44:9
704B %RBX<def> = LEA64r <fi#5>, 1, %noreg, 0, %noreg
720B %RDI<def> = COPY %RBX; dbg:fib.c:44:9
736B %RSI<def> = COPY %R14<kill>; dbg:fib.c:44:9
752B CALL64r %RAX<kill>, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:fib.c:44:9
768B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:44:9
784B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:45:31
800B %RDI<def> = COPY %RBX<kill>; dbg:fib.c:45:31
816B CALL64r %R12, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; dbg:fib.c:45:31
832B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:45:31
864B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %EAX; mem:ST4[%arrayidx16](align=8) dbg:fib.c:45:31
880B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:48:5
896B %RSI<def> = LEA64r <fi#3>, 1, %noreg, 0, %noreg
912B %EDI<def> = COPY %EAX<kill>; dbg:fib.c:48:5
936B %R14<def> = COPY %RSI
944B CALL64r %R13, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:fib.c:48:5
960B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:48:5
DBG_VALUE <fi#7>, 0, !"res"; line no:52
DBG_VALUE <fi#6>, 0, !"nm2"; line no:51
--------------------------------------------------------------------------------------------------------------------------------------------
976B %EDI<def> = MOV32rm <fi#2>, 1, %noreg, 12, %noreg; mem:LD4[%arrayidx22] dbg:fib.c:53:31
992B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:53:31
1040B %ESI<def> = MOV32ri 1
1052B %RAX<def> = MOV64ri <ga:@sub_32>; dbg:fib.c:42:31
1056B CALL64r %RAX<kill>, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %ESI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; dbg:fib.c:53:31
1072B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:53:31
1104B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %EAX; mem:ST4[%arrayidx25](align=8) dbg:fib.c:53:31
--------------------------------------------------------------------------------------------------------------------------------------------
1120B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:54:9
1136B %R15<def> = LEA64r <fi#6>, 1, %noreg, 0, %noreg
1152B %EDI<def> = COPY %EAX<kill>; dbg:fib.c:54:9
1168B %RSI<def> = COPY %R15; dbg:fib.c:54:9
1184B CALL64r %R13, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:fib.c:54:9
1200B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:54:9
1216B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:55:9
1232B %RBX<def> = LEA64r <fi#7>, 1, %noreg, 0, %noreg
1248B %RDI<def> = COPY %RBX; dbg:fib.c:55:9
1264B %RSI<def> = COPY %R15<kill>; dbg:fib.c:55:9
1272B %RAX<def> = MOV64ri <ga:@fib>; dbg:fib.c:44:9
1280B CALL64r %RAX<kill>, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:fib.c:55:9
1296B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:55:9
1312B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:56:31
1328B %RDI<def> = COPY %RBX<kill>; dbg:fib.c:56:31
1344B CALL64r %R12, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; dbg:fib.c:56:31
1360B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:56:31
1392B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %EAX<kill>; mem:ST4[%arrayidx30](align=8) dbg:fib.c:56:31
1408B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:59:27
1424B %RDI<def> = COPY %R14<kill>; dbg:fib.c:59:27
1440B CALL64r %R12<kill>, <regmask>, %RSP<imp-use>, %RDI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; dbg:fib.c:59:27
1456B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:59:27
1488B MOV32mr <fi#2>, 1, %noreg, 20, %noreg, %EAX; mem:ST4[%arrayidx33] dbg:fib.c:59:27
1504B %EDI<def> = MOV32rm <fi#2>, 1, %noreg, 16, %noreg; mem:LD4[%arrayidx35](align=8) dbg:fib.c:60:27
1520B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:60:27
1536B %RCX<def> = MOV64ri <ga:@add_32>; dbg:fib.c:60:27
1568B %ESI<def> = COPY %EAX<kill>; dbg:fib.c:60:27
1584B CALL64r %RCX<kill>, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %ESI<imp-use>, %RSP<imp-def>, %EAX<imp-def>; dbg:fib.c:60:27
1600B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:60:27
1632B MOV32mr <fi#2>, 1, %noreg, 16, %noreg, %EAX; mem:ST4[%arrayidx40](align=8) dbg:fib.c:60:27
1648B %RSI<def> = MOV64rm <fi#0>, 1, %noreg, 0, %noreg; mem:LD8[%r.addr] dbg:fib.c:61:5
1664B ADJCALLSTACKDOWN64 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:61:5
1680B %EDI<def> = COPY %EAX<kill>; dbg:fib.c:61:5
1712B CALL64r %R13<kill>, <regmask>, %RSP<imp-use>, %EDI<imp-use>, %RSI<imp-use>, %RSP<imp-def>; dbg:fib.c:61:5
1728B ADJCALLSTACKUP64 0, 0, %RSP<imp-def>, %EFLAGS<imp-def,dead>, %RSP<imp-use>; dbg:fib.c:61:5
1744B JMP_4 <BB#3>; dbg:fib.c:62:5
Successors according to CFG: BB#3
More information about the llvm-dev
mailing list