|  a37bb4a65d 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 | ||
|---|---|---|
| .. | ||
| 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 | ||
| 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 | ||
| 2015-09-18-Addrspace.ll | ||
| LIV-loop-condtion.ll | ||
| basictest.ll | ||
| cleanuppad.ll | ||
| cold-loop.ll | ||
| copy-metadata.ll | ||
| crash.ll | ||
| exponential-behavior.ll | ||
| guards.ll | ||
| infinite-loop.ll | ||
| msan.ll | ||
| preserve-analyses.ll | ||
| trivial-unswitch.ll | ||