annotate 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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
173
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
1 #include "gen/llvm.h"
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
2 #include "ir/ir.h"
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
3 #include "ir/irsymbol.h"
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
4 #include "ir/irvar.h"
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
5
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
6 std::set<IrDsymbol*> IrDsymbol::list;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
7
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
8 void IrDsymbol::resetAll()
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
9 {
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
10 std::set<IrDsymbol*>::iterator it;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
11 for(it = list.begin(); it != list.end(); ++it)
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
12 (*it)->reset();
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
13 }
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
14
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
15 IrDsymbol::IrDsymbol()
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
16 {
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
17 list.insert(this);
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
18 reset();
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
19 }
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
20
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
21 IrDsymbol::IrDsymbol(const IrDsymbol& s)
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
22 {
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
23 list.insert(this);
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
24 DModule = s.DModule;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
25 irModule = s.irModule;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
26 irStruct = s.irStruct;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
27 irFunc = s.irFunc;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
28 resolved = s.resolved;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
29 declared = s.declared;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
30 initialized = s.initialized;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
31 defined = s.defined;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
32 irGlobal = s.irGlobal;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
33 irLocal = s.irLocal;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
34 irField = s.irField;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
35 }
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
36
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
37 IrDsymbol::~IrDsymbol()
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
38 {
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
39 list.erase(this);
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
40 }
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
41
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
42 void IrDsymbol::reset()
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
43 {
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
44 DModule = NULL;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
45 irModule = NULL;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
46 irStruct = NULL;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
47 irFunc = NULL;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
48 resolved = declared = initialized = defined = false;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
49 irGlobal = NULL;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
50 irLocal = NULL;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
51 irField = NULL;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
52 }
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
53
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
54 IrVar* IrDsymbol::getIrVar()
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
55 {
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
56 assert(irGlobal || irLocal || irField);
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
57 return irGlobal ? (IrVar*)irGlobal : irLocal ? (IrVar*)irLocal : (IrVar*)irField;
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
58 }
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
59
db9890b3fb64 [svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff changeset
60 llvm::Value*& IrDsymbol::getIrValue() { return getIrVar()->value; }