llvm-6502/test/Transforms
Benjamin Kramer 98d6d2372f SimplifyCFG: If we have a PHI node that can evaluate to NULL and do a load or store to the address returned by the PHI node then we can consider this incoming value as dead and remove the edge pointing there, unless there are instructions that can affect control flow executed in between.
In theory this could be extended to other instructions, eg. division by zero, but it's likely that it will "miscompile" some code because people depend on div by zero not trapping. NULL pointer dereference usually leads to a crash so we should be on the safe side.

This shrinks the size of a Release clang by 16k on x86_64.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@138618 91177308-0d34-0410-b5e6-96231b3b80d8
2011-08-26 01:22:29 +00:00
..
ADCE stop accepting begin/end around function bodies in the .ll parser, this isn't pascal anymore. 2011-06-17 06:42:57 +00:00
ArgumentPromotion fix PR8932, a case where arg promotion could infinitely promote. 2011-01-16 08:09:24 +00:00
BlockPlacement
BranchFolding
CodeExtractor manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
CodeGenPrepare Roll r127459 back in: 2011-03-11 21:52:04 +00:00
ConstantMerge Teach the ConstantMerge pass about alignment. Fixes PR10514! 2011-07-27 19:47:34 +00:00
ConstProp Land the long talked about "type system rewrite" patch. This 2011-07-09 17:41:24 +00:00
CorrelatedValuePropagation Test for lazy value info's ability to prove the absense of NULLs in pointers. 2011-01-16 21:57:20 +00:00
DeadArgElim Move "atomic" and "volatile" designations on instructions after the opcode 2011-08-12 22:50:01 +00:00
DeadStoreElimination Atomic load/store handling for the passes using memdep (GVN, DSE, memcpyopt). 2011-08-17 22:22:24 +00:00
EarlyCSE Move "atomic" and "volatile" designations on instructions after the opcode 2011-08-12 22:50:01 +00:00
FunctionAttrs Fix test. 2011-08-16 01:42:56 +00:00
GlobalDCE
GlobalOpt Move "atomic" and "volatile" designations on instructions after the opcode 2011-08-12 22:50:01 +00:00
GVN Atomic load/store handling for the passes using memdep (GVN, DSE, memcpyopt). 2011-08-17 22:22:24 +00:00
IndVarSimplify Made SCEV's UDiv expressions more canonical. When dividing a 2011-08-06 07:00:37 +00:00
Inline rip out a ton of intrinsic modernization logic from AutoUpgrade.cpp, which is 2011-06-18 06:05:24 +00:00
InstCombine Implement Constant::isAllOnesValue(). Fix ConstantFolding to use the new api. 2011-08-24 20:18:38 +00:00
InstSimplify Remove bogus test: for all possible inputs of %X, the 'sub nsw' is guaranteed 2011-07-19 08:22:57 +00:00
Internalize Add test for r127138. 2011-03-07 21:28:14 +00:00
IPConstantProp Add an ipsccp test. Migrated from test/FrontendC++. 2011-08-15 20:50:36 +00:00
JumpThreading Move "atomic" and "volatile" designations on instructions after the opcode 2011-08-12 22:50:01 +00:00
LCSSA Do not add PHIs with no users when creating LCSSA form. Patch by Andrew Clinton. 2011-03-15 07:41:25 +00:00
LICM Atomic load/store support in LICM. 2011-08-15 20:52:09 +00:00
LoopDeletion Add a reduced test case for the buildbot failure (clang self-hosted 2011-06-21 08:33:49 +00:00
LoopIdiom A real testcase for r135286. 2011-07-15 20:58:38 +00:00
LoopRotate remove asmparser support for the old getresult instruction, which has been subsumed by extractvalue. 2011-06-17 06:57:15 +00:00
LoopSimplify SCEV: Use AssertingVH to catch dangling BasicBlock* when passes forget 2011-08-03 18:32:11 +00:00
LoopStrengthReduce LSR, correct fix for rdar://9786536. Silly casting bug. 2011-07-21 01:45:54 +00:00
LoopUnroll A slew of unit tests for the recent LoopInfo::updateUnloop feature 2011-08-11 23:38:09 +00:00
LoopUnswitch Bail on unswitching a switch statement for a case with a critical edge. We name 2011-06-03 06:27:15 +00:00
LowerAtomic Add an atomic lowering pass 2010-08-03 16:19:16 +00:00
LowerExpectIntrinsic Introduce "expect" intrinsic instructions. 2011-07-06 18:22:43 +00:00
LowerInvoke
LowerSwitch
Mem2Reg Add comments and test for atomic load/store and mem2reg. 2011-08-15 23:55:52 +00:00
MemCpyOpt Atomic load/store handling for the passes using memdep (GVN, DSE, memcpyopt). 2011-08-17 22:22:24 +00:00
MergeFunc When removing a function from the function set and adding it to deferred, we 2011-02-09 06:32:02 +00:00
ObjCARC Constant pointers to objects don't need reference counting. 2011-08-22 17:29:11 +00:00
PhaseOrdering Add file. 2011-08-19 21:21:20 +00:00
PruneEH manually upgrade a bunch of tests to modern syntax, and remove some that 2011-06-17 03:14:27 +00:00
Reassociate Remove empty test. 2011-08-02 02:47:45 +00:00
ScalarRepl Move "atomic" and "volatile" designations on instructions after the opcode 2011-08-12 22:50:01 +00:00
SCCP Silly mistake from r137777; restore significant isStructTy() checks. While here, be a bit more defensive 2011-08-17 18:10:43 +00:00
SimplifyCFG SimplifyCFG: If we have a PHI node that can evaluate to NULL and do a load or store to the address returned by the PHI node then we can consider this incoming value as dead and remove the edge pointing there, unless there are instructions that can affect control flow executed in between. 2011-08-26 01:22:29 +00:00
SimplifyLibCalls Move "atomic" and "volatile" designations on instructions after the opcode 2011-08-12 22:50:01 +00:00
Sink Make BasicAliasAnalysis a normal AliasAnalysis implementation which 2010-10-18 18:04:47 +00:00
StripSymbols fix PR10286, a problem with the .ll printer handling block addresses that are out-of-scope. 2011-08-03 06:15:41 +00:00
TailCallElim make the asmparser reject function and type redefinitions. 'Merging' hasn't been 2011-06-17 07:06:44 +00:00
TailDup Move few target-dependant tests to appropriate directories. 2011-05-06 18:24:46 +00:00