diff options
author | Christopher Lamb <christopher.lamb@gmail.com> | 2007-12-17 01:00:21 +0000 |
---|---|---|
committer | Christopher Lamb <christopher.lamb@gmail.com> | 2007-12-17 01:00:21 +0000 |
commit | 303dae993aba2474a23753ed66737b8c38cc97a0 (patch) | |
tree | bf2ee3531b1f46bfdaf73f6036602f8c930c3d49 | |
parent | 17af3577791f44429bc43c20cd787b960ec5d3b4 (diff) | |
download | external_llvm-303dae993aba2474a23753ed66737b8c38cc97a0.zip external_llvm-303dae993aba2474a23753ed66737b8c38cc97a0.tar.gz external_llvm-303dae993aba2474a23753ed66737b8c38cc97a0.tar.bz2 |
Make it clear in the LangRef that allocation instructions only operated on the generic address space. Implement support in the verifier for ensuring this is true.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@45080 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | docs/LangRef.html | 10 | ||||
-rw-r--r-- | lib/VMCore/Verifier.cpp | 8 |
2 files changed, 16 insertions, 2 deletions
diff --git a/docs/LangRef.html b/docs/LangRef.html index df6baa7..f9e0824 100644 --- a/docs/LangRef.html +++ b/docs/LangRef.html @@ -2671,7 +2671,8 @@ allocate, and free memory in LLVM.</p> <h5>Overview:</h5> <p>The '<tt>malloc</tt>' instruction allocates memory from the system -heap and returns a pointer to it.</p> +heap and returns a pointer to it. The object is always allocated in the generic +address space (address space zero).</p> <h5>Arguments:</h5> @@ -2758,7 +2759,8 @@ after this instruction executes.</p> <p>The '<tt>alloca</tt>' instruction allocates memory on the stack frame of the currently executing function, to be automatically released when this function -returns to its caller.</p> +returns to its caller. The object is always allocated in the generic address +space (address space zero).</p> <h5>Arguments:</h5> @@ -3972,6 +3974,10 @@ Front-ends for type-safe garbage collected languages should generate these intrinsics to make use of the LLVM garbage collectors. For more details, see <a href="GarbageCollection.html">Accurate Garbage Collection with LLVM</a>. </p> + +<p>The garbage collection intrinsics only operate on objects in the generic + address space (address space zero).</p> + </div> <!-- _______________________________________________________________________ --> diff --git a/lib/VMCore/Verifier.cpp b/lib/VMCore/Verifier.cpp index c3633ff..fb8db17 100644 --- a/lib/VMCore/Verifier.cpp +++ b/lib/VMCore/Verifier.cpp @@ -254,6 +254,7 @@ namespace { // Anonymous namespace for class void visitUserOp1(Instruction &I); void visitUserOp2(Instruction &I) { visitUserOp1(I); } void visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI); + void visitAllocationInst(AllocationInst &AI); void VerifyIntrinsicPrototype(Intrinsic::ID ID, Function *F, unsigned Count, ...); @@ -987,6 +988,13 @@ void Verifier::visitStoreInst(StoreInst &SI) { visitInstruction(SI); } +void Verifier::visitAllocationInst(AllocationInst &AI) { + const PointerType *Ptr = AI.getType(); + Assert(Ptr->getAddressSpace() == 0, + "Allocation instruction pointer not in the generic address space!"); + visitInstruction(AI); +} + /// verifyInstruction - Verify that an instruction is well formed. /// |