mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
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
This commit is contained in:
parent
17af357779
commit
303dae993a
@ -2671,7 +2671,8 @@ allocate, and free memory in LLVM.</p>
|
|||||||
<h5>Overview:</h5>
|
<h5>Overview:</h5>
|
||||||
|
|
||||||
<p>The '<tt>malloc</tt>' instruction allocates memory from the system
|
<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>
|
<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
|
<p>The '<tt>alloca</tt>' instruction allocates memory on the stack frame of the
|
||||||
currently executing function, to be automatically released when this function
|
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>
|
<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
|
intrinsics to make use of the LLVM garbage collectors. For more details, see <a
|
||||||
href="GarbageCollection.html">Accurate Garbage Collection with LLVM</a>.
|
href="GarbageCollection.html">Accurate Garbage Collection with LLVM</a>.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
<p>The garbage collection intrinsics only operate on objects in the generic
|
||||||
|
address space (address space zero).</p>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- _______________________________________________________________________ -->
|
<!-- _______________________________________________________________________ -->
|
||||||
|
@ -254,6 +254,7 @@ namespace { // Anonymous namespace for class
|
|||||||
void visitUserOp1(Instruction &I);
|
void visitUserOp1(Instruction &I);
|
||||||
void visitUserOp2(Instruction &I) { visitUserOp1(I); }
|
void visitUserOp2(Instruction &I) { visitUserOp1(I); }
|
||||||
void visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI);
|
void visitIntrinsicFunctionCall(Intrinsic::ID ID, CallInst &CI);
|
||||||
|
void visitAllocationInst(AllocationInst &AI);
|
||||||
|
|
||||||
void VerifyIntrinsicPrototype(Intrinsic::ID ID, Function *F,
|
void VerifyIntrinsicPrototype(Intrinsic::ID ID, Function *F,
|
||||||
unsigned Count, ...);
|
unsigned Count, ...);
|
||||||
@ -987,6 +988,13 @@ void Verifier::visitStoreInst(StoreInst &SI) {
|
|||||||
visitInstruction(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.
|
/// verifyInstruction - Verify that an instruction is well formed.
|
||||||
///
|
///
|
||||||
|
Loading…
Reference in New Issue
Block a user