mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-01 23:50:43 +03:00
Adapt to free arrayOf(Type*) function
This commit is contained in:
parent
81cdec0f7a
commit
bb2dec2f87
7 changed files with 14 additions and 13 deletions
|
@ -259,7 +259,6 @@ public:
|
||||||
bool isSharedWild() const { return (mod & (MODshared | MODwild)) == (MODshared | MODwild); }
|
bool isSharedWild() const { return (mod & (MODshared | MODwild)) == (MODshared | MODwild); }
|
||||||
bool isNaked() const { return mod == 0; }
|
bool isNaked() const { return mod == 0; }
|
||||||
Type *nullAttributes() const;
|
Type *nullAttributes() const;
|
||||||
Type *arrayOf();
|
|
||||||
Type *sarrayOf(dinteger_t dim);
|
Type *sarrayOf(dinteger_t dim);
|
||||||
bool hasDeprecatedAliasThis();
|
bool hasDeprecatedAliasThis();
|
||||||
virtual Type *makeConst();
|
virtual Type *makeConst();
|
||||||
|
|
|
@ -727,7 +727,7 @@ LLValue *DtoArrayEqCmp_impl(const Loc &loc, const char *func, DValue *l,
|
||||||
assert(fn);
|
assert(fn);
|
||||||
|
|
||||||
// find common dynamic array type
|
// find common dynamic array type
|
||||||
Type *commonType = l->type->toBasetype()->nextOf()->arrayOf();
|
Type *commonType = arrayOf(l->type->toBasetype()->nextOf());
|
||||||
|
|
||||||
// cast static arrays to dynamic ones, this turns them into DSliceValues
|
// cast static arrays to dynamic ones, this turns them into DSliceValues
|
||||||
Logger::println("casting to dynamic arrays");
|
Logger::println("casting to dynamic arrays");
|
||||||
|
|
|
@ -181,7 +181,7 @@ llvm::FunctionType *DtoFunctionType(Type *type, IrFuncTy &irFty, Type *thistype,
|
||||||
if (isLLVMVariadic && f->linkage == LINK::d) {
|
if (isLLVMVariadic && f->linkage == LINK::d) {
|
||||||
// Add extra `_arguments` parameter for D-style variadic functions.
|
// Add extra `_arguments` parameter for D-style variadic functions.
|
||||||
newIrFty.arg_arguments =
|
newIrFty.arg_arguments =
|
||||||
new IrFuncTyArg(getTypeInfoType()->arrayOf(), false);
|
new IrFuncTyArg(arrayOf(getTypeInfoType()), false);
|
||||||
++nextLLArgIdx;
|
++nextLLArgIdx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -189,7 +189,7 @@ llvm::FunctionType *DtoFunctionType(Type *type, IrFuncTy &irFty, Type *thistype,
|
||||||
|
|
||||||
// if this _Dmain() doesn't have an argument, we force it to have one
|
// if this _Dmain() doesn't have an argument, we force it to have one
|
||||||
if (isMain && f->linkage != LINK::c && numExplicitDArgs == 0) {
|
if (isMain && f->linkage != LINK::c && numExplicitDArgs == 0) {
|
||||||
Type *mainargs = Type::tchar->arrayOf()->arrayOf();
|
Type *mainargs = arrayOf(arrayOf(Type::tchar));
|
||||||
newIrFty.args.push_back(new IrFuncTyArg(mainargs, false));
|
newIrFty.args.push_back(new IrFuncTyArg(mainargs, false));
|
||||||
++nextLLArgIdx;
|
++nextLLArgIdx;
|
||||||
}
|
}
|
||||||
|
|
|
@ -66,7 +66,7 @@ void RTTIBuilder::push_typeinfo(Type *t) { push(DtoTypeInfoOf(Loc(), t)); }
|
||||||
void RTTIBuilder::push_string(const char *str) { push(DtoConstString(str)); }
|
void RTTIBuilder::push_string(const char *str) { push(DtoConstString(str)); }
|
||||||
|
|
||||||
void RTTIBuilder::push_null_void_array() {
|
void RTTIBuilder::push_null_void_array() {
|
||||||
LLType *T = DtoType(Type::tvoid->arrayOf());
|
LLType *T = DtoType(arrayOf(Type::tvoid));
|
||||||
push(getNullValue(T));
|
push(getNullValue(T));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -92,7 +92,7 @@ void RTTIBuilder::push_void_array(llvm::Constant *CI, Type *valtype,
|
||||||
|
|
||||||
void RTTIBuilder::push_array(llvm::Constant *CI, uint64_t dim, Type *valtype,
|
void RTTIBuilder::push_array(llvm::Constant *CI, uint64_t dim, Type *valtype,
|
||||||
Dsymbol *mangle_sym) {
|
Dsymbol *mangle_sym) {
|
||||||
std::string tmpStr(valtype->arrayOf()->toChars());
|
std::string tmpStr(arrayOf(valtype)->toChars());
|
||||||
tmpStr.erase(remove(tmpStr.begin(), tmpStr.end(), '['), tmpStr.end());
|
tmpStr.erase(remove(tmpStr.begin(), tmpStr.end(), '['), tmpStr.end());
|
||||||
tmpStr.erase(remove(tmpStr.begin(), tmpStr.end(), ']'), tmpStr.end());
|
tmpStr.erase(remove(tmpStr.begin(), tmpStr.end(), ']'), tmpStr.end());
|
||||||
tmpStr.append("arr");
|
tmpStr.append("arr");
|
||||||
|
|
|
@ -492,11 +492,11 @@ static void buildRuntimeModule() {
|
||||||
Type *dcharTy = Type::tdchar;
|
Type *dcharTy = Type::tdchar;
|
||||||
|
|
||||||
Type *voidPtrTy = Type::tvoidptr;
|
Type *voidPtrTy = Type::tvoidptr;
|
||||||
Type *voidArrayTy = Type::tvoid->arrayOf();
|
Type *voidArrayTy = arrayOf(Type::tvoid);
|
||||||
Type *voidArrayPtrTy = pointerTo(voidArrayTy);
|
Type *voidArrayPtrTy = pointerTo(voidArrayTy);
|
||||||
Type *stringTy = Type::tchar->arrayOf();
|
Type *stringTy = arrayOf(Type::tchar);
|
||||||
Type *wstringTy = Type::twchar->arrayOf();
|
Type *wstringTy = arrayOf(Type::twchar);
|
||||||
Type *dstringTy = Type::tdchar->arrayOf();
|
Type *dstringTy = arrayOf(Type::tdchar);
|
||||||
|
|
||||||
// LDC's AA type is rt.aaA.Impl*; use void* for the prototypes
|
// LDC's AA type is rt.aaA.Impl*; use void* for the prototypes
|
||||||
Type *aaTy = voidPtrTy;
|
Type *aaTy = voidPtrTy;
|
||||||
|
@ -823,7 +823,7 @@ static void buildRuntimeModule() {
|
||||||
// uint[] data, ubyte minPercent)
|
// uint[] data, ubyte minPercent)
|
||||||
if (global.params.cov) {
|
if (global.params.cov) {
|
||||||
createFwdDecl(LINK::c, voidTy, {"_d_cover_register2"},
|
createFwdDecl(LINK::c, voidTy, {"_d_cover_register2"},
|
||||||
{stringTy, sizeTy->arrayOf(), uintTy->arrayOf(), ubyteTy});
|
{stringTy, arrayOf(sizeTy), arrayOf(uintTy), ubyteTy});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (target.objc.supported) {
|
if (target.objc.supported) {
|
||||||
|
|
|
@ -247,7 +247,7 @@ static LLValue *getTypeinfoArrayArgumentForDVarArg(Expressions *argexps,
|
||||||
LLConstant *pinits[] = {
|
LLConstant *pinits[] = {
|
||||||
DtoConstSize_t(numVariadicArgs),
|
DtoConstSize_t(numVariadicArgs),
|
||||||
llvm::ConstantExpr::getBitCast(typeinfomem, getPtrToType(typeinfotype))};
|
llvm::ConstantExpr::getBitCast(typeinfomem, getPtrToType(typeinfotype))};
|
||||||
LLType *tiarrty = DtoType(getTypeInfoType()->arrayOf());
|
LLType *tiarrty = DtoType(arrayOf(getTypeInfoType()));
|
||||||
tiinits = LLConstantStruct::get(isaStruct(tiarrty),
|
tiinits = LLConstantStruct::get(isaStruct(tiarrty),
|
||||||
llvm::ArrayRef<LLConstant *>(pinits));
|
llvm::ArrayRef<LLConstant *>(pinits));
|
||||||
LLValue *typeinfoarrayparam = new llvm::GlobalVariable(
|
LLValue *typeinfoarrayparam = new llvm::GlobalVariable(
|
||||||
|
|
|
@ -39,6 +39,8 @@
|
||||||
#include "ir/irtypefunction.h"
|
#include "ir/irtypefunction.h"
|
||||||
#include "ir/irtypestruct.h"
|
#include "ir/irtypestruct.h"
|
||||||
|
|
||||||
|
using namespace dmd;
|
||||||
|
|
||||||
bool DtoIsInMemoryOnly(Type *type) {
|
bool DtoIsInMemoryOnly(Type *type) {
|
||||||
Type *typ = type->toBasetype();
|
Type *typ = type->toBasetype();
|
||||||
TY t = typ->ty;
|
TY t = typ->ty;
|
||||||
|
@ -516,7 +518,7 @@ LLConstant *DtoConstCString(const char *str) {
|
||||||
LLConstant *DtoConstString(const char *str) {
|
LLConstant *DtoConstString(const char *str) {
|
||||||
LLConstant *cString = DtoConstCString(str);
|
LLConstant *cString = DtoConstCString(str);
|
||||||
LLConstant *length = DtoConstSize_t(str ? strlen(str) : 0);
|
LLConstant *length = DtoConstSize_t(str ? strlen(str) : 0);
|
||||||
return DtoConstSlice(length, cString, Type::tchar->arrayOf());
|
return DtoConstSlice(length, cString, arrayOf(Type::tchar));
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue