Hello.

As profile-guided optimization can provide very useful information
about basic block frequencies within a loop, following patch set leverages
that information. It speeds up a single benchmark from upcoming SPECv6
suite by 20% (-O2 -profile-generate/-fprofile use) and I think it can
also improve others (currently measuring numbers for PGO).

Idea is quite simple, where each cost (belonging to a BB) is
multiplied by (bb_frequency / header_frequency), which suppress IV uses
in basic blocks with a low frequency.

The patch set can bootstrap on ppc64le-linux-gnu (and also
x86_64-linux-gnu) and no new regression is introduced.

Ready for trunk?
Thanks,
Martin

marxin (3):
  Encapsulate comp_cost within a class with methods.
  Add profiling support for IVOPTS
  Enhance dumps of IVOPTS

 gcc/testsuite/g++.dg/tree-ssa/ivopts-3.C |   2 +-
 gcc/tree-ssa-loop-ivopts.c               | 690 ++++++++++++++++++++++---------
 2 files changed, 491 insertions(+), 201 deletions(-)

-- 
2.8.1

Reply via email to