diff options
author | Chris Lattner <sabre@nondot.org> | 2008-08-24 20:46:13 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-08-24 20:46:13 +0000 |
commit | 25852069ed4ce542094fe263f19886f69a1bdf20 (patch) | |
tree | 9161d394119406f6b2fee0b75cdbf71aba2fb4cc /llvm/lib | |
parent | a078d83e17a9c137be78d9351ee63a1c6358b567 (diff) | |
download | bcm5719-llvm-25852069ed4ce542094fe263f19886f69a1bdf20.tar.gz bcm5719-llvm-25852069ed4ce542094fe263f19886f69a1bdf20.zip |
remove the type checking logic already done by tblgen, just keep the
parts tblgen doesn't do (checking for constant, alloca, enclosing
function has gc marker). This passes dj! :)
llvm-svn: 55294
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/VMCore/Verifier.cpp | 46 |
1 files changed, 10 insertions, 36 deletions
diff --git a/llvm/lib/VMCore/Verifier.cpp b/llvm/lib/VMCore/Verifier.cpp index fc458c8f2f9..26d55e9ffcd 100644 --- a/llvm/lib/VMCore/Verifier.cpp +++ b/llvm/lib/VMCore/Verifier.cpp @@ -1285,43 +1285,17 @@ void Verifier::visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI) { break; case Intrinsic::gcroot: case Intrinsic::gcwrite: - case Intrinsic::gcread: { - Type *PtrTy = PointerType::getUnqual(Type::Int8Ty), - *PtrPtrTy = PointerType::getUnqual(PtrTy); - - switch (ID) { - default: - break; - case Intrinsic::gcroot: - Assert1(CI.getOperand(1)->getType() == PtrPtrTy, - "Intrinsic parameter #1 is not i8**.", &CI); - Assert1(CI.getOperand(2)->getType() == PtrTy, - "Intrinsic parameter #2 is not i8*.", &CI); - Assert1(isa<AllocaInst>(CI.getOperand(1)->stripPointerCasts()), - "llvm.gcroot parameter #1 must be an alloca.", &CI); - Assert1(isa<Constant>(CI.getOperand(2)), - "llvm.gcroot parameter #2 must be a constant.", &CI); - break; - case Intrinsic::gcwrite: - Assert1(CI.getOperand(1)->getType() == PtrTy, - "Intrinsic parameter #1 is not a i8*.", &CI); - Assert1(CI.getOperand(2)->getType() == PtrTy, - "Intrinsic parameter #2 is not a i8*.", &CI); - Assert1(CI.getOperand(3)->getType() == PtrPtrTy, - "Intrinsic parameter #3 is not a i8**.", &CI); - break; - case Intrinsic::gcread: - Assert1(CI.getOperand(1)->getType() == PtrTy, - "Intrinsic parameter #1 is not a i8*.", &CI); - Assert1(CI.getOperand(2)->getType() == PtrPtrTy, - "Intrinsic parameter #2 is not a i8**.", &CI); - break; - } + case Intrinsic::gcread: + if (ID == Intrinsic::gcroot) { + Assert1(isa<AllocaInst>(CI.getOperand(1)->stripPointerCasts()), + "llvm.gcroot parameter #1 must be an alloca.", &CI); + Assert1(isa<Constant>(CI.getOperand(2)), + "llvm.gcroot parameter #2 must be a constant.", &CI); + } - Assert1(CI.getParent()->getParent()->hasGC(), - "Enclosing function does not use GC.", - &CI); - } break; + Assert1(CI.getParent()->getParent()->hasGC(), + "Enclosing function does not use GC.", &CI); + break; case Intrinsic::init_trampoline: Assert1(isa<Function>(CI.getOperand(2)->stripPointerCasts()), "llvm.init_trampoline parameter #2 must resolve to a function.", |