Files
ldc/ir/irvar.h
Alexey Prokhin 15a903580b Partial fix for #69 — LDC1 from master fails to build Tango.
Fixed regression that has been introduced in commit 9889067.
2012-01-29 12:32:13 +04:00

60 lines
1.0 KiB
C++

#ifndef LDC_IR_IRVAR_H
#define LDC_IR_IRVAR_H
#include "ir/ir.h"
#include "llvm/Type.h"
struct IrFuncTyArg;
struct IrVar : IrBase
{
IrVar(VarDeclaration* var);
VarDeclaration* V;
llvm::Value* value;
};
// represents a global variable
struct IrGlobal : IrVar
{
IrGlobal(VarDeclaration* v);
llvm::Type *type;
llvm::Constant* constInit;
};
// represents a local variable variable
struct IrLocal : IrVar
{
IrLocal(VarDeclaration* v);
bool byref; // Not used for -nested-ctx=array
int nestedDepth; // ditto
int nestedIndex;
};
// represents a function parameter
struct IrParameter : IrLocal
{
IrParameter(VarDeclaration* v);
IrFuncTyArg *arg;
bool isVthis; // true, if it is the 'this' parameter
};
// represents an aggregate field variable
struct IrField : IrVar
{
IrField(VarDeclaration* v);
unsigned index;
unsigned unionOffset;
llvm::Constant* getDefaultInit();
protected:
/// FIXME: only used for StructLiteralsExps
llvm::Constant* constInit;
};
#endif