Add much better assertion checking for load and store insts.
authorChris Lattner <sabre@nondot.org>
Thu, 1 Jul 2004 20:23:52 +0000 (20:23 +0000)
committerChris Lattner <sabre@nondot.org>
Thu, 1 Jul 2004 20:23:52 +0000 (20:23 +0000)
Contributed by Vladimir Merzliakov!

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@14546 91177308-0d34-0410-b5e6-96231b3b80d8

lib/VMCore/iMemory.cpp

index bcba93e253a16a6bfcfccb1b7b9b9419fc74518f..480c332b29f3862eef7bacf33db2c99cc50c9196 100644 (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