summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/DemoteRegToStack.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-04-05 22:14:48 +0000
committerChris Lattner <sabre@nondot.org>2010-04-05 22:14:48 +0000
commitadca6082812fa43d1ad4d76d305b80aaa0e8f0d4 (patch)
tree40d91e262e071b303122fe1f27af5a1aeaf2dfe4 /llvm/lib/Transforms/Utils/DemoteRegToStack.cpp
parent01fa5c3734d6bc44c498abe8c4410b00d1edad71 (diff)
downloadbcm5719-llvm-adca6082812fa43d1ad4d76d305b80aaa0e8f0d4.tar.gz
bcm5719-llvm-adca6082812fa43d1ad4d76d305b80aaa0e8f0d4.zip
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. llvm-svn: 100478
Diffstat (limited to 'llvm/lib/Transforms/Utils/DemoteRegToStack.cpp')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud