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