diff options
author | Chris Lattner <sabre@nondot.org> | 2006-04-08 05:09:48 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-04-08 05:09:48 +0000 |
commit | 42b5580b979f0b09ab92556b39bea77105f3392e (patch) | |
tree | 8edaa7df86b2c32543f453f0ac0a36df265a9d09 /lib/VMCore | |
parent | 1eeeb0cce3f389db960fbce88c9f9a8d50558ceb (diff) | |
download | llvm-42b5580b979f0b09ab92556b39bea77105f3392e.tar.gz llvm-42b5580b979f0b09ab92556b39bea77105f3392e.tar.bz2 llvm-42b5580b979f0b09ab92556b39bea77105f3392e.tar.xz |
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
Diffstat (limited to 'lib/VMCore')
-rw-r--r-- | lib/VMCore/Constants.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/VMCore/Constants.cpp b/lib/VMCore/Constants.cpp index 9f706b9bc1..22a14fb14e 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); |