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! :)


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@55294 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2008-08-24 20:46:13 +00:00
parent edfb72c628
commit 415b414a8f

View File

@ -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);
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);
}
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;
}
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.",