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

--- Comment #3 from Andrew Macleod <amacleod at redhat dot com> ---
Its happening in tree-ssa-propagate.cc after the simplification:

      /* If this is a control statement the propagator left edges
         unexecuted on force the condition in a way consistent with
         that.  See PR66945 for cases where the propagator can end
         up with a different idea of a taken edge than folding
         (once undefined behavior is involved).  */
      if (gimple_code (stmt) == GIMPLE_COND)
        {
          if ((EDGE_SUCC (bb, 0)->flags & EDGE_EXECUTABLE)
              ^ (EDGE_SUCC (bb, 1)->flags & EDGE_EXECUTABLE))
            {
              if (((EDGE_SUCC (bb, 0)->flags & EDGE_TRUE_VALUE) != 0)
                  == ((EDGE_SUCC (bb, 0)->flags & EDGE_EXECUTABLE) != 0))
                gimple_cond_make_true (as_a <gcond *> (stmt));
              else
                gimple_cond_make_false (as_a <gcond *> (stmt));
              gimple_set_modified (stmt, true);

It appears that EDGE_EXECUTABLE is incorrect..
Thats as far as I have gotten so far.

Reply via email to