From: Chris Lattner Date: Sat, 8 Apr 2006 05:09:48 +0000 (+0000) Subject: Add constant replacement for insertelement/vectorshuffle constant exprs X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=42b5580b979f0b09ab92556b39bea77105f3392e;p=oota-llvm.git Add constant replacement for insertelement/vectorshuffle constant exprs git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27532 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index 9f706b9bc1b..22a14fb14ef 100644 --- a/lib/VMCore/Constants.cpp +++ b/lib/VMCore/Constants.cpp @@ -1702,6 +1702,22 @@ void ConstantExpr::replaceUsesOfWithOnConstant(Value *From, Value *ToV, if (C1 == From) C1 = To; if (C2 == From) C2 = To; Replacement = ConstantExpr::getExtractElement(C1, C2); + } else if (getOpcode() == Instruction::InsertElement) { + Constant *C1 = getOperand(0); + Constant *C2 = getOperand(1); + Constant *C3 = getOperand(1); + if (C1 == From) C1 = To; + if (C2 == From) C2 = To; + if (C3 == From) C3 = To; + Replacement = ConstantExpr::getInsertElement(C1, C2, C3); + } else if (getOpcode() == Instruction::ShuffleVector) { + Constant *C1 = getOperand(0); + Constant *C2 = getOperand(1); + Constant *C3 = getOperand(2); + if (C1 == From) C1 = To; + if (C2 == From) C2 = To; + if (C3 == From) C3 = To; + Replacement = ConstantExpr::getShuffleVector(C1, C2, C3); } else if (getNumOperands() == 2) { Constant *C1 = getOperand(0); Constant *C2 = getOperand(1);