aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Analysis/ConstantFolding.cpp
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2016-07-29 18:48:27 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2016-07-29 18:48:27 +0000
commit718da3d1f6976a1bf89f960519ddab1316637c9a (patch)
tree1310bb56d926915ab2c88d2c68b4bfa485bec452 /llvm/lib/Analysis/ConstantFolding.cpp
parent5207b5dcaea0971985a1229927a59166af83169b (diff)
downloadllvm-718da3d1f6976a1bf89f960519ddab1316637c9a.zip
llvm-718da3d1f6976a1bf89f960519ddab1316637c9a.tar.gz
llvm-718da3d1f6976a1bf89f960519ddab1316637c9a.tar.bz2
[ConstantFolding] Handle bitcasts of undef fp vector elements
We used the wrong type for constructing a zero vector element which led to type mismatches. This fixes PR28771. llvm-svn: 277197
Diffstat (limited to 'llvm/lib/Analysis/ConstantFolding.cpp')
-rw-r--r--llvm/lib/Analysis/ConstantFolding.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/ConstantFolding.cpp b/llvm/lib/Analysis/ConstantFolding.cpp
index 60b94a9..39e422f 100644
--- a/llvm/lib/Analysis/ConstantFolding.cpp
+++ b/llvm/lib/Analysis/ConstantFolding.cpp
@@ -187,7 +187,7 @@ Constant *FoldBitCast(Constant *C, Type *DestTy, const DataLayout &DL) {
for (unsigned j = 0; j != Ratio; ++j) {
Constant *Src = C->getAggregateElement(SrcElt++);
if (Src && isa<UndefValue>(Src))
- Src = Constant::getNullValue(SrcEltTy);
+ Src = Constant::getNullValue(C->getType()->getVectorElementType());
else
Src = dyn_cast_or_null<ConstantInt>(Src);
if (!Src) // Reject constantexpr elements.