http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55283



             Bug #: 55283

           Summary: EON performance regression at -O2 due to loop

                    unrolling changes

    Classification: Unclassified

           Product: gcc

           Version: 4.8.0

            Status: UNCONFIRMED

          Severity: normal

          Priority: P3

         Component: middle-end

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: hubi...@gcc.gnu.org





EON regressed by about 20% at -O2 due to



2012-11-06  Jan Hubicka  <j...@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

Reply via email to