https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66335

            Bug ID: 66335
           Summary: a dump bug related to loop invariant in
                    before_dom_children
           Product: gcc
           Version: 4.9.2
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: tree-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: zhongyunde at huawei dot com
  Target Milestone: ---

in function invariantness_dom_walker::before_dom_children based on gcc 4.9.2 ,
we can see the following code:

      if (!determine_max_movement (stmt, pos == MOVE_PRESERVE_EXECUTION))
         {
           lim_data->max_loop = NULL;
           continue;
         }

     if (dump_file && (dump_flags & TDF_DETAILS))
         {
           print_gimple_stmt (dump_file, stmt, 2, 0);
           fprintf (dump_file, "  invariant up to level %d, cost %d.\n\n",
                      loop_depth (lim_data->max_loop),
                      lim_data->cost);
         }

      if (lim_data->cost >= LIM_EXPENSIVE)
         set_profitable_level (stmt);
    }
}

as we can't always make sure that the condition 'lim_data->cost >=
LIM_EXPENSIVE' is true, so some issue may entry into the branch '(dump_file &&
(dump_flags & TDF_DETAILS))' but not the above. then, some wrong dump info may
generated.

Reply via email to