On 10/14/2016 10:01 AM, Thomas Schwinge wrote:
After the "Add Early VRP" GCC trunk commit r240291 (Kugan CC for your
information), I've been observing all kinds of OpenACC offloading
failures.  I now figured out what's going on.

The "evrp" pass uses basic_block's BB_VISITED flag.  It first clears
these all, gcc/tree-vrp.c:execute_early_vrp:

      FOR_EACH_BB_FN (bb, cfun)
        {
          bb->flags &= ~BB_VISITED;

..., then does its processing, and at the end, clears these again:

      FOR_EACH_BB_FN (bb, cfun)
        bb->flags &= ~BB_VISITED;

I note that this looks slightly different from what
gcc/cfg.c:clear_bb_flags whould be doing, which works from
ENTRY_BLOCK_PTR_FOR_FN onwards:

So maybe it should just call clear_bb_flags instead of doing the loop itself? Ok if that works.


Bernd

Reply via email to