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

[IR] Add a few asserts to provide a better failure signature if you try to create a load/store/alloca with no alignment or insertion position

If no alignment is specified we try to find the datalayout by using the insert position to get the module so we can get the datalayout. But if those are null, then we deference a null pointer.

This patch adds asserts to make the failure a little more obvious than just seg faulting.

Differential Revision: https://reviews.llvm.org/D83829
This commit is contained in:
Craig Topper 2020-07-14 18:47:14 -07:00
parent cc9b585279
commit a8838d73c2

View File

@ -1262,11 +1262,15 @@ static Value *getAISize(LLVMContext &Context, Value *Amt) {
}
static Align computeAllocaDefaultAlign(Type *Ty, BasicBlock *BB) {
assert(BB && "Insertion BB cannot be null when alignment not provided!");
assert(BB->getParent() &&
"BB must be in a Function when alignment not provided!");
const DataLayout &DL = BB->getModule()->getDataLayout();
return DL.getPrefTypeAlign(Ty);
}
static Align computeAllocaDefaultAlign(Type *Ty, Instruction *I) {
assert(I && "Insertion position cannot be null when alignment not provided!");
return computeAllocaDefaultAlign(Ty, I->getParent());
}
@ -1342,11 +1346,15 @@ void LoadInst::AssertOK() {
}
static Align computeLoadStoreDefaultAlign(Type *Ty, BasicBlock *BB) {
assert(BB && "Insertion BB cannot be null when alignment not provided!");
assert(BB->getParent() &&
"BB must be in a Function when alignment not provided!");
const DataLayout &DL = BB->getModule()->getDataLayout();
return DL.getABITypeAlign(Ty);
}
static Align computeLoadStoreDefaultAlign(Type *Ty, Instruction *I) {
assert(I && "Insertion position cannot be null when alignment not provided!");
return computeLoadStoreDefaultAlign(Ty, I->getParent());
}