Mercurial > projects > ldc
annotate ir/irsymbol.cpp @ 972:d66ab756c75b
Change the way the version is printed (more verbose, with short hash)
If the user has patches managed by the mq extension, the version and hash
printed are those of the qparent revision (the revision the patches were
applied on top of) instead of tip.
Also fixes a bug: print LLVM revision even if there are local modifications to
it.
Sorry for the long line in the perl file. I have no idea how to break it up.
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Tue, 17 Feb 2009 01:13:18 +0100 |
parents | 05c9faedc13c |
children |
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 |
177
cea8dcfa76df
[svn r193] Fixed: abstract classes implementing interfaces now output proper Interface info arrays. (null vtables).
lindquist
parents:
175
diff
changeset
|
6 #include "gen/logger.h" |
cea8dcfa76df
[svn r193] Fixed: abstract classes implementing interfaces now output proper Interface info arrays. (null vtables).
lindquist
parents:
175
diff
changeset
|
7 |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
8 std::set<IrDsymbol*> IrDsymbol::list; |
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 void IrDsymbol::resetAll() |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
11 { |
177
cea8dcfa76df
[svn r193] Fixed: abstract classes implementing interfaces now output proper Interface info arrays. (null vtables).
lindquist
parents:
175
diff
changeset
|
12 Logger::println("resetting %u Dsymbols", list.size()); |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
13 std::set<IrDsymbol*>::iterator it; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
14 for(it = list.begin(); it != list.end(); ++it) |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
15 (*it)->reset(); |
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 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
18 IrDsymbol::IrDsymbol() |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
19 { |
877
05c9faedc13c
Move adding IrSymbols to global list out of assert.
Christian Kamm <kamm incasoftware de>
parents:
177
diff
changeset
|
20 bool incr = list.insert(this).second; |
05c9faedc13c
Move adding IrSymbols to global list out of assert.
Christian Kamm <kamm incasoftware de>
parents:
177
diff
changeset
|
21 assert(incr); |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
22 reset(); |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
23 } |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
24 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
25 IrDsymbol::IrDsymbol(const IrDsymbol& s) |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
26 { |
877
05c9faedc13c
Move adding IrSymbols to global list out of assert.
Christian Kamm <kamm incasoftware de>
parents:
177
diff
changeset
|
27 bool incr = list.insert(this).second; |
05c9faedc13c
Move adding IrSymbols to global list out of assert.
Christian Kamm <kamm incasoftware de>
parents:
177
diff
changeset
|
28 assert(incr); |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
29 DModule = s.DModule; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
30 irModule = s.irModule; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
31 irStruct = s.irStruct; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
32 irFunc = s.irFunc; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
33 resolved = s.resolved; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
34 declared = s.declared; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
35 initialized = s.initialized; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
36 defined = s.defined; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
37 irGlobal = s.irGlobal; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
38 irLocal = s.irLocal; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
39 irField = s.irField; |
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 IrDsymbol::~IrDsymbol() |
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 list.erase(this); |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
45 } |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
46 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
47 void IrDsymbol::reset() |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
48 { |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
49 DModule = NULL; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
50 irModule = NULL; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
51 irStruct = NULL; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
52 irFunc = NULL; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
53 resolved = declared = initialized = defined = false; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
54 irGlobal = NULL; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
55 irLocal = NULL; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
56 irField = NULL; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
57 } |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
58 |
175
c44e6a711885
[svn r191] Fixed: array literals did not support all type/storage combinations.
lindquist
parents:
174
diff
changeset
|
59 bool IrDsymbol::isSet() |
c44e6a711885
[svn r191] Fixed: array literals did not support all type/storage combinations.
lindquist
parents:
174
diff
changeset
|
60 { |
c44e6a711885
[svn r191] Fixed: array literals did not support all type/storage combinations.
lindquist
parents:
174
diff
changeset
|
61 return (irStruct || irFunc || irGlobal || irLocal || irField); |
c44e6a711885
[svn r191] Fixed: array literals did not support all type/storage combinations.
lindquist
parents:
174
diff
changeset
|
62 } |
c44e6a711885
[svn r191] Fixed: array literals did not support all type/storage combinations.
lindquist
parents:
174
diff
changeset
|
63 |
173
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
64 IrVar* IrDsymbol::getIrVar() |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
65 { |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
66 assert(irGlobal || irLocal || irField); |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
67 return irGlobal ? (IrVar*)irGlobal : irLocal ? (IrVar*)irLocal : (IrVar*)irField; |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
68 } |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
69 |
db9890b3fb64
[svn r189] moving IR data back into DMD frontend nodes
ChristianK
parents:
diff
changeset
|
70 llvm::Value*& IrDsymbol::getIrValue() { return getIrVar()->value; } |