mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-25 10:27:04 +00:00
improve the APIs for creating struct and function types with no arguments/elements
to not have to create a temporary vector (in the API at least). Patch by Jay Foad! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@74584 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -1928,8 +1928,7 @@ static GlobalVariable *InstallGlobalCtors(GlobalVariable *GCL,
|
||||
if (Ctors[i]) {
|
||||
CSVals[1] = Ctors[i];
|
||||
} else {
|
||||
const Type *FTy = FunctionType::get(Type::VoidTy,
|
||||
std::vector<const Type*>(), false);
|
||||
const Type *FTy = FunctionType::get(Type::VoidTy, false);
|
||||
const PointerType *PFTy = PointerType::getUnqual(FTy);
|
||||
CSVals[1] = Constant::getNullValue(PFTy);
|
||||
CSVals[0] = ConstantInt::get(Type::Int32Ty, 2147483647);
|
||||
|
||||
@@ -92,8 +92,7 @@ void RaiseAllocations::doInitialization(Module &M) {
|
||||
// i8*(...) * malloc
|
||||
// This handles the common declaration of: 'void *malloc();'
|
||||
const FunctionType *Malloc3Type =
|
||||
FunctionType::get(PointerType::getUnqual(Type::Int8Ty),
|
||||
std::vector<const Type*>(), true);
|
||||
FunctionType::get(PointerType::getUnqual(Type::Int8Ty), true);
|
||||
if (TyWeHave != Malloc3Type)
|
||||
// Give up
|
||||
MallocFunc = 0;
|
||||
@@ -113,14 +112,12 @@ void RaiseAllocations::doInitialization(Module &M) {
|
||||
// Check to see if the prototype was forgotten, giving us
|
||||
// void (...) * free
|
||||
// This handles the common forward declaration of: 'void free();'
|
||||
const FunctionType* Free2Type = FunctionType::get(Type::VoidTy,
|
||||
std::vector<const Type*>(),true);
|
||||
const FunctionType* Free2Type = FunctionType::get(Type::VoidTy, true);
|
||||
|
||||
if (TyWeHave != Free2Type) {
|
||||
// One last try, check to see if we can find free as
|
||||
// int (...)* free. This handles the case where NOTHING was declared.
|
||||
const FunctionType* Free3Type = FunctionType::get(Type::Int32Ty,
|
||||
std::vector<const Type*>(),true);
|
||||
const FunctionType* Free3Type = FunctionType::get(Type::Int32Ty, true);
|
||||
|
||||
if (TyWeHave != Free3Type) {
|
||||
// Give up.
|
||||
|
||||
@@ -89,7 +89,7 @@ bool LowerAllocations::doInitialization(Module &M) {
|
||||
const Type *BPTy = PointerType::getUnqual(Type::Int8Ty);
|
||||
// Prototype malloc as "char* malloc(...)", because we don't know in
|
||||
// doInitialization whether size_t is int or long.
|
||||
FunctionType *FT = FunctionType::get(BPTy, std::vector<const Type*>(), true);
|
||||
FunctionType *FT = FunctionType::get(BPTy, true);
|
||||
MallocFunc = M.getOrInsertFunction("malloc", FT);
|
||||
FreeFunc = M.getOrInsertFunction("free" , Type::VoidTy, BPTy, (Type *)0);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user