Fix profile update after RTL unrolling
This patch fixes profile update after RTL unroll, that is now done same way as in tree one. We still produce (slightly) corrupted profile for multiple exit loops I can try to fix incrementally. I also updated testcases to look for profile mismatches so they do not creep back in again. gcc/ChangeLog: * cfgloop.h (single_dom_exit): Declare. * cfgloopmanip.h (update_exit_probability_after_unrolling): Declare. * cfgrtl.cc (struct cfg_hooks): Fix comment. * loop-unroll.cc (unroll_loop_constant_iterations): Update exit edge. * tree-ssa-loop-ivopts.h (single_dom_exit): Do not declare it here. * tree-ssa-loop-manip.cc (update_exit_probability_after_unrolling): Break out from ... (tree_transform_and_unroll_loop): ... here; gcc/testsuite/ChangeLog: * gcc.dg/tree-prof/peel-1.c: Test for profile mismatches. * gcc.dg/tree-prof/unroll-1.c: Test for profile mismatches. * gcc.dg/tree-ssa/peel1.c: Test for profile mismatches. * gcc.dg/unroll-1.c: Test for profile mismatches. * gcc.dg/unroll-3.c: Test for profile mismatches. * gcc.dg/unroll-4.c: Test for profile mismatches. * gcc.dg/unroll-5.c: Test for profile mismatches. * gcc.dg/unroll-6.c: Test for profile mismatches.
Showing
- gcc/cfgloop.h 1 addition, 0 deletionsgcc/cfgloop.h
- gcc/cfgloopmanip.h 1 addition, 0 deletionsgcc/cfgloopmanip.h
- gcc/cfgrtl.cc 1 addition, 1 deletiongcc/cfgrtl.cc
- gcc/loop-unroll.cc 7 additions, 1 deletiongcc/loop-unroll.cc
- gcc/testsuite/gcc.dg/tree-prof/peel-1.c 3 additions, 1 deletiongcc/testsuite/gcc.dg/tree-prof/peel-1.c
- gcc/testsuite/gcc.dg/tree-prof/unroll-1.c 3 additions, 2 deletionsgcc/testsuite/gcc.dg/tree-prof/unroll-1.c
- gcc/testsuite/gcc.dg/tree-ssa/peel1.c 2 additions, 1 deletiongcc/testsuite/gcc.dg/tree-ssa/peel1.c
- gcc/testsuite/gcc.dg/unroll-1.c 3 additions, 1 deletiongcc/testsuite/gcc.dg/unroll-1.c
- gcc/testsuite/gcc.dg/unroll-3.c 2 additions, 1 deletiongcc/testsuite/gcc.dg/unroll-3.c
- gcc/testsuite/gcc.dg/unroll-4.c 2 additions, 1 deletiongcc/testsuite/gcc.dg/unroll-4.c
- gcc/testsuite/gcc.dg/unroll-5.c 2 additions, 1 deletiongcc/testsuite/gcc.dg/unroll-5.c
- gcc/testsuite/gcc.dg/unroll-6.c 2 additions, 1 deletiongcc/testsuite/gcc.dg/unroll-6.c
- gcc/tree-ssa-loop-ivopts.h 0 additions, 1 deletiongcc/tree-ssa-loop-ivopts.h
- gcc/tree-ssa-loop-manip.cc 24 additions, 17 deletionsgcc/tree-ssa-loop-manip.cc
Loading
Please register or sign in to comment