Displaying 4 results from an estimated 4 matches for "innerloophdr".
2017 Dec 05
0
CFG normalization: avoiding `br i1 false`
...oopInfo analysis: we can have cases where eliminating trivial branches in an inner loop
will break the outer loop structure, and can cause it to no longer be a loop (consider a perfectly nested
inner loop within an outer loop, where the trivial branch is br i1 false, label %outerloopheader, label %innerloopHdr).
Another problem is if we changed the branches to unconditional ones, which then
makes some inner loop unreachable (i.e. no longer loops in LLVM terminology).
We will need to record these kinds of loops and update the LPM. There maybe more here.
Thanks,
Anna
>
> Thanks,
>
> --
&g...
2017 Nov 29
1
CFG normalization: avoiding `br i1 false`
On Wed, Nov 29, 2017 at 9:48 AM, Philip Reames
<listmail at philipreames.com> wrote:
> There's already a LoopSimplifyCFG which is a loop-pass (and thus can iterate
> with other loop passes) and eliminates trivial branches. Having a simple
> pass which just strips unreachable blocks and converts conditional branches
> to unconditional ones while updating appropriate analyzes
2018 Feb 13
1
CFG normalization: avoiding `br i1 false`
...loopInfo analysis: we can have cases where eliminating trivial branches in an inner loop
will break the outer loop structure, and can cause it to no longer be a loop (consider a perfectly nested
inner loop within an outer loop, where the trivial branch is br i1 false, label %outerloopheader, label %innerloopHdr).
Another problem is if we changed the branches to unconditional ones, which then
makes some inner loop unreachable (i.e. no longer loops in LLVM terminology).
We will need to record these kinds of loops and update the LPM. There maybe more here.
Thanks,
Anna
Thanks,
--
Davide
________________...
2017 Nov 29
3
CFG normalization: avoiding `br i1 false`
There's already a LoopSimplifyCFG which is a loop-pass (and thus can
iterate with other loop passes) and eliminates trivial branches. Having
a simple pass which just strips unreachable blocks and converts
conditional branches to unconditional ones while updating appropriate
analyzes (LoopInfo, DomTree, LCSSA, etc..) seems very reasonable. This
could also be a utility function called