# HG changeset patch # User Christian Kamm # Date 1218907796 -7200 # Node ID cd4eeb6cc5f66b863496aa1c5ca7ac466ff5a453 # Parent 99e95dae90d51e6d657a223f57729292cdd1f6fa Fix TypeInfo_Tuple array initialization. Fixes: mini/emptytuple.d diff -r 99e95dae90d5 -r cd4eeb6cc5f6 gen/typinf.cpp --- a/gen/typinf.cpp Sat Aug 16 14:01:23 2008 +0200 +++ b/gen/typinf.cpp Sat Aug 16 19:29:56 2008 +0200 @@ -1146,8 +1146,17 @@ const LLArrayType* arrTy = LLArrayType::get(tiTy, dim); LLConstant* arrC = llvm::ConstantArray::get(arrTy, arrInits); + // need the pointer to the first element of arrC, so create a global for it + llvm::GlobalValue::LinkageTypes _linkage = llvm::GlobalValue::InternalLinkage;//WeakLinkage; + llvm::GlobalVariable* gvar = new llvm::GlobalVariable(arrTy,true,_linkage,arrC,".tupleelements",gIR->module); + + // get pointer to first element + llvm::ConstantInt* zero = DtoConstSize_t(0); + LLConstant* idxs[2] = { zero, zero }; + LLConstant* arrptr = llvm::ConstantExpr::getGetElementPtr(gvar, idxs, 2); + // build the slice - LLConstant* slice = DtoConstSlice(DtoConstSize_t(dim), arrC); + LLConstant* slice = DtoConstSlice(DtoConstSize_t(dim), arrptr); sinits.push_back(slice); // create the symbol