fix PR6940: sitofp(undef) folds to 0.0, not undef.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@102358 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-04-26 18:21:23 +00:00
parent 095539f97c
commit 8581c260d3
2 changed files with 15 additions and 2 deletions

View File

@ -1452,6 +1452,8 @@ bool SCCPSolver::ResolvedUndefsIn(Function &F) {
// After a zero extend, we know the top part is zero. SExt doesn't have
// to be handled here, because we don't know whether the top part is 1's
// or 0's.
case Instruction::SIToFP: // some FP values are not possible, just use 0.
case Instruction::UIToFP: // some FP values are not possible, just use 0.
markForcedConstant(I, Constant::getNullValue(ITy));
return true;
case Instruction::Mul:

View File

@ -1,8 +1,19 @@
; RUN: opt %s -sccp -S | FileCheck %s
; PR6940
define double @test1() {
%t = sitofp i32 undef to double
ret double %t
; CHECK: @test1
; CHECK: ret double 0.0
}
; rdar://7832370
; Check that lots of stuff doesn't get turned into undef.
define i32 @main() nounwind readnone ssp {
define i32 @test2() nounwind readnone ssp {
; CHECK: @test2
init:
br label %control.outer.outer