From 612fa8e6f3bf93751807512287f377ae9a227d3c Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Thu, 30 Mar 2006 22:02:40 +0000 Subject: [PATCH] Fix Transforms/InstCombine/2006-03-30-ExtractElement.ll llvm-svn: 27261 --- llvm/lib/Transforms/Scalar/InstructionCombining.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp index 397c6d6ecd6a..cd734568ba56 100644 --- a/llvm/lib/Transforms/Scalar/InstructionCombining.cpp +++ b/llvm/lib/Transforms/Scalar/InstructionCombining.cpp @@ -6704,9 +6704,13 @@ Instruction *InstCombiner::visitExtractElementInst(ExtractElementInst &EI) { if (IE->getOperand(2) == EI.getOperand(1)) return ReplaceInstUsesWith(EI, IE->getOperand(1)); // If the inserted and extracted elements are constants, they must not - // be the same value, replace with the pre-inserted value. - if (isa(IE->getOperand(2)) && isa(EI.getOperand(1))) - return ReplaceInstUsesWith(EI, IE->getOperand(0)); + // be the same value, extract from the pre-inserted value instead. + if (isa(IE->getOperand(2)) && + isa(EI.getOperand(1))) { + AddUsesToWorkList(EI); + EI.setOperand(0, IE->getOperand(0)); + return &EI; + } } } return 0;