comparison ir/irvar.cpp @ 1309:0c03ba6f7c24

Fixed deal breaker bug for more-at-once compilation when any module contained aggregates. Fixes ticket #272 .
author Tomas Lindquist Olsen <tomas.l.olsen gmail com>
date Thu, 07 May 2009 02:10:29 +0200
parents 212ec2d9d176
children 8d086d552909
comparison
equal deleted inserted replaced
1308:316e9ecfeb7d 1309:0c03ba6f7c24
34 34
35 ////////////////////////////////////////////////////////////////////////////// 35 //////////////////////////////////////////////////////////////////////////////
36 ////////////////////////////////////////////////////////////////////////////// 36 //////////////////////////////////////////////////////////////////////////////
37 ////////////////////////////////////////////////////////////////////////////// 37 //////////////////////////////////////////////////////////////////////////////
38 38
39 IrField::IrField(VarDeclaration* v, size_t idx, size_t offset) : IrVar(v) 39 IrField::IrField(VarDeclaration* v) : IrVar(v)
40 { 40 {
41 index = idx;
42 unionOffset = offset;
43 constInit = NULL;
44
45 assert(V->ir.irField == NULL && "field for this variable already exists"); 41 assert(V->ir.irField == NULL && "field for this variable already exists");
46 V->ir.irField = this; 42 V->ir.irField = this;
43
44 if (v->aggrIndex)
45 {
46 index = v->aggrIndex;
47 unionOffset = 0;
48 }
49 else
50 {
51 index = 0;
52 unionOffset = v->offset;
53 }
54 constInit = NULL;
47 } 55 }
48 56
49 extern LLConstant* get_default_initializer( 57 extern LLConstant* get_default_initializer(
50 VarDeclaration* vd, 58 VarDeclaration* vd,
51 Initializer* init); 59 Initializer* init);