diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2011-09-05 18:16:19 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2011-09-05 18:16:19 +0000 |
commit | 4b79c21ef29fa5bda37767c763d44b36bd8688a5 (patch) | |
tree | cf9ab67de4f9264bfbe932766a21ccbf22b10ae1 /llvm/lib/Analysis/InstructionSimplify.cpp | |
parent | 29192d042eacffd5e94229e95a5b72c83d510982 (diff) | |
download | bcm5719-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.cpp | 3 |
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(); |