Mercurial > projects > ldc
diff ir/irvar.cpp @ 136:0e28624814e8 trunk
[svn r140] did a lot of the work towards being able to pass multiple modules on the command line. not complete yet though
author | lindquist |
---|---|
date | Thu, 17 Jan 2008 03:15:12 +0100 |
parents | |
children | ccd07d9f2ce9 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/ir/irvar.cpp Thu Jan 17 03:15:12 2008 +0100 @@ -0,0 +1,63 @@ +#include "llvm/DerivedTypes.h" +#include "declaration.h" +#include "ir/irvar.h" + + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +IrVar* VarDeclaration::getIrVar() +{ + assert(irGlobal || irLocal || irField); + return irGlobal ? (IrVar*)irGlobal : irLocal ? (IrVar*)irLocal : (IrVar*)irField; +} + +llvm::Value*& VarDeclaration::getIrValue() +{ + return getIrVar()->value; +} + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +IrVar::IrVar(VarDeclaration* var) +{ + V = var; + value = NULL; +} + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +IrGlobal::IrGlobal(VarDeclaration* v): IrVar(v), + type(llvm::OpaqueType::get()) +{ + constInit = NULL; +} + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +IrLocal::IrLocal(VarDeclaration* v) : IrVar(v) +{ + nestedIndex = -1; +} + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// + +IrField::IrField(VarDeclaration* v) : IrVar(v) +{ + index = -1; + indexOffset = 0; + constInit = NULL; +} + +////////////////////////////////////////////////////////////////////////////// +////////////////////////////////////////////////////////////////////////////// +//////////////////////////////////////////////////////////////////////////////