mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-13 23:25:06 +00:00
Make the AttrListPtr object a part of the LLVMContext.
When code deletes the context, the AttributeImpls that the AttrListPtr points to are now invalid. Therefore, instead of keeping a separate managed static for the AttrListPtrs that's reference counted, move it into the LLVMContext and delete it when deleting the AttributeImpls. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@168354 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -47,7 +47,9 @@ Value *llvm::EmitStrLen(Value *Ptr, IRBuilder<> &B, const DataLayout *TD,
|
||||
ArrayRef<Attributes::AttrVal>(AVs, 2));
|
||||
|
||||
LLVMContext &Context = B.GetInsertBlock()->getContext();
|
||||
Constant *StrLen = M->getOrInsertFunction("strlen", AttrListPtr::get(AWI),
|
||||
Constant *StrLen = M->getOrInsertFunction("strlen",
|
||||
AttrListPtr::get(M->getContext(),
|
||||
AWI),
|
||||
TD->getIntPtrType(Context),
|
||||
B.getInt8PtrTy(),
|
||||
NULL);
|
||||
@@ -74,7 +76,9 @@ Value *llvm::EmitStrNLen(Value *Ptr, Value *MaxLen, IRBuilder<> &B,
|
||||
ArrayRef<Attributes::AttrVal>(AVs, 2));
|
||||
|
||||
LLVMContext &Context = B.GetInsertBlock()->getContext();
|
||||
Constant *StrNLen = M->getOrInsertFunction("strnlen", AttrListPtr::get(AWI),
|
||||
Constant *StrNLen = M->getOrInsertFunction("strnlen",
|
||||
AttrListPtr::get(M->getContext(),
|
||||
AWI),
|
||||
TD->getIntPtrType(Context),
|
||||
B.getInt8PtrTy(),
|
||||
TD->getIntPtrType(Context),
|
||||
@@ -102,7 +106,9 @@ Value *llvm::EmitStrChr(Value *Ptr, char C, IRBuilder<> &B,
|
||||
|
||||
Type *I8Ptr = B.getInt8PtrTy();
|
||||
Type *I32Ty = B.getInt32Ty();
|
||||
Constant *StrChr = M->getOrInsertFunction("strchr", AttrListPtr::get(AWI),
|
||||
Constant *StrChr = M->getOrInsertFunction("strchr",
|
||||
AttrListPtr::get(M->getContext(),
|
||||
AWI),
|
||||
I8Ptr, I8Ptr, I32Ty, NULL);
|
||||
CallInst *CI = B.CreateCall2(StrChr, CastToCStr(Ptr, B),
|
||||
ConstantInt::get(I32Ty, C), "strchr");
|
||||
@@ -127,7 +133,9 @@ Value *llvm::EmitStrNCmp(Value *Ptr1, Value *Ptr2, Value *Len,
|
||||
ArrayRef<Attributes::AttrVal>(AVs, 2));
|
||||
|
||||
LLVMContext &Context = B.GetInsertBlock()->getContext();
|
||||
Value *StrNCmp = M->getOrInsertFunction("strncmp", AttrListPtr::get(AWI),
|
||||
Value *StrNCmp = M->getOrInsertFunction("strncmp",
|
||||
AttrListPtr::get(M->getContext(),
|
||||
AWI),
|
||||
B.getInt32Ty(),
|
||||
B.getInt8PtrTy(),
|
||||
B.getInt8PtrTy(),
|
||||
@@ -155,7 +163,8 @@ Value *llvm::EmitStrCpy(Value *Dst, Value *Src, IRBuilder<> &B,
|
||||
AWI[1] = AttributeWithIndex::get(M->getContext(), AttrListPtr::FunctionIndex,
|
||||
Attributes::NoUnwind);
|
||||
Type *I8Ptr = B.getInt8PtrTy();
|
||||
Value *StrCpy = M->getOrInsertFunction(Name, AttrListPtr::get(AWI),
|
||||
Value *StrCpy = M->getOrInsertFunction(Name,
|
||||
AttrListPtr::get(M->getContext(), AWI),
|
||||
I8Ptr, I8Ptr, I8Ptr, NULL);
|
||||
CallInst *CI = B.CreateCall2(StrCpy, CastToCStr(Dst, B), CastToCStr(Src, B),
|
||||
Name);
|
||||
@@ -178,7 +187,9 @@ Value *llvm::EmitStrNCpy(Value *Dst, Value *Src, Value *Len,
|
||||
AWI[1] = AttributeWithIndex::get(M->getContext(), AttrListPtr::FunctionIndex,
|
||||
Attributes::NoUnwind);
|
||||
Type *I8Ptr = B.getInt8PtrTy();
|
||||
Value *StrNCpy = M->getOrInsertFunction(Name, AttrListPtr::get(AWI),
|
||||
Value *StrNCpy = M->getOrInsertFunction(Name,
|
||||
AttrListPtr::get(M->getContext(),
|
||||
AWI),
|
||||
I8Ptr, I8Ptr, I8Ptr,
|
||||
Len->getType(), NULL);
|
||||
CallInst *CI = B.CreateCall3(StrNCpy, CastToCStr(Dst, B), CastToCStr(Src, B),
|
||||
@@ -203,7 +214,7 @@ Value *llvm::EmitMemCpyChk(Value *Dst, Value *Src, Value *Len, Value *ObjSize,
|
||||
Attributes::NoUnwind);
|
||||
LLVMContext &Context = B.GetInsertBlock()->getContext();
|
||||
Value *MemCpy = M->getOrInsertFunction("__memcpy_chk",
|
||||
AttrListPtr::get(AWI),
|
||||
AttrListPtr::get(M->getContext(), AWI),
|
||||
B.getInt8PtrTy(),
|
||||
B.getInt8PtrTy(),
|
||||
B.getInt8PtrTy(),
|
||||
@@ -231,7 +242,8 @@ Value *llvm::EmitMemChr(Value *Ptr, Value *Val,
|
||||
AWI = AttributeWithIndex::get(M->getContext(), AttrListPtr::FunctionIndex,
|
||||
ArrayRef<Attributes::AttrVal>(AVs, 2));
|
||||
LLVMContext &Context = B.GetInsertBlock()->getContext();
|
||||
Value *MemChr = M->getOrInsertFunction("memchr", AttrListPtr::get(AWI),
|
||||
Value *MemChr = M->getOrInsertFunction("memchr",
|
||||
AttrListPtr::get(M->getContext(), AWI),
|
||||
B.getInt8PtrTy(),
|
||||
B.getInt8PtrTy(),
|
||||
B.getInt32Ty(),
|
||||
@@ -261,7 +273,8 @@ Value *llvm::EmitMemCmp(Value *Ptr1, Value *Ptr2,
|
||||
ArrayRef<Attributes::AttrVal>(AVs, 2));
|
||||
|
||||
LLVMContext &Context = B.GetInsertBlock()->getContext();
|
||||
Value *MemCmp = M->getOrInsertFunction("memcmp", AttrListPtr::get(AWI),
|
||||
Value *MemCmp = M->getOrInsertFunction("memcmp",
|
||||
AttrListPtr::get(M->getContext(), AWI),
|
||||
B.getInt32Ty(),
|
||||
B.getInt8PtrTy(),
|
||||
B.getInt8PtrTy(),
|
||||
@@ -338,7 +351,8 @@ Value *llvm::EmitPutS(Value *Str, IRBuilder<> &B, const DataLayout *TD,
|
||||
AWI[1] = AttributeWithIndex::get(M->getContext(), AttrListPtr::FunctionIndex,
|
||||
Attributes::NoUnwind);
|
||||
|
||||
Value *PutS = M->getOrInsertFunction("puts", AttrListPtr::get(AWI),
|
||||
Value *PutS = M->getOrInsertFunction("puts",
|
||||
AttrListPtr::get(M->getContext(), AWI),
|
||||
B.getInt32Ty(),
|
||||
B.getInt8PtrTy(),
|
||||
NULL);
|
||||
@@ -362,7 +376,8 @@ Value *llvm::EmitFPutC(Value *Char, Value *File, IRBuilder<> &B,
|
||||
Attributes::NoUnwind);
|
||||
Constant *F;
|
||||
if (File->getType()->isPointerTy())
|
||||
F = M->getOrInsertFunction("fputc", AttrListPtr::get(AWI),
|
||||
F = M->getOrInsertFunction("fputc",
|
||||
AttrListPtr::get(M->getContext(), AWI),
|
||||
B.getInt32Ty(),
|
||||
B.getInt32Ty(), File->getType(),
|
||||
NULL);
|
||||
@@ -396,7 +411,8 @@ Value *llvm::EmitFPutS(Value *Str, Value *File, IRBuilder<> &B,
|
||||
StringRef FPutsName = TLI->getName(LibFunc::fputs);
|
||||
Constant *F;
|
||||
if (File->getType()->isPointerTy())
|
||||
F = M->getOrInsertFunction(FPutsName, AttrListPtr::get(AWI),
|
||||
F = M->getOrInsertFunction(FPutsName,
|
||||
AttrListPtr::get(M->getContext(), AWI),
|
||||
B.getInt32Ty(),
|
||||
B.getInt8PtrTy(),
|
||||
File->getType(), NULL);
|
||||
@@ -429,7 +445,8 @@ Value *llvm::EmitFWrite(Value *Ptr, Value *Size, Value *File,
|
||||
StringRef FWriteName = TLI->getName(LibFunc::fwrite);
|
||||
Constant *F;
|
||||
if (File->getType()->isPointerTy())
|
||||
F = M->getOrInsertFunction(FWriteName, AttrListPtr::get(AWI),
|
||||
F = M->getOrInsertFunction(FWriteName,
|
||||
AttrListPtr::get(M->getContext(), AWI),
|
||||
TD->getIntPtrType(Context),
|
||||
B.getInt8PtrTy(),
|
||||
TD->getIntPtrType(Context),
|
||||
|
Reference in New Issue
Block a user