Mercurial > projects > ldc
view ir/irvar.cpp @ 1617:6820110de311
Merge DMD r301: a little refactor and harmonize
---
dmd/declaration.h | 1 +
dmd/func.c | 30 ++++++++++++++++++++++++++++++
dmd/mtype.c | 51 +++++++++++++++++++++++++++++++++++++--------------
3 files changed, 68 insertions(+), 14 deletions(-)
author | Leandro Lucarella <llucax@gmail.com> |
---|---|
date | Wed, 06 Jan 2010 15:18:21 -0300 |
parents | 8d086d552909 |
children | 40bd4a0d4870 |
line wrap: on
line source
#include "gen/llvm.h" #include "declaration.h" #include "ir/irvar.h" ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// IrVar::IrVar(VarDeclaration* var) { V = var; value = NULL; } ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// IrGlobal::IrGlobal(VarDeclaration* v): IrVar(v), type(llvm::OpaqueType::get(llvm::getGlobalContext())) { constInit = NULL; } ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// IrLocal::IrLocal(VarDeclaration* v) : IrVar(v) { nestedIndex = -1; } ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// IrField::IrField(VarDeclaration* v) : IrVar(v) { assert(V->ir.irField == NULL && "field for this variable already exists"); V->ir.irField = this; if (v->aggrIndex) { index = v->aggrIndex; unionOffset = 0; } else { index = 0; unionOffset = v->offset; } constInit = NULL; } extern LLConstant* get_default_initializer( VarDeclaration* vd, Initializer* init); llvm::Constant * IrField::getDefaultInit() { if (constInit) return constInit; constInit = get_default_initializer(V, V->init); return constInit; } ////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////