llvm-project/llvm/test/Transforms/LoopUnswitch
Sanjoy Das a37bb4a65d [LoopUnswitch] Unswitch on conditions feeding into guards
Summary:
This is a straightforward extension of what LoopUnswitch does to
branches to guards.  That is, we unswitch

```
for (;;) {
  ...
  guard(loop_invariant_cond);
  ...
}
```

into

```
if (loop_invariant_cond) {
  for (;;) {
    ...
    // There is no need to emit guard(true)
    ...
  }
} else {
  for (;;) {
    ...
    guard(false);
    // SimplifyCFG will clean this up by adding an
    // unreachable after the guard(false)
    ...
  }
}
```

Reviewers: majnemer

Subscribers: mcrosier, llvm-commits, mzolotukhin

Differential Revision: http://reviews.llvm.org/D21725

llvm-svn: 273801
2016-06-26 05:10:45 +00:00
..
2006-06-13-SingleEntryPHI.ll
2006-06-27-DeadSwitchCase.ll
2007-05-09-Unreachable.ll
2007-05-09-tl.ll
2007-07-12-ExitDomInfo.ll
2007-07-13-DomInfo.ll
2007-07-18-DomInfo.ll
2007-08-01-Dom.ll
2007-08-01-LCSSA.ll
2007-10-04-DomFrontier.ll
2008-06-02-DomInfo.ll
2008-06-17-DomFrontier.ll
2008-11-03-Invariant.ll
2010-11-18-LCSSA.ll
2011-06-02-CritSwitch.ll
2011-09-26-EHCrash.ll Remove the ScalarReplAggregates pass 2016-06-15 00:19:09 +00:00
2011-11-18-SimpleSwitch.ll
2011-11-18-TwoSwitches-Threshold.ll
2011-11-18-TwoSwitches.ll
2012-04-02-IndirectBr.ll
2012-04-30-LoopUnswitch-LPad-Crash.ll
2012-05-20-Phi.ll
2015-06-17-Metadata.ll [SimlifyCFG] Prevent passes from destroying canonical loop structure, especially for nested loops 2016-03-29 04:08:57 +00:00
2015-09-18-Addrspace.ll
LIV-loop-condtion.ll
basictest.ll
cleanuppad.ll
cold-loop.ll
copy-metadata.ll
crash.ll
exponential-behavior.ll [LoopUnswitch] Avoid exponential behavior 2016-06-25 01:14:19 +00:00
guards.ll [LoopUnswitch] Unswitch on conditions feeding into guards 2016-06-26 05:10:45 +00:00
infinite-loop.ll [SimlifyCFG] Prevent passes from destroying canonical loop structure, especially for nested loops 2016-03-29 04:08:57 +00:00
msan.ll Add a missing test. 2016-06-14 21:24:13 +00:00
preserve-analyses.ll
trivial-unswitch.ll