comparison gen/structs.cpp @ 796:6e7a4c3b64d2

Error instead of assert when trying to build a default initializer for void[n].
author Christian Kamm <kamm incasoftware de>
date Sat, 29 Nov 2008 12:28:10 +0100
parents 041c1596d217
children 340acf1535d0
comparison
equal deleted inserted replaced
795:06ba66bc0689 796:6e7a4c3b64d2
40 { 40 {
41 Initializer* ini = (Initializer*)si->value.data[i]; 41 Initializer* ini = (Initializer*)si->value.data[i];
42 assert(ini); 42 assert(ini);
43 VarDeclaration* vd = (VarDeclaration*)si->vars.data[i]; 43 VarDeclaration* vd = (VarDeclaration*)si->vars.data[i];
44 assert(vd); 44 assert(vd);
45 LLConstant* v = DtoConstInitializer(vd->type, ini); 45 LLConstant* v = DtoConstInitializer(vd->loc, vd->type, ini);
46 inits.push_back(DUnionIdx(vd->ir.irField->index, vd->ir.irField->indexOffset, v)); 46 inits.push_back(DUnionIdx(vd->ir.irField->index, vd->ir.irField->indexOffset, v));
47 } 47 }
48 48
49 DtoConstInitStruct((StructDeclaration*)si->ad); 49 DtoConstInitStruct((StructDeclaration*)si->ad);
50 return si->ad->ir.irStruct->dunion->getConst(inits); 50 return si->ad->ir.irStruct->dunion->getConst(inits);
288 288
289 // make sure each offset knows its default initializer 289 // make sure each offset knows its default initializer
290 for (IrStruct::OffsetMap::iterator i=irstruct->offsets.begin(); i!=irstruct->offsets.end(); ++i) 290 for (IrStruct::OffsetMap::iterator i=irstruct->offsets.begin(); i!=irstruct->offsets.end(); ++i)
291 { 291 {
292 IrStruct::Offset* so = &i->second; 292 IrStruct::Offset* so = &i->second;
293 LLConstant* finit = DtoConstFieldInitializer(so->var->type, so->var->init); 293 LLConstant* finit = DtoConstFieldInitializer(so->var->loc, so->var->type, so->var->init);
294 so->init = finit; 294 so->init = finit;
295 so->var->ir.irField->constInit = finit; 295 so->var->ir.irField->constInit = finit;
296 } 296 }
297 297
298 const llvm::StructType* structtype = isaStruct(sd->type->ir.type->get()); 298 const llvm::StructType* structtype = isaStruct(sd->type->ir.type->get());