diff options
author | Duncan Sands <baldrick@free.fr> | 2009-02-04 11:17:06 +0000 |
---|---|---|
committer | Duncan Sands <baldrick@free.fr> | 2009-02-04 11:17:06 +0000 |
commit | e7d54791366437daf5cc1a7650633d9ab7cf7c9c (patch) | |
tree | 592f492381e067fc095fe6bf3aa55ab556bae761 | |
parent | 1ea1173143db111b2e3d82a41e6413275c54f1e7 (diff) | |
download | bcm5719-llvm-e7d54791366437daf5cc1a7650633d9ab7cf7c9c.tar.gz bcm5719-llvm-e7d54791366437daf5cc1a7650633d9ab7cf7c9c.zip |
Allow the inverse transform x86_fp80 -> i80 (also
fires during the Ada build).
llvm-svn: 63731
-rw-r--r-- | llvm/lib/VMCore/ConstantFold.cpp | 13 | ||||
-rw-r--r-- | llvm/test/Transforms/InstCombine/2009-02-04-FPBitcast.ll | 5 |
2 files changed, 9 insertions, 9 deletions
diff --git a/llvm/lib/VMCore/ConstantFold.cpp b/llvm/lib/VMCore/ConstantFold.cpp index 5f7cbcd0b60..ff4d897e54a 100644 --- a/llvm/lib/VMCore/ConstantFold.cpp +++ b/llvm/lib/VMCore/ConstantFold.cpp @@ -161,17 +161,12 @@ static Constant *FoldBitCast(Constant *V, const Type *DestTy) { // Otherwise, can't fold this (vector?) return 0; } - + // Handle ConstantFP input. - if (const ConstantFP *FP = dyn_cast<ConstantFP>(V)) { + if (const ConstantFP *FP = dyn_cast<ConstantFP>(V)) // FP -> Integral. - if (DestTy == Type::Int32Ty) { - return ConstantInt::get(FP->getValueAPF().bitcastToAPInt()); - } else { - assert(DestTy == Type::Int64Ty && "only support f32/f64 for now!"); - return ConstantInt::get(FP->getValueAPF().bitcastToAPInt()); - } - } + return ConstantInt::get(FP->getValueAPF().bitcastToAPInt()); + return 0; } diff --git a/llvm/test/Transforms/InstCombine/2009-02-04-FPBitcast.ll b/llvm/test/Transforms/InstCombine/2009-02-04-FPBitcast.ll index 4d7b70a1155..b08c9622502 100644 --- a/llvm/test/Transforms/InstCombine/2009-02-04-FPBitcast.ll +++ b/llvm/test/Transforms/InstCombine/2009-02-04-FPBitcast.ll @@ -5,3 +5,8 @@ define x86_fp80 @cast() { %tmp = bitcast i80 0 to x86_fp80 ; <x86_fp80> [#uses=1] ret x86_fp80 %tmp } + +define i80 @invcast() { + %tmp = bitcast x86_fp80 0xK00000000000000000000 to i80 ; <i80> [#uses=1] + ret i80 %tmp +} |