diff options
author | Robert Bocchino <bocchino@illinois.edu> | 2006-01-17 20:07:22 +0000 |
---|---|---|
committer | Robert Bocchino <bocchino@illinois.edu> | 2006-01-17 20:07:22 +0000 |
commit | c152f9cd26e7cb32352c513389a18ffd892ecaec (patch) | |
tree | b584bdb434f8a0cca75c8606eb3d151239aa04fa /lib/VMCore/Verifier.cpp | |
parent | 956fd7254f976581a27ba0ee73d7707ff484d2c3 (diff) | |
download | external_llvm-c152f9cd26e7cb32352c513389a18ffd892ecaec.zip external_llvm-c152f9cd26e7cb32352c513389a18ffd892ecaec.tar.gz external_llvm-c152f9cd26e7cb32352c513389a18ffd892ecaec.tar.bz2 |
VMCore support for the insertelement operation.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@25408 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/VMCore/Verifier.cpp')
-rw-r--r-- | lib/VMCore/Verifier.cpp | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index ed73341..9f4a6c8 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -140,7 +140,7 @@ namespace { // Anonymous namespace for class virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.setPreservesAll(); if (RealPass) - AU.addRequired<ETForest>(); + AU.addRequired<ETForest>(); } /// abortIfBroken - If the module is broken and we are supposed to abort on @@ -180,6 +180,7 @@ namespace { // Anonymous namespace for class void visitBinaryOperator(BinaryOperator &B); void visitShiftInst(ShiftInst &SI); void visitExtractElementInst(ExtractElementInst &EI); + void visitInsertElementInst(InsertElementInst &EI); void visitVAArgInst(VAArgInst &VAA) { visitInstruction(VAA); } void visitCallInst(CallInst &CI); void visitGetElementPtrInst(GetElementPtrInst &GEP); @@ -540,12 +541,24 @@ void Verifier::visitExtractElementInst(ExtractElementInst &EI) { Assert1(EI.getOperand(1)->getType() == Type::UIntTy, "Second operand to extractelement must be uint type!", &EI); Assert1(EI.getType() == - cast<PackedType>(EI.getOperand(0)->getType())->getElementType(), - "Extractelement return type must be same as " - "first operand element type!", &EI); + cast<PackedType>(EI.getOperand(0)->getType())->getElementType(), + "Extractelement return type must match " + "first operand element type!", &EI); visitInstruction(EI); } +void Verifier::visitInsertElementInst(InsertElementInst &IE) { + Assert1(isa<PackedType>(IE.getOperand(0)->getType()), + "First operand to insertelement must be packed type!", &IE); + Assert1(IE.getOperand(1)->getType() == + cast<PackedType>(IE.getOperand(0)->getType())->getElementType(), + "Second operand to insertelement must match " + "first operand element type!", &IE); + Assert1(IE.getOperand(2)->getType() == Type::UIntTy, + "Third operand to insertelement must be uint type!", &IE); + visitInstruction(IE); +} + void Verifier::visitGetElementPtrInst(GetElementPtrInst &GEP) { const Type *ElTy = GetElementPtrInst::getIndexedType(GEP.getOperand(0)->getType(), |