llvm-project/llvm/lib/Transforms/Utils
Hans Wennborg ac114a3ce7 Switch-to-lookup tables: Don't require a result for the default
case when the lookup table doesn't have any holes.

This means we can build a lookup table for switches like this:

  switch (x) {
    case 0: return 1;
    case 1: return 2;
    case 2: return 3;
    case 3: return 4;
    default: exit(1);
  }

The default case doesn't yield a constant result here, but that doesn't matter,
since a default result is only necessary for filling holes in the lookup table,
and this table doesn't have any holes.

This makes us transform 505 more switches in a clang bootstrap, and shaves 164 KB
off the resulting clang binary.

llvm-svn: 199025
2014-01-12 00:44:41 +00:00
..
ASanStackFrameLayout.cpp [asan] fix ndebug build with strict warnings (-Wunused-variable) 2013-12-06 09:26:09 +00:00
BasicBlockUtils.cpp [asan] don't unpoison redzones on function exit in use-after-return mode. 2013-12-23 14:15:08 +00:00
BreakCriticalEdges.cpp Remove the very substantial, largely unmaintained legacy PGO 2013-10-02 15:42:23 +00:00
BuildLibCalls.cpp Enable double to float shrinking optimizations for binary functions like 'fmin/fmax'. Fix radar:15283121 2013-12-16 22:42:40 +00:00
BypassSlowDivision.cpp Bypass Slow Divides 2013-03-04 18:13:57 +00:00
CMakeLists.txt [asan] rewrite asan's stack frame layout 2013-12-06 09:00:17 +00:00
CloneFunction.cpp Extend RemapInstruction and friends to take an optional new parameter, a ValueMaterializer. 2013-05-28 15:17:05 +00:00
CloneModule.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
CmpInstAnalysis.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
CodeExtractor.cpp Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
DemoteRegToStack.cpp Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
FlattenCFG.cpp Convert manual insert point restores to the new RAII object. 2013-09-30 15:40:17 +00:00
GlobalStatus.cpp Handle calls and invokes in GlobalStatus. 2013-10-25 21:29:52 +00:00
InlineFunction.cpp Fix inlining to not lose the "cleanup" clause from landingpads 2013-12-08 00:51:21 +00:00
InstructionNamer.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
IntegerDivision.cpp Add support for software expansion of 64-bit integer division instructions. 2013-11-19 06:54:19 +00:00
LCSSA.cpp Quick look-up for block in loop. 2013-10-26 03:08:02 +00:00
LLVMBuild.txt
Local.cpp Transforms: Don't create bad branch weights when folding a switch 2013-12-10 00:13:41 +00:00
LoopSimplify.cpp Reapply r198478 "Fix PR18361: Invalidate LoopDispositions after LoopSimplify hoists things." 2014-01-06 19:43:14 +00:00
LoopUnroll.cpp Don't #include heavy Dominators.h file in LoopInfo.h. This change reduces 2013-12-07 21:20:17 +00:00
LoopUnrollRuntime.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
LowerExpectIntrinsic.cpp Fix spelling intruction -> instruction. 2013-09-28 11:46:15 +00:00
LowerInvoke.cpp Remove several unused variables. 2013-10-01 13:32:03 +00:00
LowerSwitch.cpp Revert patches to add case-range support for PR1255. 2013-09-09 19:14:35 +00:00
Makefile
Mem2Reg.cpp Revert r187191, which broke opt -mem2reg on the testcases included in PR16867. 2013-08-13 22:51:58 +00:00
MetaRenamer.cpp Add 'const' qualifier to some arrays. 2013-07-15 08:02:13 +00:00
ModuleUtils.cpp Respect llvm.used in Internalize. 2013-07-25 03:23:25 +00:00
PromoteMemoryToRegister.cpp Correct word hyphenations 2013-12-05 05:44:44 +00:00
SSAUpdater.cpp Basic blocks typically have few predecessors. Use a SmallDenseMap to 2013-10-14 16:05:55 +00:00
SimplifyCFG.cpp Switch-to-lookup tables: Don't require a result for the default 2014-01-12 00:44:41 +00:00
SimplifyIndVar.cpp Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
SimplifyInstructions.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
SimplifyLibCalls.cpp Enable double to float shrinking optimizations for binary functions like 'fmin/fmax'. Fix radar:15283121 2013-12-16 22:42:40 +00:00
SpecialCaseList.cpp Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
UnifyFunctionExitNodes.cpp Move all of the header files which are involved in modelling the LLVM IR 2013-01-02 11:36:10 +00:00
Utils.cpp Re-sort all of the includes with ./utils/sort_includes.py so that 2014-01-07 11:48:04 +00:00
ValueMapper.cpp Extend RemapInstruction and friends to take an optional new parameter, a ValueMaterializer. 2013-05-28 15:17:05 +00:00