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