llvm-6502/lib/Transforms/Scalar
Chris Lattner e597f00e1a fix a really nasty bug that Evan was tracking in SCCP. When resolving
undefs in branches/switches, we have two cases: a branch on a literal
undef or a branch on a symbolic value which is undef.  If we have a
literal undef, the code was correct: forcing it to a constant is the
right thing to do.

If we have a branch on a symbolic value that is undef, we should force
the symbolic value to a constant, which then makes the successor block
live.  Forcing the condition of the branch to being a constant isn't 
safe if later paths become live and the value becomes overdefined.  This
is the case that 'forcedconstant' is designed to handle, so just use it.

This fixes rdar://7765019 but there is no good testcase for this, the
one I have is too insane to be useful in the future.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100478 91177308-0d34-0410-b5e6-96231b3b80d8
2010-04-05 22:14:48 +00:00
..
ABCD.cpp
ADCE.cpp
BasicBlockPlacement.cpp
CMakeLists.txt
CodeGenPrepare.cpp
ConstantProp.cpp
DCE.cpp
DeadStoreElimination.cpp
GEPSplitter.cpp
GVN.cpp
IndVarSimplify.cpp require that the branch being controlled by the IV 2010-04-03 07:21:39 +00:00
JumpThreading.cpp
LICM.cpp
LoopDeletion.cpp
LoopIndexSplit.cpp
LoopRotation.cpp
LoopStrengthReduce.cpp
LoopUnrollPass.cpp
LoopUnswitch.cpp some code cleanups, use SwitchInst::findCaseValue, reduce indentation 2010-04-05 21:18:32 +00:00
Makefile
MemCpyOptimizer.cpp Reapply address space patch after fixing an issue in MemCopyOptimizer. 2010-04-04 03:10:48 +00:00
Reassociate.cpp
Reg2Mem.cpp
Scalar.cpp
ScalarReplAggregates.cpp Reapply address space patch after fixing an issue in MemCopyOptimizer. 2010-04-04 03:10:48 +00:00
SCCP.cpp fix a really nasty bug that Evan was tracking in SCCP. When resolving 2010-04-05 22:14:48 +00:00
SCCVN.cpp
SimplifyCFGPass.cpp
SimplifyHalfPowrLibCalls.cpp
SimplifyLibCalls.cpp Reapply address space patch after fixing an issue in MemCopyOptimizer. 2010-04-04 03:10:48 +00:00
TailDuplication.cpp
TailRecursionElimination.cpp