mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-26 05:25:47 +00:00
Update GEP constructors to use an iterator interface to fix
GLIBCXX_DEBUG issues. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@41697 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -242,8 +242,11 @@ bool LowerGC::runOnFunction(Function &F) {
|
||||
Constant *Zero = ConstantInt::get(Type::Int32Ty, 0);
|
||||
Constant *One = ConstantInt::get(Type::Int32Ty, 1);
|
||||
|
||||
Value *Idx[2] = { Zero, Zero };
|
||||
|
||||
// Get a pointer to the prev pointer.
|
||||
Value *PrevPtrPtr = new GetElementPtrInst(AI, Zero, Zero, "prevptrptr", IP);
|
||||
Value *PrevPtrPtr = new GetElementPtrInst(AI, Idx, Idx + 2,
|
||||
"prevptrptr", IP);
|
||||
|
||||
// Load the previous pointer.
|
||||
Value *PrevPtr = new LoadInst(RootChain, "prevptr", IP);
|
||||
@@ -251,7 +254,9 @@ bool LowerGC::runOnFunction(Function &F) {
|
||||
new StoreInst(PrevPtr, PrevPtrPtr, IP);
|
||||
|
||||
// Set the number of elements in this record.
|
||||
Value *NumEltsPtr = new GetElementPtrInst(AI, Zero, One, "numeltsptr", IP);
|
||||
Idx[1] = One;
|
||||
Value *NumEltsPtr = new GetElementPtrInst(AI, Idx, Idx + 2,
|
||||
"numeltsptr", IP);
|
||||
new StoreInst(ConstantInt::get(Type::Int32Ty, GCRoots.size()), NumEltsPtr,IP);
|
||||
|
||||
Value* Par[4];
|
||||
@@ -267,13 +272,15 @@ bool LowerGC::runOnFunction(Function &F) {
|
||||
// Initialize the meta-data pointer.
|
||||
Par[2] = ConstantInt::get(Type::Int32Ty, i);
|
||||
Par[3] = One;
|
||||
Value *MetaDataPtr = new GetElementPtrInst(AI, Par, 4, "MetaDataPtr", IP);
|
||||
Value *MetaDataPtr = new GetElementPtrInst(AI, Par, Par + 4,
|
||||
"MetaDataPtr", IP);
|
||||
assert(isa<Constant>(GCRoots[i]->getOperand(2)) && "Must be a constant");
|
||||
new StoreInst(GCRoots[i]->getOperand(2), MetaDataPtr, IP);
|
||||
|
||||
// Initialize the root pointer to null on entry to the function.
|
||||
Par[3] = Zero;
|
||||
Value *RootPtrPtr = new GetElementPtrInst(AI, Par, 4, "RootEntPtr", IP);
|
||||
Value *RootPtrPtr = new GetElementPtrInst(AI, Par, Par + 4,
|
||||
"RootEntPtr", IP);
|
||||
new StoreInst(Null, RootPtrPtr, IP);
|
||||
|
||||
// Each occurrance of the llvm.gcroot intrinsic now turns into an
|
||||
|
Reference in New Issue
Block a user