search for: outerloophead

Displaying 4 results from an estimated 4 matches for "outerloophead".

Did you mean: outerloopheader
2017 Dec 05
0
CFG normalization: avoiding `br i1 false`
...plifyCFG) is updating 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 > > T...
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`
...implifyCFG) is updating 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, --...
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