Mercurial > projects > ldc
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()); |