1
0
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:
Chris Lattner 2004-07-01 20:23:52 +00:00
parent 4a33b02af8
commit f3e46315fb

View File

@ -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