Mercurial > projects > ldc
annotate ir/ir.cpp @ 1463:a5526b7a5ae6
D2:
Applied function type from D1 frontend that got removed in D2, it's critical for member function type to be correct.
Fixed a bunch of type discrepancies in druntime object.di vs. genobj.d .
Disabled (#if 0) some potentally very large type dumps for -vv .
Updated classinfo and typeinfo generation for D2, almost complete now.
Added finer grained checks for vtbl type mismatching, aids debugging.
author | Tomas Lindquist Olsen <tomas.l.olsen gmail com> |
---|---|
date | Wed, 03 Jun 2009 02:28:48 +0200 |
parents | 2a687353c84d |
children |
rev | line source |
---|---|
1150
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
1 #include "llvm/Target/TargetData.h" |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
2 |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
3 #include "gen/irstate.h" |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
4 #include "gen/tollvm.h" |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
5 #include "gen/functions.h" |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
6 |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
7 #include "ir/ir.h" |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
8 #include "ir/irfunction.h" |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
9 |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
10 |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
11 unsigned GetTypeAlignment(Ir* ir, Type* t) |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
12 { |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
13 return gTargetData->getABITypeAlignment(DtoType(t)); |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
14 } |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
15 |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
16 Ir::Ir() |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
17 : irs(NULL) |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
18 { |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
19 } |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
20 |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
21 void Ir::addFunctionBody(IrFunction * f) |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
22 { |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
23 functionbodies.push_back(f); |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
24 } |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
25 |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
26 void Ir::emitFunctionBodies() |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
27 { |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
28 while (!functionbodies.empty()) |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
29 { |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
30 IrFunction* irf = functionbodies.front(); |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
31 functionbodies.pop_front(); |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
32 DtoDefineFunction(irf->decl); |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
33 } |
2a687353c84d
Added missing new files.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents:
diff
changeset
|
34 } |