diff options
author | Chris Lattner <sabre@nondot.org> | 2010-04-26 18:21:23 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2010-04-26 18:21:23 +0000 |
commit | 87aa2243e24abf96a46df62e66906af91cba12d3 (patch) | |
tree | ceea39d06e041817289ea2f540dc234cedc840ac | |
parent | 6147a7b9b8fe53f02b79396da1b9f824b6a80de8 (diff) | |
download | bcm5719-llvm-87aa2243e24abf96a46df62e66906af91cba12d3.tar.gz bcm5719-llvm-87aa2243e24abf96a46df62e66906af91cba12d3.zip |
fix PR6940: sitofp(undef) folds to 0.0, not undef.
llvm-svn: 102358
-rw-r--r-- | llvm/lib/Transforms/Scalar/SCCP.cpp | 2 | ||||
-rw-r--r-- | llvm/test/Transforms/SCCP/undef-resolve.ll | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/llvm/lib/Transforms/Scalar/SCCP.cpp b/llvm/lib/Transforms/Scalar/SCCP.cpp index 59cdee652dc..907ece8fcce 100644 --- a/llvm/lib/Transforms/Scalar/SCCP.cpp +++ b/llvm/lib/Transforms/Scalar/SCCP.cpp @@ -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: diff --git a/llvm/test/Transforms/SCCP/undef-resolve.ll b/llvm/test/Transforms/SCCP/undef-resolve.ll index d2f3d0206d7..bed561c8e4f 100644 --- a/llvm/test/Transforms/SCCP/undef-resolve.ll +++ b/llvm/test/Transforms/SCCP/undef-resolve.ll @@ -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 |