llvm-6502/test/Transforms
Manman Ren 4cae9cb034 SimplifyCFG: fix a bug in switch to table conversion
We use gep to access the global array "switch.table", and the table index
should be treated as unsigned. When the highest bit is 1, this commit
zero-extends the index to an integer type with larger size.

For a switch on i2, we used to generate:
%switch.tableidx = sub i2 %0, -2
getelementptr inbounds [4 x i64]* @switch.table, i32 0, i2 %switch.tableidx

It is incorrect when %switch.tableidx is 2 or 3. The fix is to generate
%switch.tableidx = sub i2 %0, -2
%switch.tableidx.zext = zext i2 %switch.tableidx to i3
getelementptr inbounds [4 x i64]* @switch.table, i32 0, i3 %switch.tableidx.zext

rdar://17735071


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@213815 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-23 23:13:23 +00:00
..
ADCE
AddDiscriminators
ArgumentPromotion ArgPromo+DebugInfo: Handle updating debug info over multiple applications of argument promotion. 2014-07-23 22:09:29 +00:00
AtomicExpandLoadLinked/ARM
BBVectorize
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantHoisting
ConstantMerge
ConstProp Look through addrspacecast in IsConstantOffsetFromGlobal 2014-07-14 22:39:26 +00:00
CorrelatedValuePropagation
DeadArgElim
DeadStoreElimination Improve BasicAA CS-CS queries (redux) 2014-07-17 01:28:25 +00:00
DebugIR
EarlyCSE
FunctionAttrs
GCOVProfiling
GlobalDCE
GlobalOpt
GVN Look through addrspacecast in GetPointerBaseWithConstantOffset 2014-07-14 22:39:22 +00:00
IndVarSimplify
Inline
InstCombine This patch implements optimization as mentioned in PR19753: Optimize comparisons with "ashr/lshr exact" of a constanst. 2014-07-22 19:19:36 +00:00
InstMerge MergedLoadStoreMotion pass 2014-07-18 19:13:09 +00:00
InstSimplify Add a dereferenceable attribute 2014-07-18 15:51:28 +00:00
Internalize
IPConstantProp
JumpThreading
LCSSA
LICM Make Value::isDereferenceablePointer handle offsets to pointer types with dereferenceable attributes 2014-07-19 03:25:16 +00:00
LoadCombine
LoopDeletion
LoopIdiom R600: Implement TTI:getPopcntSupport 2014-07-18 06:07:13 +00:00
LoopReroll
LoopRotate
LoopSimplify
LoopStrengthReduce
LoopUnroll Do not add unroll disable metadata after unrolling pass for loops with #pragma clang loop unroll(full). 2014-07-23 20:05:44 +00:00
LoopUnswitch
LoopVectorize Rename metadata llvm.loop.vectorize.unroll to llvm.loop.vectorize.interleave. 2014-07-21 23:11:03 +00:00
LowerAtomic
LowerExpectIntrinsic
LowerInvoke
LowerSwitch
Mem2Reg
MemCpyOpt
MergeFunc MergeFunc patch from Björn Steinbrink. 2014-07-15 10:46:51 +00:00
MetaRenamer
ObjCARC
PhaseOrdering
PruneEH
Reassociate
Reg2Mem
SampleProfile
Scalarizer
ScalarRepl
SCCP
SeparateConstOffsetFromGEP/NVPTX Partially revert r210444 due to performance regression 2014-07-16 23:25:00 +00:00
SimplifyCFG SimplifyCFG: fix a bug in switch to table conversion 2014-07-23 23:13:23 +00:00
Sink
SLPVectorizer
SROA
StripSymbols
StructurizeCFG
TailCallElim We may visit a call that uses an alloca multiple times in callUsesLocalStack, sometimes with IsNocapture true and sometimes with IsNocapture false. We accidentally skipped work we needed to do in the IsNocapture=false case if we were called with IsNocapture=true the first time. Fixes PR20405! 2014-07-23 06:24:49 +00:00
TailDup