llvm-6502/lib/Transforms/Scalar
Bob Wilson 9d2ed8e632 Add an argument to PHITranslateValue to specify the DominatorTree. If this
argument is non-null, pass it along to PHITranslateSubExpr so that it can
prefer using existing values that dominate the PredBB, instead of just
blindly picking the first equivalent value that it finds on a uselist.
Also when the DominatorTree is specified, have PHITranslateValue filter
out any result that does not dominate the PredBB.  This is basically just
refactoring the check that used to be in GetAvailablePHITranslatedSubExpr
and also in GVN.

Despite my initial expectations, this change does not affect the results
of GVN for any testcases that I could find, but it should help compile time.
Before this change, if PHITranslateSubExpr picked a value that does not
dominate, PHITranslateWithInsertion would then insert a new value, which GVN
would later determine to be redundant and would replace.  By picking a good
value to begin with, we save GVN the extra work of inserting and then
replacing a new value.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@97010 91177308-0d34-0410-b5e6-96231b3b80d8
2010-02-24 01:39:00 +00:00
..
ABCD.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
ADCE.cpp Use do+while instead of while for loops which obviously have a 2010-01-05 16:27:25 +00:00
BasicBlockPlacement.cpp eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 2009-09-02 06:11:42 +00:00
CMakeLists.txt Pull these back out, they're a little too aggressive and time 2010-02-09 17:29:18 +00:00
CodeGenPrepare.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
ConstantProp.cpp remove a bunch of extraneous LLVMContext arguments 2009-11-06 04:27:31 +00:00
DCE.cpp eliminate VISIBILITY_HIDDEN from Transforms/Scalar. PR4861 2009-09-02 06:11:42 +00:00
DeadStoreElimination.cpp Make DSE only scan blocks that are reachable from the entry 2010-02-11 05:11:54 +00:00
GEPSplitter.cpp Check in the experimental GEP splitter pass. This pass splits complex 2009-10-26 19:12:14 +00:00
GVN.cpp Add an argument to PHITranslateValue to specify the DominatorTree. If this 2010-02-24 01:39:00 +00:00
IndVarSimplify.cpp Remove unused variables and parameters. 2010-02-22 04:11:59 +00:00
JumpThreading.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
LICM.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
LoopDeletion.cpp LoopDeletion depends on loops having dedicated exits. 2009-11-05 21:47:04 +00:00
LoopIndexSplit.cpp Use do+while instead of while for loops which obviously have a 2010-01-05 16:27:25 +00:00
LoopRotation.cpp Update various Loop optimization passes to cope with the possibility that 2009-11-05 21:11:53 +00:00
LoopStrengthReduce.cpp Remove unused variables and parameters. 2010-02-22 04:11:59 +00:00
LoopUnrollPass.cpp Don't unroll loops containing function calls. 2010-02-05 23:21:31 +00:00
LoopUnswitch.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
Makefile make -fno-rtti the default unless a directory builds with REQUIRES_RTTI. 2010-01-24 20:43:08 +00:00
MemCpyOptimizer.cpp Uniformize the names of type predicates: rather than having isFloatTy and 2010-02-15 16:12:20 +00:00
Reassociate.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
Reg2Mem.cpp clean up this code a bit. 2009-09-02 06:15:37 +00:00
Scalar.cpp remove the now dead condprop pass, PR3906. 2009-11-11 05:56:35 +00:00
ScalarReplAggregates.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
SCCP.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
SCCVN.cpp Use do+while instead of while for loops which obviously have a 2010-01-05 16:27:25 +00:00
SimplifyCFGPass.cpp Teach SimplifyCFG about magic pointer constants. 2010-02-05 22:03:18 +00:00
SimplifyHalfPowrLibCalls.cpp Fix "the the" and similar typos. 2010-02-10 16:03:48 +00:00
SimplifyLibCalls.cpp There are two ways of checking for a given type, for example isa<PointerType>(T) 2010-02-16 11:11:14 +00:00
TailDuplication.cpp Change errs() to dbgs(). 2010-01-05 01:27:33 +00:00
TailRecursionElimination.cpp Revert 94937 and move the noreturn check to codegen. 2010-02-03 03:55:59 +00:00