summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Analysis/InstructionSimplify.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2011-09-05 18:16:19 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2011-09-05 18:16:19 +0000
commit4b79c21ef29fa5bda37767c763d44b36bd8688a5 (patch)
treecf9ab67de4f9264bfbe932766a21ccbf22b10ae1 /llvm/lib/Analysis/InstructionSimplify.cpp
parent29192d042eacffd5e94229e95a5b72c83d510982 (diff)
downloadbcm5719-llvm-4b79c21ef29fa5bda37767c763d44b36bd8688a5.tar.gz
bcm5719-llvm-4b79c21ef29fa5bda37767c763d44b36bd8688a5.zip
InstSimplify: Don't try to replace an extractvalue/insertvalue pair with the original value if types don't match.
Fixes clang selfhost. llvm-svn: 139120
Diffstat (limited to 'llvm/lib/Analysis/InstructionSimplify.cpp')
-rw-r--r--llvm/lib/Analysis/InstructionSimplify.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Analysis/InstructionSimplify.cpp b/llvm/lib/Analysis/InstructionSimplify.cpp
index deb7fed18b3..131cc97d237 100644
--- a/llvm/lib/Analysis/InstructionSimplify.cpp
+++ b/llvm/lib/Analysis/InstructionSimplify.cpp
@@ -2286,7 +2286,8 @@ Value *llvm::SimplifyInsertValueInst(Value *Agg, Value *Val,
// insertvalue x, (extractvalue y, n), n
if (ExtractValueInst *EV = dyn_cast<ExtractValueInst>(Val))
- if (EV->getIndices() == Idxs) {
+ if (EV->getAggregateOperand()->getType() == Agg->getType() &&
+ EV->getIndices() == Idxs) {
// insertvalue undef, (extractvalue y, n), n -> y
if (match(Agg, m_Undef()))
return EV->getAggregateOperand();
OpenPOWER on IntegriCloud