Corrupted Profile Information

2006-01-26 Thread djp

 I'm working on a series of profile-driven optimes with gcc-3.4.3.

 I need profile information available for the PRE phase (implemented in
gcc with gcse.c and lcm.c).

 However, gcc-3.4.3 does not provide profile information that early in the
compile, so I moved the call to `rest_of_handle_branch_prob()' (which in
turns calls branch_prob() which annotates the CFG with profile
information from gcda files) to above `rest_of_handle_gcse()'.

 For the most part, I seem to get good information. However, on certain
SPEC CPU 2000 benchmarks, the compiler stops with `counter mismatch'
errors and `counter contains illegal value' (typically negative value)
errors.

 I really need correct profile information before PRE. By moving
rest_of_handle_branch_prob() just before rest_of_handle_gcse() have I
violated some critical assumptions which is causing the profile
information to be occasionally corrupted ?

David P.


gcc 4.1 RC1 and SPEC CPU 2000

2006-02-20 Thread djp
Hi,

 I've been testing gcc-4.1 RC1 on x86-linux-gnu with SPEC CPU 2000.

 There are two main reasons I did this:
a) gcc is used for research experimentation and many research folks rely
on SPECCPU2000
b) I, in particular, need SPEC CPU 2000 to work with profile driven
feedback.

 I provide a matrix which shows gcc-4.1-RC1 on SPECPU 2000 w/wo profile
driven optimizations.

 I'm using -fprofile-generate for the training run compile and
-fprofile-use for the profile driven compilation.

 I'm using -O3 for both compiles.

 I enclose a small matrix below of what does and what does not work:

The error legend code is as follows:

OK  = everything works
C   = compilation failure
  C1 program source not accepted
  C2 gcda counter information not found error
  eg. cfftb.f90: In function passb5:
  cfftb.f90:387: note: file cfftb.gcda not found, execution counts
estimated
  cfftf.f90: In function passf5:
  cfftf.f90:387: note: file cfftf.gcda not found, execution counts
estimated
Vt  = Failure of verification of benchmarks output for `test' workload.

Benchmark   Plain compile   Profile Driven Compile

168.wupwise  Vt   C2,Vt
172.mgridVt   C2,Vt
177.mesaOK  OK
179.art OK  OK
187.facerec  Vt   C2,Vt
189.lucas   OKC2,Vt
200.sixtrack Vt   C2,Vt
171.swim Vt   C2,Vt
173.applu   OKC2,Vt
178.galgel   C1   C1
183.equake  OK  OK
188.ammpOK  OK
191.fma3dVt   C2,Vt
301.apsi Vt   C2,Vt

164.gzipOK  OK
175.vpr OK  OK
176.gcc  C1 (reorg.c) C1 (reorg.c)
181.mcf OK  OK
186.crafty  OK  OK
197.parser  OK  OK
252.eon OK  OK
253.perlbmk OK  OK
254.gap OK  OK
255.vortex  OK   Vt
256.bzip2   OK  OK
300.twolf   OK  OK

I haven't tried the `ref' workloads yet.

This looks a smidge grim.

David.