llvm-6502/test/Transforms
Chris Lattner c7d7e0cbe0 make simplifycfg insert an llvm.trap before the 'unreachable' it introduces
when it detects undefined behavior.  llvm.trap generally codegens into some
thing really small (e.g. a 2 byte ud2 instruction on x86) and debugging this
sort of thing is "nontrivial".  For example, we now compile:

void foo() { *(int*)0 = 42; }

into:

_foo:
	pushl	%ebp
	movl	%esp, %ebp
	ud2

Some may even claim that this is a security hole, though that seems dubious
to me.  This addresses rdar://7958343 - Optimizing away null dereference 
potentially allows arbitrary code execution


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@103356 91177308-0d34-0410-b5e6-96231b3b80d8
2010-05-08 22:15:59 +00:00
..
ABCD
ADCE
ArgumentPromotion
BlockPlacement
BranchFolding
CodeExtractor
CodeGenPrepare
ConstantMerge
ConstProp
DeadArgElim
DeadStoreElimination
FunctionAttrs
GlobalDCE
GlobalOpt
GVN
IndVarSimplify
Inline
InstCombine Teach instcombine to transform a bitcast/(zext|trunc)/bitcast sequence 2010-05-08 21:50:26 +00:00
Internalize
IPConstantProp
JumpThreading
LCSSA
LICM
LoopDeletion
LoopIndexSplit
LoopRotate
LoopSimplify
LoopStrengthReduce
LoopUnroll
LoopUnswitch
LowerInvoke
LowerSetJmp
LowerSwitch
Mem2Reg
MemCpyOpt
MergeFunc
PruneEH
Reassociate
ScalarRepl
SCCP
SimplifyCFG make simplifycfg insert an llvm.trap before the 'unreachable' it introduces 2010-05-08 22:15:59 +00:00
SimplifyLibCalls
Sink
SRETPromotion
SSI
StripSymbols
TailCallElim
TailDup