annotate dmd/module.h @ 1052:12ea38902e83

Add '-singleobj' command line switch that will tell LDC to link LLVM modules internally and only emit a single object file. The switch allows the optimizer and inliner to run on all modules at once and opens the door for template instantiation improvements that should lower compile time and executable size.
author Christian Kamm <kamm incasoftware de>
date Sat, 07 Mar 2009 19:38:00 +0100
parents 31bbc7f3b817
children b30fe7e1dbb9
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
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
31 struct DValue;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
32 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
33 namespace llvm { class Module; }
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
34 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
35 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
36 union tree_node; typedef union tree_node elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
37 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
38 struct elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
39 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
40 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
41
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
42 struct Package : ScopeDsymbol
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 Package(Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
45 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
46
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
47 static DsymbolTable *resolve(Array *packages, Dsymbol **pparent, Package **ppkg);
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 Package *isPackage() { return this; }
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 virtual void semantic(Scope *sc) { }
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
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
54 struct Module : Package
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 static Module *rootModule;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
57 static DsymbolTable *modules; // symbol table of all modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
58 static Array amodules; // array of all modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
59 static Array deferred; // deferred Dsymbol's needing semantic() run on them
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
60 static unsigned dprogress; // progress resolving the deferred list
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
61 static void init();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
62
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
63 static ClassDeclaration *moduleinfo;
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
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
66 const char *arg; // original argument name
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
67 ModuleDeclaration *md; // if !NULL, the contents of the ModuleDeclaration declaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
68 File *srcfile; // input source file
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
69
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
70 File *objfile; // output object file
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
71 File *docfile; // output doc file
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
72 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
73
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
74 unsigned errors; // if any errors in file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
75 unsigned numlines; // number of lines in source file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
76 int isHtml; // if it is an HTML file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
77 int isDocFile; // if it is a documentation input file, not D source
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
78 int needmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
79 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
80 int strictlyneedmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
81 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
82
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
83 int insearch;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
84 Identifier *searchCacheIdent;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
85 Dsymbol *searchCacheSymbol; // cached value of search
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
86 int searchCacheFlags; // cached flags
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
87
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
88 int semanticstarted; // has semantic() been started?
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
89 int semanticdone; // has semantic() been done?
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
90 int root; // != 0 if this is a 'root' module,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
91 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
92 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
93 Module *importedFrom; // module from command line we're imported from,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
94 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
95 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
96
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
97 Array *decldefs; // top level declarations for this Module
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
98
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
99 Array aimports; // all imported modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
100
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
101 ModuleInfoDeclaration *vmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
102
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
103 unsigned debuglevel; // debug level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
104 Array *debugids; // debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
105 Array *debugidsNot; // forward referenced debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
106
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
107 unsigned versionlevel; // version level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
108 Array *versionids; // version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
109 Array *versionidsNot; // forward referenced version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
110
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
111 Macro *macrotable; // document comment macros
432
ecf70fe065b9 fixed configuration file loading issues on windows
elrood
parents: 336
diff changeset
112 struct Escape *escapetable; // document comment escapes
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
113
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
114 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
115 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
116
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
117 Module(char *arg, Identifier *ident, int doDocComment, int doHdrGen);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
118 ~Module();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
119
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
120 static Module *load(Loc loc, Array *packages, Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
121
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
122 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
123 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
124 void read(Loc loc); // read file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
125 #if IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
126 void parse(bool dump_source = false); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
127 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
128 void parse(); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
129 #endif
751
dc8b8b7ea0c1 Fix compile-time warnings. Adjust include in d-asm-i386.
Christian Kamm <kamm incasoftware de>
parents: 703
diff changeset
130 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
131 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
132 void semantic3(Scope* unused_sc = NULL); // pass 3 semantic analysis
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
133 void inlineScan(); // scan for functions to inline
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
134 #ifdef _DH
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
135 void genhdrfile(); // generate D import file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
136 #endif
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
137 // void gensymfile();
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
138 void gendocfile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
139 int needModuleInfo();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
140 Dsymbol *search(Loc loc, Identifier *ident, int flags);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
141 void deleteObjFile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
142 void addDeferredSemantic(Dsymbol *s);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
143 void runDeferredSemantic();
875
330f999ade44 Merged DMD 1.038
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 849
diff changeset
144 int imports(Module *m);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
145
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
146 // Back end
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
147
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
148 int doppelganger; // sub-module
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
149 Symbol *cov; // private uint[] __coverage;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
150 unsigned *covb; // bit array of valid code line numbers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
151
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
152 Symbol *sictor; // module order independent constructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
153 Symbol *sctor; // module constructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
154 Symbol *sdtor; // module destructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
155 Symbol *stest; // module unit test
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 *sfilename; // symbol for filename
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
158
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
159 Symbol *massert; // module assert function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
160 Symbol *toModuleAssert(); // get module assert function
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 *marray; // module array bounds function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
163 Symbol *toModuleArray(); // get module array bounds function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
164
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
165
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
166 static Symbol *gencritsec();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
167 elem *toEfilename();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
168 elem *toEmodulename();
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 Symbol *toSymbol();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
171 void genmoduleinfo();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
172
664
eef8ac26c66c Some missed LLVMDC -> LDC.
Christian Kamm <kamm incasoftware de>
parents: 604
diff changeset
173 // LDC
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
174 llvm::Module* genLLVMModule(int multiobj);
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
175 void buildTargetFiles();
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
176 File* buildFilePath(char* forcename, char* path, char* ext);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
177 Module *isModule() { return this; }
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
178
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
179 bool llvmForceLogging;
703
06576ece1a1b Changed premake.lua to work with mingw.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 676
diff changeset
180
06576ece1a1b Changed premake.lua to work with mingw.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 676
diff changeset
181 // 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
182 StringTable arrayfuncs;
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
183 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
184
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
185
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
186 struct ModuleDeclaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
187 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
188 Identifier *id;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
189 Array *packages; // array of Identifier's representing packages
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
190
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
191 ModuleDeclaration(Array *packages, Identifier *id);
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 char *toChars();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
194 };
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 #endif /* DMD_MODULE_H */