annotate dmd/module.h @ 1650:40bd4a0d4870

Update to work with LLVM 2.7. Removed use of dyn_cast, llvm no compiles without exceptions and rtti by default. We do need exceptions for the libconfig stuff, but rtti isn't necessary (anymore). Debug info needs to be rewritten, as in LLVM 2.7 the format has completely changed. To have something to look at while rewriting, the old code has been wrapped inside #ifndef DISABLE_DEBUG_INFO , this means that you have to define this to compile at the moment. Updated tango 0.99.9 patch to include updated EH runtime code, which is needed for LLVM 2.7 as well.
author Tomas Lindquist Olsen
date Wed, 19 May 2010 12:42:32 +0200
parents 1d2d1aa16841
children
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
1364
46f6365a50d7 Added IrTypeFunction and IrTypeDelegate and eliminated IrDType. This means the Type::ir field can be removed. It's the final part needed for the move to a slightly more sane type system. Now the whole thing just needs to be cleaned up :P
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1147
diff changeset
31 class 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;
1535
61f12f4651b5 Don't use llvm::getGlobalContext() anymore
Benjamin Kramer <benny.kra@gmail.com>
parents: 1364
diff changeset
34 namespace llvm {
61f12f4651b5 Don't use llvm::getGlobalContext() anymore
Benjamin Kramer <benny.kra@gmail.com>
parents: 1364
diff changeset
35 class LLVMContext;
61f12f4651b5 Don't use llvm::getGlobalContext() anymore
Benjamin Kramer <benny.kra@gmail.com>
parents: 1364
diff changeset
36 class Module;
61f12f4651b5 Don't use llvm::getGlobalContext() anymore
Benjamin Kramer <benny.kra@gmail.com>
parents: 1364
diff changeset
37 }
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
38 #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
39
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
40 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
41 union tree_node; typedef union tree_node elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
42 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
43 struct elem;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
44 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
45 #endif
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 struct Package : ScopeDsymbol
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(Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
50 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
51
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
52 static DsymbolTable *resolve(Array *packages, Dsymbol **pparent, Package **ppkg);
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 Package *isPackage() { return this; }
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 virtual void semantic(Scope *sc) { }
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
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
59 struct Module : Package
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
60 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
61 static Module *rootModule;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
62 static DsymbolTable *modules; // symbol table of all modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
63 static Array amodules; // array of all modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
64 static Array deferred; // deferred Dsymbol's needing semantic() run on them
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
65 static unsigned dprogress; // progress resolving the deferred list
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
66 static void init();
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 static ClassDeclaration *moduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
69
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
70
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
71 const char *arg; // original argument name
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
72 ModuleDeclaration *md; // if !NULL, the contents of the ModuleDeclaration declaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
73 File *srcfile; // input source file
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
74
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
75 File *objfile; // output object file
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
76 File *docfile; // output doc file
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
77 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
78
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
79 unsigned errors; // if any errors in file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
80 unsigned numlines; // number of lines in source file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
81 int isHtml; // if it is an HTML file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
82 int isDocFile; // if it is a documentation input file, not D source
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
83 int needmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
84 #ifdef IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
85 int strictlyneedmoduleinfo;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
86 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
87
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1052
diff changeset
88 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
89 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
90
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
91 int insearch;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
92 Identifier *searchCacheIdent;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
93 Dsymbol *searchCacheSymbol; // cached value of search
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
94 int searchCacheFlags; // cached flags
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
95
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
96 int semanticstarted; // has semantic() been started?
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
97 int semanticRun; // has semantic() been done?
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
98 int root; // != 0 if this is a 'root' module,
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 Module *importedFrom; // module from command line we're imported from,
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
102 // i.e. a module that will be taken all the
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
103 // way to an object file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
104
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
105 Array *decldefs; // top level declarations for this Module
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 Array aimports; // all imported modules
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
108
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
109 ModuleInfoDeclaration *vmoduleinfo;
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 unsigned debuglevel; // debug level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
112 Array *debugids; // debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
113 Array *debugidsNot; // forward referenced debug identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
114
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
115 unsigned versionlevel; // version level
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
116 Array *versionids; // version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
117 Array *versionidsNot; // forward referenced version identifiers
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
118
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
119 Macro *macrotable; // document comment macros
432
ecf70fe065b9 fixed configuration file loading issues on windows
elrood
parents: 336
diff changeset
120 struct Escape *escapetable; // document comment escapes
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
121
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
122 int doDocComment; // enable generating doc comments for this module
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
123 int doHdrGen; // enable generating header file for this module
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
124
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
125 bool safe; // TRUE if module is marked as 'safe'
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
126
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
127 Module(char *arg, Identifier *ident, int doDocComment, int doHdrGen);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
128 ~Module();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
129
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
130 static Module *load(Loc loc, Array *packages, Identifier *ident);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
131
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
132 void toCBuffer(OutBuffer *buf, HdrGenState *hgs);
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
133 void toJsonBuffer(OutBuffer *buf);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
134 const char *kind();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
135 void read(Loc loc); // read file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
136 #if IN_GCC
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
137 void parse(bool dump_source = false); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
138 #else
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
139 void parse(); // syntactic parse
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
140 #endif
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
141 void importAll(Scope *sc);
751
dc8b8b7ea0c1 Fix compile-time warnings. Adjust include in d-asm-i386.
Christian Kamm <kamm incasoftware de>
parents: 703
diff changeset
142 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
143 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
144 void semantic3(Scope* unused_sc = NULL); // pass 3 semantic analysis
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
145 void inlineScan(); // scan for functions to inline
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
146 #ifdef _DH
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
147 void genhdrfile(); // generate D import file
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
148 #endif
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 486
diff changeset
149 // void gensymfile();
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
150 void gendocfile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
151 int needModuleInfo();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
152 Dsymbol *search(Loc loc, Identifier *ident, int flags);
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
153 Dsymbol *symtabInsert(Dsymbol *s);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
154 void deleteObjFile();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
155 void addDeferredSemantic(Dsymbol *s);
1630
44b145be2ef5 Merge dmd 1.056.
Robert Clipsham <robert@octarineparrot.com>
parents: 1587
diff changeset
156 static void runDeferredSemantic();
1640
9bf06e02070b Merge DMD 1.057.
Christian Kamm <kamm incasoftware de>
parents: 1630
diff changeset
157 static void clearCache();
875
330f999ade44 Merged DMD 1.038
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 849
diff changeset
158 int imports(Module *m);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
159
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
160 // 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
161 #if IN_DMD
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
162 int doppelganger; // sub-module
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
163 Symbol *cov; // private uint[] __coverage;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
164 unsigned *covb; // bit array of valid code line numbers
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 Symbol *sictor; // module order independent constructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
167 Symbol *sctor; // module constructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
168 Symbol *sdtor; // module destructor
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
169 Symbol *stest; // module unit test
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 Symbol *sfilename; // symbol for filename
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
172
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
173 Symbol *massert; // module assert function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
174 Symbol *toModuleAssert(); // get module assert function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
175
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
176 Symbol *marray; // module array bounds function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
177 Symbol *toModuleArray(); // get module array bounds function
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
178
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
179
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
180 static Symbol *gencritsec();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
181 elem *toEfilename();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
182 elem *toEmodulename();
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 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
185 #endif
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
186 void genmoduleinfo();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
187
1147
dbe4af57b240 Changed use of toObjFile to a new codegen method.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1146
diff changeset
188 #if IN_LLVM
664
eef8ac26c66c Some missed LLVMDC -> LDC.
Christian Kamm <kamm incasoftware de>
parents: 604
diff changeset
189 // LDC
1535
61f12f4651b5 Don't use llvm::getGlobalContext() anymore
Benjamin Kramer <benny.kra@gmail.com>
parents: 1364
diff changeset
190 llvm::Module* genLLVMModule(llvm::LLVMContext& context, Ir* sir);
1645
1d2d1aa16841 Don't error out with -singleobj, -of, and -c/-output-{bc,ll,o,s}.
Matti Niemenmaa <matti.niemenmaa+hg@iki.fi>
parents: 1640
diff changeset
191 void buildTargetFiles(bool singleObj);
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1052
diff changeset
192 File* buildFilePath(const char* forcename, const char* path, const char* ext);
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
193 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
194
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
195 bool llvmForceLogging;
703
06576ece1a1b Changed premake.lua to work with mingw.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 676
diff changeset
196
06576ece1a1b Changed premake.lua to work with mingw.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 676
diff changeset
197 // 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
198 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
199 #endif
336
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
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 struct ModuleDeclaration
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
204 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
205 Identifier *id;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
206 Array *packages; // array of Identifier's representing packages
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1535
diff changeset
207 bool safe;
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
208
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
209 ModuleDeclaration(Array *packages, Identifier *id);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
210
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
211 char *toChars();
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
212 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
213
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 156
diff changeset
214 #endif /* DMD_MODULE_H */