mirror of
https://github.com/xomboverlord/ldc.git
synced 2026-01-11 18:33:14 +01:00
47 lines
864 B
C
47 lines
864 B
C
#ifndef LLVMDC_GEN_ELEM_H
|
|
#define LLVMDC_GEN_ELEM_H
|
|
|
|
#include "root.h"
|
|
#include "declaration.h"
|
|
#include "aggregate.h"
|
|
|
|
// represents a value. be it a constant literal, a variable etc.
|
|
// maintains all the information for doing load/store appropriately
|
|
struct elem : Object
|
|
{
|
|
enum {
|
|
NONE,
|
|
VAR,
|
|
VAL,
|
|
FUNC,
|
|
CONST,
|
|
NUL,
|
|
REF,
|
|
SLICE,
|
|
ARRAYLEN
|
|
};
|
|
|
|
public:
|
|
elem();
|
|
|
|
llvm::Value* mem;
|
|
llvm::Value* val;
|
|
llvm::Value* arg;
|
|
int type;
|
|
bool inplace;
|
|
bool field;
|
|
unsigned callconv;
|
|
bool isthis;
|
|
bool istypeinfo;
|
|
|
|
VarDeclaration* vardecl;
|
|
FuncDeclaration* funcdecl;
|
|
|
|
llvm::Value* getValue();
|
|
//llvm::Value* getMemory();
|
|
|
|
bool isNull() {return !(mem || val);}
|
|
};
|
|
|
|
#endif // LLVMDC_GEN_ELEM_H
|