mirror of
https://github.com/ldc-developers/ldc.git
synced 2025-05-03 08:30:47 +03:00
parent
97819eb7ff
commit
c897015f62
3 changed files with 9 additions and 6 deletions
|
@ -363,15 +363,15 @@ static void DtoSetArray(DValue* array, LLValue* dim, LLValue* ptr)
|
|||
|
||||
//////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
LLConstant* DtoConstArrayInitializer(ArrayInitializer* arrinit)
|
||||
LLConstant* DtoConstArrayInitializer(ArrayInitializer* arrinit, Type* targetType)
|
||||
{
|
||||
IF_LOG Logger::println("DtoConstArrayInitializer: %s | %s", arrinit->toChars(), arrinit->type->toChars());
|
||||
IF_LOG Logger::println("DtoConstArrayInitializer: %s | %s", arrinit->toChars(), targetType->toChars());
|
||||
LOG_SCOPE;
|
||||
|
||||
assert(arrinit->value.dim == arrinit->index.dim);
|
||||
|
||||
// get base array type
|
||||
Type* arrty = arrinit->type->toBasetype();
|
||||
Type* arrty = targetType->toBasetype();
|
||||
size_t arrlen = arrinit->dim;
|
||||
|
||||
// for statis arrays, dmd does not include any trailing default
|
||||
|
|
|
@ -30,8 +30,11 @@ llvm::StructType* DtoArrayType(Type* arrayTy);
|
|||
llvm::StructType* DtoArrayType(LLType* elemTy);
|
||||
llvm::ArrayType* DtoStaticArrayType(Type* sarrayTy);
|
||||
|
||||
LLType* DtoConstArrayInitializerType(ArrayInitializer* arrinit);
|
||||
LLConstant* DtoConstArrayInitializer(ArrayInitializer* si);
|
||||
/// Creates a (global) constant with the element data for the given arary
|
||||
/// initializer. targetType is explicit because the frontend sometimes emits
|
||||
/// ArrayInitializers for vectors typed as static arrays.
|
||||
LLConstant* DtoConstArrayInitializer(ArrayInitializer* si, Type* targetType);
|
||||
|
||||
LLConstant* DtoConstSlice(LLConstant* dim, LLConstant* ptr, Type *type = 0);
|
||||
|
||||
/// Returns whether the array literal can be evaluated to a (LLVM) constant.
|
||||
|
|
|
@ -1178,7 +1178,7 @@ LLConstant* DtoConstInitializer(Loc& loc, Type* type, Initializer* init)
|
|||
else if (ArrayInitializer* ai = init->isArrayInitializer())
|
||||
{
|
||||
Logger::println("const array initializer");
|
||||
_init = DtoConstArrayInitializer(ai);
|
||||
_init = DtoConstArrayInitializer(ai, type);
|
||||
}
|
||||
else if (init->isVoidInitializer())
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue