llvm-6502/test/Transforms/SimplifyCFG
Hans Wennborg 09a31f3154 Allow switch-to-lookup table for tables with holes by adding bitmask check
This allows us to generate table lookups for code such as:

  unsigned test(unsigned x) {
    switch (x) {
      case 100: return 0;
      case 101: return 1;
      case 103: return 2;
      case 105: return 3;
      case 107: return 4;
      case 109: return 5;
      case 110: return 6;
      default: return f(x);
    }
  }

Since cases 102, 104, etc. are not constants, the lookup table has holes
in those positions. We therefore guard the table lookup with a bitmask check.

Patch by Jasper Neumann!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@203694 91177308-0d34-0410-b5e6-96231b3b80d8
2014-03-12 18:35:40 +00:00
..
SPARC
X86
2002-05-21-PHIElimination.ll
2002-09-24-PHIAssertion.ll
2003-03-07-DominateProblem.ll
2003-08-05-InvokeCrash.ll
2003-08-17-BranchFold.ll
2003-08-17-BranchFoldOrdering.ll
2003-08-17-FoldSwitch-dbg.ll
2003-08-17-FoldSwitch.ll
2004-12-10-SimplifyCFGCrash.ll
2005-06-16-PHICrash.ll
2005-08-01-PHIUpdateFail.ll
2005-10-02-InvokeSimplify.ll
2005-12-03-IncorrectPHIFold.ll
2006-02-17-InfiniteUnroll.ll
2006-06-12-InfLoop.ll
2006-08-03-Crash.ll
2006-10-19-UncondDiv.ll
2006-12-08-Ptr-ICmp-Branch.ll
2007-11-22-InvokeNoUnwind.ll
2007-12-21-Crash.ll
2008-01-02-hoist-fp-add.ll
2008-05-16-PHIBlockMerge.ll
2008-07-13-InfLoopMiscompile.ll
2008-09-08-MultiplePred.ll
2008-09-17-SpeculativeHoist.ll
2008-10-03-SpeculativelyExecuteBeforePHI.ll
2008-12-06-SingleEntryPhi.ll
2008-12-16-DCECond.ll
2009-01-18-PHIPropCrash.ll
2009-01-19-UnconditionalTrappingConstantExpr.ll
2009-05-12-externweak.ll
2010-03-30-InvokeCrash.ll
2011-03-08-UnreachableUse.ll
2011-09-05-TrivialLPad.ll
attr-noduplicate.ll
basictest.ll
branch-cond-merge.ll
branch-cond-prop.ll
branch-fold-dbg.ll
branch-fold-test.ll
branch-fold.ll
branch-phi-thread.ll
BrUnwind.ll
common-dest-folding.ll
CoveredLookupTable.ll
dbginfo.ll
dce-cond-after-folding-terminator.ll
DeadSetCC.ll
duplicate-phis.ll
EmptyBlockMerge.ll
EqualPHIEdgeBlockMerge.ll
ForwardSwitchConditionToPHI.ll
hoist-common-code.ll
hoist-dbgvalue.ll
HoistCode.ll
indirectbr.ll
invoke_unwind.ll
invoke.ll
iterative-simplify.ll
lifetime.ll
MagicPointer.ll
multiple-phis.ll
no_speculative_loads_with_tsan.ll
noreturn-call.ll
phi-undef-loadstore.ll
PhiBlockMerge2.ll
PhiBlockMerge.ll
PhiEliminate2.ll
PhiEliminate3.ll
PhiEliminate.ll
PHINode.ll
PhiNoEliminate.ll
PR9946.ll
PR16069.ll
preserve-branchweights-partial.ll
preserve-branchweights-switch-create.ll
preserve-branchweights.ll
return-merge.ll
select-gep.ll
sink-common-code.ll
speculate-math.ll
speculate-store.ll
speculate-with-offset.ll
SpeculativeExec.ll
switch_create.ll
switch_switch_fold.ll
switch_thread.ll
switch-masked-bits.ll
switch-on-const-select.ll
switch-simplify-crash.ll
switch-to-icmp.ll
trap-debugloc.ll
trapping-load-unreachable.ll
trivial-throw.ll
two-entry-phi-return.ll
UncondBranchToReturn.ll
unreachable-blocks.ll
UnreachableEliminate.ll
volatile-phioper.ll