mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-01 08:23:21 +01:00
e74d980a02
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 llvm-svn: 103356 |
||
---|---|---|
.. | ||
ABCD | ||
ADCE | ||
ArgumentPromotion | ||
BlockPlacement | ||
BranchFolding | ||
CodeExtractor | ||
CodeGenPrepare | ||
ConstantMerge | ||
ConstProp | ||
DeadArgElim | ||
DeadStoreElimination | ||
FunctionAttrs | ||
GlobalDCE | ||
GlobalOpt | ||
GVN | ||
IndVarSimplify | ||
Inline | ||
InstCombine | ||
Internalize | ||
IPConstantProp | ||
JumpThreading | ||
LCSSA | ||
LICM | ||
LoopDeletion | ||
LoopIndexSplit | ||
LoopRotate | ||
LoopSimplify | ||
LoopStrengthReduce | ||
LoopUnroll | ||
LoopUnswitch | ||
LowerInvoke | ||
LowerSetJmp | ||
LowerSwitch | ||
Mem2Reg | ||
MemCpyOpt | ||
MergeFunc | ||
PruneEH | ||
Reassociate | ||
ScalarRepl | ||
SCCP | ||
SimplifyCFG | ||
SimplifyLibCalls | ||
Sink | ||
SRETPromotion | ||
SSI | ||
StripSymbols | ||
TailCallElim | ||
TailDup |