aboutsummaryrefslogtreecommitdiff
path: root/gcc/expr.cc
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2023-07-27 20:06:37 +0200
committerJan Hubicka <jh@suse.cz>2023-07-27 20:08:38 +0200
commita7d4310aed539b04345894ebafb49ca364780653 (patch)
tree4eccf9cd5478617b3ebbc73373b75b071244297b /gcc/expr.cc
parent081e25d3cfd86c4094999ded0bbe99b91762013c (diff)
downloadgcc-a7d4310aed539b04345894ebafb49ca364780653.zip
gcc-a7d4310aed539b04345894ebafb49ca364780653.tar.gz
gcc-a7d4310aed539b04345894ebafb49ca364780653.tar.bz2
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.
Diffstat (limited to 'gcc/expr.cc')
0 files changed, 0 insertions, 0 deletions