1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-10-19 02:52:53 +02:00

[opaque pointer type] Verifier/AutoUpgrade: Remove a few uses of PointerType::getElementType

llvm-svn: 235777
This commit is contained in:
David Blaikie 2015-04-24 21:16:07 +00:00
parent 5e0e5f7196
commit ee8a166346
3 changed files with 17 additions and 17 deletions

View File

@ -1448,8 +1448,14 @@ public:
}
CallInst *CreateCall2(Value *Callee, Value *Arg1, Value *Arg2,
const Twine &Name = "") {
return CreateCall2(cast<FunctionType>(cast<PointerType>(Callee->getType())
->getElementType()),
Callee, Arg1, Arg2, Name);
}
CallInst *CreateCall2(FunctionType *Ty, Value *Callee, Value *Arg1,
Value *Arg2, const Twine &Name = "") {
Value *Args[] = { Arg1, Arg2 };
return Insert(CallInst::Create(Callee, Args), Name);
return Insert(CallInst::Create(Ty, Callee, Args), Name);
}
CallInst *CreateCall3(Value *Callee, Value *Arg1, Value *Arg2, Value *Arg3,
const Twine &Name = "") {

View File

@ -767,16 +767,14 @@ void llvm::UpgradeIntrinsicCall(CallInst *CI, Function *NewFn) {
// Old intrinsic, add bitcasts
Value *Arg1 = CI->getArgOperand(1);
Value *BC0 =
Builder.CreateBitCast(Arg0,
VectorType::get(Type::getInt64Ty(C), 2),
"cast");
Value *BC1 =
Builder.CreateBitCast(Arg1,
VectorType::get(Type::getInt64Ty(C), 2),
"cast");
Type *NewVecTy = VectorType::get(Type::getInt64Ty(C), 2);
CallInst* NewCall = Builder.CreateCall2(NewFn, BC0, BC1, Name);
Value *BC0 = Builder.CreateBitCast(Arg0, NewVecTy, "cast");
Value *BC1 = Builder.CreateBitCast(Arg1, NewVecTy, "cast");
Type *Ty[] = {NewVecTy, NewVecTy};
CallInst *NewCall = Builder.CreateCall2(
FunctionType::get(CI->getType(), Ty, false), NewFn, BC0, BC1, Name);
CI->replaceAllUsesWith(NewCall);
CI->eraseFromParent();
return;

View File

@ -2243,12 +2243,8 @@ void Verifier::verifyMustTailCall(CallInst &CI) {
// parameters or return types may differ in pointee type, but not
// address space.
Function *F = CI.getParent()->getParent();
auto GetFnTy = [](Value *V) {
return cast<FunctionType>(
cast<PointerType>(V->getType())->getElementType());
};
FunctionType *CallerTy = GetFnTy(F);
FunctionType *CalleeTy = GetFnTy(CI.getCalledValue());
FunctionType *CallerTy = F->getFunctionType();
FunctionType *CalleeTy = CI.getFunctionType();
Assert(CallerTy->getNumParams() == CalleeTy->getNumParams(),
"cannot guarantee tail call due to mismatched parameter counts", &CI);
Assert(CallerTy->isVarArg() == CalleeTy->isVarArg(),
@ -2600,7 +2596,7 @@ void Verifier::visitAllocaInst(AllocaInst &AI) {
Assert(PTy->getAddressSpace() == 0,
"Allocation instruction pointer not in the generic address space!",
&AI);
Assert(PTy->getElementType()->isSized(&Visited),
Assert(AI.getAllocatedType()->isSized(&Visited),
"Cannot allocate unsized type", &AI);
Assert(AI.getArraySize()->getType()->isIntegerTy(),
"Alloca array size must have integer type", &AI);