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
gcc@gcc.gnu.org
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


Reply via email to