comparison ir/irsymbol.cpp @ 173:db9890b3fb64 trunk

[svn r189] moving IR data back into DMD frontend nodes
author ChristianK
date Tue, 06 May 2008 07:56:03 +0200
parents
children 16e676ae5ab4
comparison
equal deleted inserted replaced
172:68a7dd38c03c 173:db9890b3fb64
1 #include "gen/llvm.h"
2 #include "ir/ir.h"
3 #include "ir/irsymbol.h"
4 #include "ir/irvar.h"
5
6 std::set<IrDsymbol*> IrDsymbol::list;
7
8 void IrDsymbol::resetAll()
9 {
10 std::set<IrDsymbol*>::iterator it;
11 for(it = list.begin(); it != list.end(); ++it)
12 (*it)->reset();
13 }
14
15 IrDsymbol::IrDsymbol()
16 {
17 list.insert(this);
18 reset();
19 }
20
21 IrDsymbol::IrDsymbol(const IrDsymbol& s)
22 {
23 list.insert(this);
24 DModule = s.DModule;
25 irModule = s.irModule;
26 irStruct = s.irStruct;
27 irFunc = s.irFunc;
28 resolved = s.resolved;
29 declared = s.declared;
30 initialized = s.initialized;
31 defined = s.defined;
32 irGlobal = s.irGlobal;
33 irLocal = s.irLocal;
34 irField = s.irField;
35 }
36
37 IrDsymbol::~IrDsymbol()
38 {
39 list.erase(this);
40 }
41
42 void IrDsymbol::reset()
43 {
44 DModule = NULL;
45 irModule = NULL;
46 irStruct = NULL;
47 irFunc = NULL;
48 resolved = declared = initialized = defined = false;
49 irGlobal = NULL;
50 irLocal = NULL;
51 irField = NULL;
52 }
53
54 IrVar* IrDsymbol::getIrVar()
55 {
56 assert(irGlobal || irLocal || irField);
57 return irGlobal ? (IrVar*)irGlobal : irLocal ? (IrVar*)irLocal : (IrVar*)irField;
58 }
59
60 llvm::Value*& IrDsymbol::getIrValue() { return getIrVar()->value; }