annotate dmd/module.h @ 1351:8d501abecd24

Initial (but disabled) fix for ticket #294 , the actual part that fixes the bug is in a #if 0 block as I'm afraid it will cause regressions. I'm most likely not going to be around tonight, and maybe not tomorrow as well, so I'm pushing it in case someone wants to run some serious testing/investigate the problem noted in llvmhelpers.cpp : realignOffset .
author Tomas Lindquist Olsen <tomas.l.olsen gmail com>
date Thu, 14 May 2009 17:20:17 +0200
parents dbe4af57b240
children 46f6365a50d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
1
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
2 // Compiler implementation of the D programming language
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
3 // Copyright (c) 1999-2008 by Digital Mars
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
4 // All Rights Reserved
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
5 // written by Walter Bright
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
6 // http://www.digitalmars.com
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
7 // License for redistribution is by either the Artistic License
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
8 // in artistic.txt, or the GNU General Public License in gnu.txt.
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
9 // See the included readme.txt for details.
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
10
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
11 #ifndef DMD_MODULE_H
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
12 #define DMD_MODULE_H
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
13
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
14 #ifdef __DMC__
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
15 #pragma once
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
16 #endif /* __DMC__ */
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
17
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
18 #include "root.h"
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
19 #include "dsymbol.h"
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
20
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
21 struct ModuleInfoDeclaration;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
22 struct ClassDeclaration;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
23 struct ModuleDeclaration;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
24 struct Macro;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
25 struct Escape;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
26 struct VarDeclaration;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
27 struct Library;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
28
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
29 // Back end
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
30 #if IN_LLVM
1147
dbe4af57b240 Changed use of toObjFile to a new codegen method.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1146
diff changeset
31 struct Ir;
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
32 struct DValue;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
33 typedef DValue elem;
1052
12ea38902e83 Add '-singleobj' command line switch that will tell LDC to link LLVM modules internally and only emit a single object file.
Christian Kamm <kamm incasoftware de>
parents: 957
diff changeset
34 namespace llvm { class Module; }
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
35 #else
1146
1860414bf3b7 * Moved ir/irsymbol.cpp/h into ir/irdsymbol.cpp/h.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1103
diff changeset
36
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
37 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
38 union tree_node; typedef union tree_node elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
39 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
40 struct elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
41 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
42 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
43
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
44 struct Package : ScopeDsymbol
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
45 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
46 Package(Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
47 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
48
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
49 static DsymbolTable *resolve(Array *packages, Dsymbol **pparent, Package **ppkg);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
50
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
51 Package *isPackage() { return this; }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
52
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
53 virtual void semantic(Scope *sc) { }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
54 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
55
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
56 struct Module : Package
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
57 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
58 static Module *rootModule;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
59 static DsymbolTable *modules; // symbol table of all modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
60 static Array amodules; // array of all modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
61 static Array deferred; // deferred Dsymbol's needing semantic() run on them
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
62 static unsigned dprogress; // progress resolving the deferred list
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
63 static void init();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
64
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
65 static ClassDeclaration *moduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
66
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
67
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
68 const char *arg; // original argument name
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
69 ModuleDeclaration *md; // if !NULL, the contents of the ModuleDeclaration declaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
70 File *srcfile; // input source file
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
71
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
72 File *objfile; // output object file
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
73 File *docfile; // output doc file
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
74 File *hdrfile; // output hdr file
486
a34078905d01 Added pragma(llvmdc, "string") for misc per-module compiler configuration, currently "string" can only be "verbose" which forces -vv for module it appears in.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 432
diff changeset
75
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
76 unsigned errors; // if any errors in file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
77 unsigned numlines; // number of lines in source file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
78 int isHtml; // if it is an HTML file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
79 int isDocFile; // if it is a documentation input file, not D source
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
80 int needmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
81 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
82 int strictlyneedmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
83 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
84
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1052
diff changeset
85 int selfimports; // 0: don't know, 1: does not, 2: does
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1052
diff changeset
86 int selfImports(); // returns !=0 if module imports itself
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1052
diff changeset
87
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
88 int insearch;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
89 Identifier *searchCacheIdent;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
90 Dsymbol *searchCacheSymbol; // cached value of search
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
91 int searchCacheFlags; // cached flags
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
92
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
93 int semanticstarted; // has semantic() been started?
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
94 int semanticdone; // has semantic() been done?
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
95 int root; // != 0 if this is a 'root' module,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
96 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
97 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
98 Module *importedFrom; // module from command line we're imported from,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
99 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
100 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
101
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
102 Array *decldefs; // top level declarations for this Module
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
103
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
104 Array aimports; // all imported modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
105
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
106 ModuleInfoDeclaration *vmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
107
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
108 unsigned debuglevel; // debug level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
109 Array *debugids; // debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
110 Array *debugidsNot; // forward referenced debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
111
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
112 unsigned versionlevel; // version level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
113 Array *versionids; // version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
114 Array *versionidsNot; // forward referenced version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
115
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
116 Macro *macrotable; // document comment macros
432
ecf70fe065b9 fixed configuration file loading issues on windows
elrood
parents: 336
diff changeset
117 struct Escape *escapetable; // document comment escapes
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
118
604
a30fc28e8f23 Make creating and deleting of doc and hdr files dependent on whether doc and
Christian Kamm <kamm incasoftware de>
parents: 580
diff changeset
119 int doDocComment; // enable generating doc comments for this module
a30fc28e8f23 Make creating and deleting of doc and hdr files dependent on whether doc and
Christian Kamm <kamm incasoftware de>
parents: 580
diff changeset
120 int doHdrGen; // enable generating header file for this module
a30fc28e8f23 Make creating and deleting of doc and hdr files dependent on whether doc and
Christian Kamm <kamm incasoftware de>
parents: 580
diff changeset
121
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
122 Module(char *arg, Identifier *ident, int doDocComment, int doHdrGen);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
123 ~Module();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
124
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
125 static Module *load(Loc loc, Array *packages, Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
126
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
127 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
128 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
129 void read(Loc loc); // read file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
130 #if IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
131 void parse(bool dump_source = false); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
132 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
133 void parse(); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
134 #endif
751
dc8b8b7ea0c1 Fix compile-time warnings. Adjust include in d-asm-i386.
Christian Kamm <kamm incasoftware de>
parents: 703
diff changeset
135 void semantic(Scope* unused_sc = NULL); // semantic analysis
dc8b8b7ea0c1 Fix compile-time warnings. Adjust include in d-asm-i386.
Christian Kamm <kamm incasoftware de>
parents: 703
diff changeset
136 void semantic2(Scope* unused_sc = NULL); // pass 2 semantic analysis
dc8b8b7ea0c1 Fix compile-time warnings. Adjust include in d-asm-i386.
Christian Kamm <kamm incasoftware de>
parents: 703
diff changeset
137 void semantic3(Scope* unused_sc = NULL); // pass 3 semantic analysis
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
138 void inlineScan(); // scan for functions to inline
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
139 #ifdef _DH
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
140 void genhdrfile(); // generate D import file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
141 #endif
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
142 // void gensymfile();
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
143 void gendocfile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
144 int needModuleInfo();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
145 Dsymbol *search(Loc loc, Identifier *ident, int flags);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
146 void deleteObjFile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
147 void addDeferredSemantic(Dsymbol *s);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
148 void runDeferredSemantic();
875
330f999ade44 Merged DMD 1.038
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 849
diff changeset
149 int imports(Module *m);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
150
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
151 // Back end
1146
1860414bf3b7 * Moved ir/irsymbol.cpp/h into ir/irdsymbol.cpp/h.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1103
diff changeset
152 #if IN_DMD
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
153 int doppelganger; // sub-module
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
154 Symbol *cov; // private uint[] __coverage;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
155 unsigned *covb; // bit array of valid code line numbers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
156
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
157 Symbol *sictor; // module order independent constructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
158 Symbol *sctor; // module constructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
159 Symbol *sdtor; // module destructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
160 Symbol *stest; // module unit test
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
161
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
162 Symbol *sfilename; // symbol for filename
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
163
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
164 Symbol *massert; // module assert function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
165 Symbol *toModuleAssert(); // get module assert function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
166
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
167 Symbol *marray; // module array bounds function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
168 Symbol *toModuleArray(); // get module array bounds function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
169
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
170
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
171 static Symbol *gencritsec();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
172 elem *toEfilename();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
173 elem *toEmodulename();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
174
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
175 Symbol *toSymbol();
1146
1860414bf3b7 * Moved ir/irsymbol.cpp/h into ir/irdsymbol.cpp/h.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1103
diff changeset
176 #endif
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
177 void genmoduleinfo();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
178
1147
dbe4af57b240 Changed use of toObjFile to a new codegen method.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1146
diff changeset
179 #if IN_LLVM
664
eef8ac26c66c Some missed LLVMDC -> LDC.
Christian Kamm <kamm incasoftware de>
parents: 604
diff changeset
180 // LDC
1147
dbe4af57b240 Changed use of toObjFile to a new codegen method.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1146
diff changeset
181 llvm::Module* genLLVMModule(Ir* sir);
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
182 void buildTargetFiles();
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1052
diff changeset
183 File* buildFilePath(const char* forcename, const char* path, const char* ext);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
184 Module *isModule() { return this; }
1147
dbe4af57b240 Changed use of toObjFile to a new codegen method.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1146
diff changeset
185
486
a34078905d01 Added pragma(llvmdc, "string") for misc per-module compiler configuration, currently "string" can only be "verbose" which forces -vv for module it appears in.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 432
diff changeset
186 bool llvmForceLogging;
703
06576ece1a1b Changed premake.lua to work with mingw.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 676
diff changeset
187
06576ece1a1b Changed premake.lua to work with mingw.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 676
diff changeset
188 // array ops emitted in this module already
06576ece1a1b Changed premake.lua to work with mingw.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 676
diff changeset
189 StringTable arrayfuncs;
1147
dbe4af57b240 Changed use of toObjFile to a new codegen method.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1146
diff changeset
190 #endif
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
191 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
192
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
193
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
194 struct ModuleDeclaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
195 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
196 Identifier *id;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
197 Array *packages; // array of Identifier's representing packages
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
198
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
199 ModuleDeclaration(Array *packages, Identifier *id);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
200
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
201 char *toChars();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
202 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
203
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
204 #endif /* DMD_MODULE_H */