Profiling & nested functions?
Laurent GUERBY
laurent@guerby.net
Wed Feb 16 04:44:00 GMT 2005
Hi,
I searched the binutils mailing list and I find only an email from 2001
by Daniel Jacobowitz on the subject without follow-ups:
http://sourceware.org/ml/binutils/2001-11/msg00408.html
And couldn't find "nested" keyword in bugzilla.
A GCC developper said that the appropriate calls were generated so this
was probably a gprof issue.
Should I open a bugzilla?
Thanks in advance for your help,
Laurent
-------- Forwarded Message --------
From: Laurent GUERBY <laurent@guerby.net>
To: gcc@gcc.gnu.org
Subject: Profiling & nested functions
Date: Mon, 14 Feb 2005 21:51:47 +0100
Hi,
Is GCC + gprof supposed to handle nested functions?
It looks like they are not properly reported.
The original problem was on Ada code with nested
functions. This is with HEAD and GNU gprof 2.15.91.0.2
on a SuSE 9.2 system.
Thanks in advance,
Laurent
$ cat cn.c
#define N 10000000
static int sum=0;
void p1(void) {
int i;
for(i=1;i<=N;i++) sum+=(i+1)/i;
}
void p2(void) {
int f2(int x) {
return x;
}
int i;
for(i=1;i<=2*N;i++) sum+=f2(i+1)/i;
}
void p3(void) {
int i;
for(i=1;i<=3*N;i++) sum+=(i+1)/i;
}
int main(void) {
p1();
p2();
p3();
return 0;
}
$ gcc -pg -g cn.c
$ ./a.out
$ gprof ./a.out
[...]
Flat profile:
% cumulative self self total
time seconds seconds calls s/call s/call name
49.49 8.70 8.70 1 8.70 8.70 p3
34.13 14.70 6.00 1 6.00 6.00 p2
16.38 17.58 2.88 1 2.88 2.88 p1
[...]
index % time self children called name
<spontaneous>
[1] 100.0 0.00 17.58 main [1]
8.70 0.00 1/1 p3 [2]
6.00 0.00 1/1 p2 [3]
2.88 0.00 1/1 p1 [4]
-----------------------------------------------
8.70 0.00 1/1 main [1]
[2] 49.5 8.70 0.00 1 p3 [2]
-----------------------------------------------
20000000 p2 [3]
6.00 0.00 1/1 main [1]
[3] 34.1 6.00 0.00 1+20000000 p2 [3]
20000000 p2 [3]
-----------------------------------------------
2.88 0.00 1/1 main [1]
[4] 16.4 2.88 0.00 1 p1 [4]
-----------------------------------------------
More information about the Binutils
mailing list