Mercurial > projects > ldc
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; } |