[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