[llvm-commits] Add line numbers to OProfile
jyasskin at gmail.com
jyasskin at gmail.com
Wed Jul 15 12:38:28 PDT 2009
Reviewers: ,
Message:
Please take a look. I'll attach the patch shortly. Bruno, especially,
let me know how I can make this fit better with your long-term plans for
full Dwarf output.
Description:
Add line numbers to OProfile. To do this, I added a beginDebugLoc() call
to the MachineCodeEmitter interface and made copying the start line of a
function not conditional on whether we're emitting Dwarf debug
information. I still need to propagate the beginDebugLoc() calls to the
non-X86 targets, but I'm waiting to do that until LLVMdev confirms that
this is the right approach.
In the long run, it'll probably be better to gather this information
through the DwarfWriter, but the DwarfWriter currently depends on the
AsmPrinter and TargetAsmInfo, and fixing that would be out of the way
for this patch.
Sample output:
$ sudo opcontrol --reset; sudo opcontrol --start-daemon; sudo opcontrol
--start; Debug/bin/lli fib.bc; sudo opcontrol --stop
[sudo] password for jyasskin:
Signalling daemon... done
Profiler running.
fib(40) == 165580141
Stopping profiling.
$ opreport -g -d -l `pwd`/Debug/bin/lli|head -60
Overflow stats not available
CPU: Core 2, speed 1998 MHz (estimated)
Counted CPU_CLK_UNHALTED events (Clock cycles when not halted) with a
unit mask of 0x00 (Unhalted core cycles) count 100000
vma samples % linenr info image name
symbol name
00007f62689160b0 25420 60.7364 fib.c:24 20676.jo
fib_left
00007f62689160b0 1741 6.8489 fib.c:24
00007f62689160b1 91 0.3580 fib.c:24
00007f62689160b9 1934 7.6082 fib.c:24
00007f62689160c6 2012 7.9150 fib.c:27
00007f62689160c8 1072 4.2172 fib.c:27
00007f62689160cd 1280 5.0354 fib.c:27
00007f62689160cf 287 1.1290 fib.c:27
00007f62689160d3 1242 4.8859 fib.c:27
00007f62689160d6 1093 4.2998 fib.c:27
00007f62689160db 963 3.7884 fib.c:27
00007f62689160dd 240 0.9441 fib.c:27
00007f62689160e1 2781 10.9402 fib.c:28
00007f62689160e5 3704 14.5712 fib.c:28
00007f62689160ea 1 0.0039 fib.c:28
00007f62689160eb 596 2.3446 (no location information)
00007f62689160f3 6383 25.1101 (no location information)
00007f6268916100 15900 37.9901 fib.c:29 20676.jo
fib_right
00007f6268916100 1669 10.4969 fib.c:29
00007f6268916101 68 0.4277 fib.c:29
00007f6268916109 2416 15.1950 fib.c:29
00007f6268916116 2262 14.2264 fib.c:32
00007f6268916118 605 3.8050 fib.c:32
00007f626891611d 700 4.4025 fib.c:32
00007f626891611f 384 2.4151 fib.c:32
00007f6268916123 434 2.7296 fib.c:32
00007f6268916126 647 4.0692 fib.c:32
00007f626891612b 921 5.7925 fib.c:32
00007f626891612d 73 0.4591 fib.c:32
00007f6268916131 1824 11.4717 fib.c:33
00007f6268916135 2873 18.0692 fib.c:33
00007f626891613a 2 0.0126 fib.c:33
00007f626891613b 1008 6.3396 (no location information)
00007f6268916143 14 0.0881 (no location information)
0000000000000000 16 0.0382 (no location information)
libstdc++.so.6.0.9 /usr/lib/libstdc++.so.6.0.9
0000000000052fa0 1 6.2500 (no location information)
00000000000530f0 1 6.2500 (no location information)
0000000000062c4c 1 6.2500 (no location information)
000000000006bf02 1 6.2500 (no location information)
000000000006c4d6 1 6.2500 (no location information)
00000000000a13dd 1 6.2500 (no location information)
00000000000a19a0 1 6.2500 (no location information)
00000000000a244d 1 6.2500 (no location information)
00000000000a2b74 1 6.2500 (no location information)
00000000000a2b82 1 6.2500 (no location information)
00000000000a2b91 1 6.2500 (no location information)
00000000000a2bb9 2 12.5000 (no location information)
00000000000a7f45 1 6.2500 (no location information)
00000000000c2f10 1 6.2500 (no location information)
00000000000c4b30 1 6.2500 (no location information)
0000000000815e2a 13 0.0311 stl_vector.h:396 lli
std::vector<llvm::MachineOperand,
std::allocator<llvm::MachineOperand> >::size() const
0000000000815e2a 2 15.3846 stl_vector.h:396
0000000000815e36 1 7.6923 stl_vector.h:397
OProfile 0.9.4 has a bug that causes it to ignore line numbers for code
addresses above 4G. A fix is at
http://thread.gmane.org/gmane.linux.oprofile/7634 but may or may not
make it into OProfile 0.9.5.
Please review this at http://codereview.appspot.com/91111
Affected files:
M include/llvm/CodeGen/MachineCodeEmitter.h
M include/llvm/ExecutionEngine/JITEventListener.h
M include/llvm/Support/DebugLoc.h
M lib/CodeGen/SelectionDAG/SelectionDAGBuild.cpp
M lib/ExecutionEngine/JIT/JITEmitter.cpp
M lib/ExecutionEngine/JIT/OProfileJITEventListener.cpp
M lib/Target/X86/X86CodeEmitter.cpp
More information about the llvm-commits
mailing list