This is the mail archive of the gcc@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]

Re: Question about always executed info computed in tree-ssa-loop-im.c


On Wed, Jul 8, 2015 at 8:52 AM, Bin.Cheng <amker.cheng@gmail.com> wrote:
> Hi,
> Function fill_always_executed_in_1 computes basic blocks' always
> executed information, and it has below code and comment:
>
>           /* In a loop that is always entered we may proceed anyway.
>          But record that we entered it and stop once we leave it.  */
>           inn_loop = bb->loop_father;
>
> Then in following iterations, it breaks the loop if basic block not
> belonging to the inner loop is encountered.  This means basic blocks
> after inner loop won't have always executed information computed, even
> they dominates the original loop's latch.
>
> Am I missing something?  Why is that?

To improve here it would need to verify that all exits of the inner loop
exit to the same BB of the outer loop and that no exit skips any blocks
in the outer loop.  Like for

  for (;;)
    {
      for (;;) { if (x) goto skip; if (y) break }
      foo();
    skip:
    }

so it is just a simple and conservative algorithm it seems.  It's also
quadratic in the number of BBs of the outermost loop.

> Thanks,
> bin


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