mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 03:33:20 +01:00
Add much better assertion checking for load and store insts.
Contributed by Vladimir Merzliakov! llvm-svn: 14546
This commit is contained in:
parent
4a33b02af8
commit
f3e46315fb
@ -86,6 +86,13 @@ FreeInst::FreeInst(Value *Ptr, BasicBlock *InsertAtEnd)
|
||||
// LoadInst Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
void LoadInst::init(Value *Ptr) {
|
||||
assert(Ptr && isa<PointerType>(Ptr->getType()) &&
|
||||
"Ptr must have pointer type.");
|
||||
Operands.reserve(1);
|
||||
Operands.push_back(Use(Ptr, this));
|
||||
}
|
||||
|
||||
LoadInst::LoadInst(Value *Ptr, const std::string &Name, Instruction *InsertBef)
|
||||
: Instruction(cast<PointerType>(Ptr->getType())->getElementType(),
|
||||
Load, Name, InsertBef), Volatile(false) {
|
||||
@ -112,6 +119,7 @@ LoadInst::LoadInst(Value *Ptr, const std::string &Name, bool isVolatile,
|
||||
init(Ptr);
|
||||
}
|
||||
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// StoreInst Implementation
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -138,6 +146,15 @@ StoreInst::StoreInst(Value *Val, Value *Ptr, bool isVolatile,
|
||||
init(Val, Ptr);
|
||||
}
|
||||
|
||||
void StoreInst::init(Value *Val, Value *Ptr) {
|
||||
assert(isa<PointerType>(Ptr->getType()) &&
|
||||
Val->getType() == cast<PointerType>(Ptr->getType())->getElementType()
|
||||
&& "Ptr must have pointer type.");
|
||||
|
||||
Operands.reserve(2);
|
||||
Operands.push_back(Use(Val, this));
|
||||
Operands.push_back(Use(Ptr, this));
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// GetElementPtrInst Implementation
|
||||
|
Loading…
Reference in New Issue
Block a user