mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-21 02:24:22 +00:00
[opaque pointer type] The last of the GEP IRBuilder API migrations
There's still lots of callers passing nullptr, of course - some because they'll never be migrated (InstCombines for bitcasts - well they don't make any sense when the pointer type is opaque anyway, for example) and others that will need more engineering to pass Types around. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@234126 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -1102,16 +1102,20 @@ public:
|
|||||||
}
|
}
|
||||||
Value *CreateConstInBoundsGEP2_32(Value *Ptr, unsigned Idx0, unsigned Idx1,
|
Value *CreateConstInBoundsGEP2_32(Value *Ptr, unsigned Idx0, unsigned Idx1,
|
||||||
const Twine &Name = "") {
|
const Twine &Name = "") {
|
||||||
|
return CreateConstInBoundsGEP2_32(nullptr, Ptr, Idx0, Idx1, Name);
|
||||||
|
}
|
||||||
|
Value *CreateConstInBoundsGEP2_32(Type *Ty, Value *Ptr, unsigned Idx0, unsigned Idx1,
|
||||||
|
const Twine &Name = "") {
|
||||||
Value *Idxs[] = {
|
Value *Idxs[] = {
|
||||||
ConstantInt::get(Type::getInt32Ty(Context), Idx0),
|
ConstantInt::get(Type::getInt32Ty(Context), Idx0),
|
||||||
ConstantInt::get(Type::getInt32Ty(Context), Idx1)
|
ConstantInt::get(Type::getInt32Ty(Context), Idx1)
|
||||||
};
|
};
|
||||||
|
|
||||||
if (Constant *PC = dyn_cast<Constant>(Ptr))
|
if (Constant *PC = dyn_cast<Constant>(Ptr))
|
||||||
return Insert(Folder.CreateInBoundsGetElementPtr(nullptr, PC, Idxs),
|
return Insert(Folder.CreateInBoundsGetElementPtr(Ty, PC, Idxs),
|
||||||
Name);
|
Name);
|
||||||
|
|
||||||
return Insert(GetElementPtrInst::CreateInBounds(nullptr, Ptr, Idxs), Name);
|
return Insert(GetElementPtrInst::CreateInBounds(Ty, Ptr, Idxs), Name);
|
||||||
}
|
}
|
||||||
Value *CreateConstGEP1_64(Value *Ptr, uint64_t Idx0, const Twine &Name = "") {
|
Value *CreateConstGEP1_64(Value *Ptr, uint64_t Idx0, const Twine &Name = "") {
|
||||||
Value *Idx = ConstantInt::get(Type::getInt64Ty(Context), Idx0);
|
Value *Idx = ConstantInt::get(Type::getInt64Ty(Context), Idx0);
|
||||||
@ -1156,7 +1160,10 @@ public:
|
|||||||
return Insert(GetElementPtrInst::CreateInBounds(nullptr, Ptr, Idxs), Name);
|
return Insert(GetElementPtrInst::CreateInBounds(nullptr, Ptr, Idxs), Name);
|
||||||
}
|
}
|
||||||
Value *CreateStructGEP(Value *Ptr, unsigned Idx, const Twine &Name = "") {
|
Value *CreateStructGEP(Value *Ptr, unsigned Idx, const Twine &Name = "") {
|
||||||
return CreateConstInBoundsGEP2_32(Ptr, 0, Idx, Name);
|
return CreateStructGEP(nullptr, Ptr, Idx, Name);
|
||||||
|
}
|
||||||
|
Value *CreateStructGEP(Type *Ty, Value *Ptr, unsigned Idx, const Twine &Name = "") {
|
||||||
|
return CreateConstInBoundsGEP2_32(Ty, Ptr, 0, Idx, Name);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// \brief Same as CreateGlobalString, but return a pointer with "i8*" type
|
/// \brief Same as CreateGlobalString, but return a pointer with "i8*" type
|
||||||
|
@ -2518,7 +2518,7 @@ LLVMValueRef LLVMBuildInBoundsGEP(LLVMBuilderRef B, LLVMValueRef Pointer,
|
|||||||
|
|
||||||
LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer,
|
LLVMValueRef LLVMBuildStructGEP(LLVMBuilderRef B, LLVMValueRef Pointer,
|
||||||
unsigned Idx, const char *Name) {
|
unsigned Idx, const char *Name) {
|
||||||
return wrap(unwrap(B)->CreateStructGEP(unwrap(Pointer), Idx, Name));
|
return wrap(unwrap(B)->CreateStructGEP(nullptr, unwrap(Pointer), Idx, Name));
|
||||||
}
|
}
|
||||||
|
|
||||||
LLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str,
|
LLVMValueRef LLVMBuildGlobalString(LLVMBuilderRef B, const char *Str,
|
||||||
|
@ -1472,17 +1472,16 @@ void DFSanVisitor::visitCallSite(CallSite CS) {
|
|||||||
Args.push_back(DFSF.getShadow(*i));
|
Args.push_back(DFSF.getShadow(*i));
|
||||||
|
|
||||||
if (FT->isVarArg()) {
|
if (FT->isVarArg()) {
|
||||||
auto LabelVAAlloca =
|
auto *LabelVATy = ArrayType::get(DFSF.DFS.ShadowTy, CS.arg_size() - FT->getNumParams());
|
||||||
new AllocaInst(ArrayType::get(DFSF.DFS.ShadowTy,
|
auto *LabelVAAlloca = new AllocaInst(LabelVATy, "labelva",
|
||||||
CS.arg_size() - FT->getNumParams()),
|
DFSF.F->getEntryBlock().begin());
|
||||||
"labelva", DFSF.F->getEntryBlock().begin());
|
|
||||||
|
|
||||||
for (unsigned n = 0; i != CS.arg_end(); ++i, ++n) {
|
for (unsigned n = 0; i != CS.arg_end(); ++i, ++n) {
|
||||||
auto LabelVAPtr = IRB.CreateStructGEP(LabelVAAlloca, n);
|
auto LabelVAPtr = IRB.CreateStructGEP(LabelVATy, LabelVAAlloca, n);
|
||||||
IRB.CreateStore(DFSF.getShadow(*i), LabelVAPtr);
|
IRB.CreateStore(DFSF.getShadow(*i), LabelVAPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
Args.push_back(IRB.CreateStructGEP(LabelVAAlloca, 0));
|
Args.push_back(IRB.CreateStructGEP(LabelVATy, LabelVAAlloca, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!FT->getReturnType()->isVoidTy()) {
|
if (!FT->getReturnType()->isVoidTy()) {
|
||||||
|
Reference in New Issue
Block a user