This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug tree-optimization/56756] [4.9 Regression] ICE: verify_ssa failed (definition in block n follows the use !)


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

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> 2013-03-28 12:34:24 UTC ---
Ok, so one reason is that we simply "ignore" dependencies when computing
what stmts to move (which happens in the same processing order):

static bool
add_dependency (tree def, struct lim_aux_data *data, struct loop *loop,
                bool add_cost)
{
...
  max_loop = outermost_invariant_loop (def, loop);
  if (!max_loop)
    return false;
...
  def_data = get_lim_data (def_stmt);
  if (!def_data)
    return true;

so, when we don't know anything about the stmt we depend on because we
didn't visit it yet outermost_invariant_loop returns garbage in this case.

But I got side-tracked by the above (which still should be fixed IMHO),
as also store-motion does not properly initialize dependence.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]