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/83410] [8 regression] libgomp.graphite/force-parallel-4.c etc. FAIL


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

--- Comment #8 from Richard Biener <rguenth at gcc dot gnu.org> ---
So it's SCOP detection failing in

      /* Check for unstructured control flow: CFG not generated by structured
         if-then-else.  */
      if (bb->succs->length () > 1)
        {
          edge e;
          edge_iterator ei;
          FOR_EACH_EDGE (e, ei, bb->succs)
            if (!dominated_by_p (CDI_POST_DOMINATORS, bb, e->dest)
                && !dominated_by_p (CDI_DOMINATORS, e->dest, bb))
              return true;
        }

for the result because we have one if arm containing the loop exit
and the other not.  I'm not exactly sure what can go wrong and why
this test exists...  as usual it didn't come with a testcase (r232657).

For autopar we also like to lift the single-loop-SCOP restriction.

Note that when I remove that check we still FAIL because we are not able
to compute the number of iterations of such loop anymore
(number_of_iterations_exit fails).  So I think this is a generally bad
threading
before loop opts if it causes this!  This is probably due to the
fact that the block with the exit test doesn't dominate the latch block
(sth to test in threading?).

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