Bug 55283 - EON performance regression at -O2 due to loop unrolling changes
Summary: EON performance regression at -O2 due to loop unrolling changes
Status: UNCONFIRMED
Alias: None
Product: gcc
Classification: Unclassified
Component: middle-end (show other bugs)
Version: 4.8.0
: P3 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords: missed-optimization
Depends on:
Blocks:
 
Reported: 2012-11-12 10:44 UTC by Jan Hubicka
Modified: 2024-03-28 04:48 UTC (History)
0 users

See Also:
Host:
Target:
Build:
Known to work:
Known to fail:
Last reconfirmed:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jan Hubicka 2012-11-12 10:44:02 UTC
EON regressed by about 20% at -O2 due to

2012-11-06  Jan Hubicka  <jh@suse.cz>

        * cfgloopanal.c (get_loop_hot_path): New function.
        * tree-ssa-lop-ivcanon.c (struct loop_size): Add CONSTANT_IV,
        NUM_NON_PURE_CALLS_ON_HOT_PATH, NUM_PURE_CALLS_ON_HOT_PATH,
        NUM_BRANCHES_ON_HOT_PATH.
        (tree_estimate_loop_size): Compute the new values.
        (try_unroll_loop_completely): Disable unrolling of loops with only
        calls or too many branches.
        (tree_unroll_loops_completely): Deal also with outer loops of hot loops.
        * cfgloop.h (get_loop_hot_path): Declare.
        * params.def (PARAM_MAX_PEEL_BRANCHES): New parameters.
        * invoke.texi (max-peel-branches): Document.

This seems to be bad cost model on array accesses because we unroll only for size at -O2