summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2015-04-24 21:16:07 +0000
committerDavid Blaikie <dblaikie@gmail.com>2015-04-24 21:16:07 +0000
commit5bacf3722c018476b8712440c08dbcaf8df2a960 (patch)
tree31eb8d3fb9693987f3b8e9b9b76c8ffcac1faaaa
parent6759319c3c6b01bb25e8ceedd15b7fb5d6242675 (diff)
downloadbcm5719-llvm-5bacf3722c018476b8712440c08dbcaf8df2a960.tar.gz
bcm5719-llvm-5bacf3722c018476b8712440c08dbcaf8df2a960.zip
[opaque pointer type] Verifier/AutoUpgrade: Remove a few uses of PointerType::getElementType
llvm-svn: 235777
-rw-r--r--llvm/include/llvm/IR/IRBuilder.h8
-rw-r--r--llvm/lib/IR/AutoUpgrade.cpp18
-rw-r--r--llvm/lib/IR/Verifier.cpp10
3 files changed, 18 insertions, 18 deletions
diff --git a/llvm/include/llvm/IR/IRBuilder.h b/llvm/include/llvm/IR/IRBuilder.h
index daa65cdb012..d6550e3dbf0 100644
--- a/llvm/include/llvm/IR/IRBuilder.h
+++ b/llvm/include/llvm/IR/IRBuilder.h
@@ -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 = "") {
diff --git a/llvm/lib/IR/AutoUpgrade.cpp b/llvm/lib/IR/AutoUpgrade.cpp
index bb23d2c9715..7081c749058 100644
--- a/llvm/lib/IR/AutoUpgrade.cpp
+++ b/llvm/lib/IR/AutoUpgrade.cpp
@@ -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");
-
- CallInst* NewCall = Builder.CreateCall2(NewFn, BC0, BC1, Name);
+ Type *NewVecTy = VectorType::get(Type::getInt64Ty(C), 2);
+
+ 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;
diff --git a/llvm/lib/IR/Verifier.cpp b/llvm/lib/IR/Verifier.cpp
index 7001c556d20..099cbd9e0fe 100644
--- a/llvm/lib/IR/Verifier.cpp
+++ b/llvm/lib/IR/Verifier.cpp
@@ -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);
OpenPOWER on IntegriCloud