1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

Fix PR3468: a crash when constant folding a bitcast of

i80 to x86 long double (this was presumably generated
by sroa).

llvm-svn: 63730
This commit is contained in:
Duncan Sands 2009-02-04 10:17:14 +00:00
parent ed9464bdec
commit 528bb91ea8
2 changed files with 12 additions and 6 deletions

View File

@ -154,11 +154,10 @@ static Constant *FoldBitCast(Constant *V, const Type *DestTy) {
// be the same. Consequently, we just fold to V.
return V;
if (DestTy->isFloatingPoint()) {
assert((DestTy == Type::DoubleTy || DestTy == Type::FloatTy) &&
"Unknown FP type!");
return ConstantFP::get(APFloat(CI->getValue()));
}
if (DestTy->isFloatingPoint())
return ConstantFP::get(APFloat(CI->getValue(),
DestTy != Type::PPC_FP128Ty));
// Otherwise, can't fold this (vector?)
return 0;
}

View File

@ -0,0 +1,7 @@
; RUN: llvm-as < %s | opt -instcombine
; PR3468
define x86_fp80 @cast() {
%tmp = bitcast i80 0 to x86_fp80 ; <x86_fp80> [#uses=1]
ret x86_fp80 %tmp
}