Hi,
Thanks a lot. Basically, I want to obtain dynamic basic block frequency at
RTL
level just before register allocation. Look at the following piece of
code(a.c):
void foo(int i, int *a, int *p) {
int x1,j;
for(j=0;j<200;j++) {
x1=a[i]+j;
*p=99;
a[i]=x1;
}
}
main() {
int *a,*p,i=0;
int x1,x2,x3,x4;
a=malloc(sizeof(int));
p=malloc(sizeof(int));
a[0]=0;
foo(0,a,p);
printf("\n%d ",*p);
for(i=0;i<1;i++) {
printf(" %d ",a[i]);
}
}
This code was executed using "gcc -O3 -fprofile-arcs --param
max-unroll-times=0 a.c".
"a.out" was then executed (for profiling).
Now I compile using "gcc -O3 -fbranch-probabilities --param
max-unroll-times=0 a.c".
During this phase, I try to obtain dynamic frequencies of the statements
within the "for"
loop in "foo" method at RTL level. The frequencies return "0" using
"bb->count". I
would like this to reflect "200". How to obtain this information?
regards,
Raj
Jan Hubicka <[EMAIL PROTECTED]>
07/18/2005 10:29 AM
To
Rajkishore Barik/India/[EMAIL PROTECTED]
cc
[email protected]
Subject
Re: -fprofile-arcs
> Hi,
>
> I am trying to profile the frequency of each basic block of
> SPEC 2000 benchmarks by compiling them using -fprofile-arcs and opt -O3.
> After running the benchmark, when I try to read "bb->count" while
> compiling
> using "-fbranch-probabilities and -O3", I get "0" values for basic
blocks
> which were known to execute for sure. Any clue as to where I am missing?
> Is "bb->count" is the right way to get the dynamic frequency in the
second
> pass?
It is. You would need to provide more information for me to figure out
what is going wrong. Of course the bb->count is initialized only after
profile is read in that at current mainline is pretty late in
compilation queue (after bp RTL pass), but this is going to change
hopefully at monday.
Honza
>
> regards,
> Raj