annotate dmd/mars.h @ 715:30b42a283c8e

Removed TypeOpaque from DMD. Changed runtime functions taking opaque[] to void[]. Implemented proper type painting, to avoid "resizing" array casts in runtime calls that previously took opaque[]. Implemented dynamic arrays as first class types, this implements proper ABI for these types on x86. Added dwarf region end after call to assert function, fixes some problems with llvm not allowing this to be missing. Reverted change to WithStatement from rev [704] it breaks MiniD, mini/with2.d needs to be fixed some other way... Fixed tango bug 1339 in runtime, problem with _adReverseChar on invalid UTF-8. Disabled .bc generation in the compiler runtime part, genobj.d triggers some llvm bug when using debug info. the .o seems to work fine.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Wed, 22 Oct 2008 14:55:33 +0200
parents fd5665da3a27
children 55f6c2e454d7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
1
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
2 // Compiler implementation of the D programming language
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
3 // Copyright (c) 1999-2007 by Digital Mars
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
4 // All Rights Reserved
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
5 // written by Walter Bright
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
6 // http://www.digitalmars.com
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
7 // License for redistribution is by either the Artistic License
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
8 // in artistic.txt, or the GNU General Public License in gnu.txt.
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
9 // See the included readme.txt for details.
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
10
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
11 #ifndef DMD_MARS_H
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
12 #define DMD_MARS_H
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
13
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
14 #ifdef __DMC__
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
15 #pragma once
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
16 #endif /* __DMC__ */
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
17
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
18 #include <stdint.h>
305
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
19 #include <stdarg.h>
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
20 #define __STDC_FORMAT_MACROS 1
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
21 #include <inttypes.h>
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
22 #include <stdarg.h>
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
23
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
24 #ifdef __DMC__
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
25 #ifdef DEBUG
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
26 #undef assert
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
27 #define assert(e) (static_cast<void>((e) || (printf("assert %s(%d) %s\n", __FILE__, __LINE__, #e), halt())))
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
28 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
29 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
30
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
31 #ifdef IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
32 /* Changes for the GDC compiler by David Friedman */
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
33 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
34
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 305
diff changeset
35 #define DMDV2 0 // Version 2.0 features
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
36 #define BREAKABI 1 // 0 if not ready to break the ABI just yet
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
37
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
38 struct Array;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
39
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 651
diff changeset
40 // LDC
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
41 enum ARCH
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
42 {
566
68d7df3f9b05 Added some sanity checks for target detection.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 550
diff changeset
43 ARCHinvalid,
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
44 ARCHx86,
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
45 ARCHx86_64,
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
46 ARCHppc,
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
47 ARCHppc_64
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
48 };
708
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
49 enum OUTPUTFLAG
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
50 {
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
51 OUTPUTFLAGno,
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
52 OUTPUTFLAGdefault, // for the .o default
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
53 OUTPUTFLAGset // for -output
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
54 };
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
55
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
56 enum OS
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
57 {
566
68d7df3f9b05 Added some sanity checks for target detection.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 550
diff changeset
58 OSinvalid,
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
59 OSLinux,
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
60 OSWindows,
637
29dc68c949b0 Applied the FreeBSD patch from Ralith, closes ticket #95 , slightly changed but basically the same. Thanx Ralith :)
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 580
diff changeset
61 OSMacOSX,
29dc68c949b0 Applied the FreeBSD patch from Ralith, closes ticket #95 , slightly changed but basically the same. Thanx Ralith :)
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 580
diff changeset
62 OSFreeBSD
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
63 };
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
64
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
65 // Put command line switches in here
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
66 struct Param
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
67 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
68 char obj; // write object file
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
69 char link; // perform link
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
70 char quiet; // suppress non-error messages
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
71 char verbose; // verbose compile
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
72 char symdebug; // insert debug symbolic information
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
73 char optimize; // run optimizer
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
74 char optimizeLevel; // optimization level
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
75 ARCH cpu; // target CPU
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
76 OS os; // target OS
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
77 char is64bit; // generate 64 bit code
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
78 char isLE; // generate little endian code
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
79 char scheduler; // which scheduler to use
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
80 char useDeprecated; // allow use of deprecated features
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
81 char useAssert; // generate runtime code for assert()'s
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
82 char useInvariants; // generate class invariant checks
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
83 char useIn; // generate precondition checks
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
84 char useOut; // generate postcondition checks
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
85 char useArrayBounds; // generate array bounds checks
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
86 char useSwitchError; // check for switches without a default
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
87 char useUnitTests; // generate unittest code
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
88 char useInline; // inline expand functions
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
89 char preservePaths; // !=0 means don't strip path from source file
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
90 char warnings; // enable warnings
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
91 char pic; // generate position-independent-code for shared libs
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
92 char noruntime; // code is not allowed to make implicit calls to the runtime
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
93 char novalidate;// no bitcode validation
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
94 char Dversion; // D version number
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
95 char ignoreUnsupportedPragmas; // rather than error on them
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
96
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
97 char *argv0; // program name
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
98 Array *imppath; // array of char*'s of where to look for import modules
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
99 Array *fileImppath; // array of char*'s of where to look for file import modules
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
100 char *runtimeImppath; // char* of where to look for the core runtime
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
101 char *objdir; // .obj file output directory
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
102 char *objname; // .obj file output name
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
103
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
104 char doDocComments; // process embedded documentation comments
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
105 char *docdir; // write documentation file to docdir directory
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
106 char *docname; // write documentation file to docname
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
107 Array *ddocfiles; // macro include files for Ddoc
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
108
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
109 char doHdrGeneration; // process embedded documentation comments
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
110 char *hdrdir; // write 'header' file to docdir directory
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
111 char *hdrname; // write 'header' file to docname
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
112
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
113 unsigned debuglevel; // debug level
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
114 Array *debugids; // debug identifiers
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
115
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
116 unsigned versionlevel; // version level
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
117 Array *versionids; // version identifiers
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
118
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
119 bool dump_source;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
120
567
aaba4f7c6d8a Get rid of runtime path. Allow defaultlib and debuglib switches to be given multiple times.
Christian Kamm <kamm incasoftware de>
parents: 550
diff changeset
121 Array *defaultlibnames; // default libraries for non-debug builds
aaba4f7c6d8a Get rid of runtime path. Allow defaultlib and debuglib switches to be given multiple times.
Christian Kamm <kamm incasoftware de>
parents: 550
diff changeset
122 Array *debuglibnames; // default libraries for debug builds
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
123
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
124 char *xmlname; // filename for XML output
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
125
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
126 // Hidden debug switches
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
127 char debuga;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
128 char debugb;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
129 char debugc;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
130 char debugf;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
131 char debugr;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
132 char debugw;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
133 char debugx;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
134 char debugy;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
135
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
136 char run; // run resulting executable
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
137 size_t runargs_length;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
138 char** runargs; // arguments for executable
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
139
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
140 // Linker stuff
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
141 Array *objfiles;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
142 Array *linkswitches;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
143 Array *libfiles;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
144 char *deffile;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
145 char *resfile;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
146 char *exefile;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
147
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 651
diff changeset
148 // LDC stuff
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
149 char *llvmArch;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
150 char forceBE;
675
bfe5229f9d8e Disable bc output by default. Remove -dis. Add -output-bc, -output-ll, -output-s.
Christian Kamm <kamm incasoftware de>
parents: 663
diff changeset
151 char output_ll;
bfe5229f9d8e Disable bc output by default. Remove -dis. Add -output-bc, -output-ll, -output-s.
Christian Kamm <kamm incasoftware de>
parents: 663
diff changeset
152 char output_bc;
bfe5229f9d8e Disable bc output by default. Remove -dis. Add -output-bc, -output-ll, -output-s.
Christian Kamm <kamm incasoftware de>
parents: 663
diff changeset
153 char output_s;
694
931333ea35c6 Allow output of only bc, ll, or s by making -of set the output type depending
Christian Kamm <kamm incasoftware de>
parents: 675
diff changeset
154 char output_o;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
155 char llvmInline;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
156 char llvmAnnotate;
220
ccc2e6898a78 [svn r236] added initial codegen of inline asm, pretty buggy and incomplete still. see the tangotests/asm1.d test for a sample of what does
lindquist
parents: 217
diff changeset
157 char useInlineAsm;
580
7824c21a58e3 Restructure path handling a bit. Fixes #66.
Christian Kamm <kamm incasoftware de>
parents: 568
diff changeset
158 char fqnNames; // use fully qualified object names
651
5709381df7e8 Added -nodefaultlib switch do disable implicitly linked standard lib modules
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 637
diff changeset
159 char noDefaultLib;
699
ed9a9e6dd1cc Started changing target triple stuff, part of fixing #97
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 694
diff changeset
160
ed9a9e6dd1cc Started changing target triple stuff, part of fixing #97
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 694
diff changeset
161 // target stuff
ed9a9e6dd1cc Started changing target triple stuff, part of fixing #97
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 694
diff changeset
162 char *targetTriple;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
163 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
164
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
165 struct Global
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
166 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
167 char *mars_ext;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
168 char *sym_ext;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
169 char *obj_ext;
708
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
170 #if _WIN32
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
171 char *obj_ext_alt;
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
172 #endif
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
173 char *ll_ext;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
174 char *bc_ext;
675
bfe5229f9d8e Disable bc output by default. Remove -dis. Add -output-bc, -output-ll, -output-s.
Christian Kamm <kamm incasoftware de>
parents: 663
diff changeset
175 char *s_ext;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
176 char *doc_ext; // for Ddoc generated files
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
177 char *ddoc_ext; // for Ddoc macro include files
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
178 char *hdr_ext; // for D 'header' import files
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
179 char *copyright;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
180 char *written;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
181 Array *path; // Array of char*'s which form the import lookup path
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
182 Array *filePath; // Array of char*'s which form the file import lookup path
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
183 int structalign;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
184 char *version;
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 651
diff changeset
185 char *ldc_version;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
186
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
187 Param params;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
188 unsigned errors; // number of errors reported so far
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
189 unsigned gag; // !=0 means gag reporting of errors
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
190
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
191 Global();
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
192 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
193
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
194 extern Global global;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
195
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
196 #if __GNUC__
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
197 //#define memicmp strncasecmp
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
198 //#define stricmp strcasecmp
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
199 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
200
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
201 #ifdef __DMC__
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
202 typedef _Complex long double complex_t;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
203 #else
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
204 #ifndef IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
205 #include "complex_t.h"
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
206 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
207 #ifdef __APPLE__
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
208 //#include "complex.h"//This causes problems with include the c++ <complex> and not the C "complex.h"
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
209 #define integer_t dmd_integer_t
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
210 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
211 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
212
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
213 // Be careful not to care about sign when using integer_t
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
214 typedef uint64_t integer_t;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
215
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
216 // Signed and unsigned variants
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
217 typedef int64_t sinteger_t;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
218 typedef uint64_t uinteger_t;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
219
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
220 typedef int8_t d_int8;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
221 typedef uint8_t d_uns8;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
222 typedef int16_t d_int16;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
223 typedef uint16_t d_uns16;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
224 typedef int32_t d_int32;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
225 typedef uint32_t d_uns32;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
226 typedef int64_t d_int64;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
227 typedef uint64_t d_uns64;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
228
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
229 typedef float d_float32;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
230 typedef double d_float64;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
231 typedef long double d_float80;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
232
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
233 typedef d_uns8 d_char;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
234 typedef d_uns16 d_wchar;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
235 typedef d_uns32 d_dchar;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
236
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
237 #ifdef IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
238 #include "d-gcc-real.h"
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
239 #else
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
240 typedef long double real_t;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
241 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
242
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
243 // Modify OutBuffer::writewchar to write the correct size of wchar
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
244 #if _WIN32
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
245 #define writewchar writeword
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
246 #else
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
247 // This needs a configuration test...
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
248 #define writewchar write4
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
249 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
250
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
251 #ifdef IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
252 #include "d-gcc-complex_t.h"
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
253 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
254
305
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
255 // taken from GDC
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
256 // for handling printf incompatibilities
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
257 #if __MSVCRT__
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
258 #define PRIuSIZE "Iu"
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
259 #define PRIxSIZE "Ix"
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
260 #elif __MINGW32__
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
261 #define PRIuSIZE "u"
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
262 #define PRIxSIZE "x"
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
263 #else
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
264 #define PRIuSIZE "zu"
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
265 #define PRIxSIZE "zx"
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
266 #endif
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
267
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
268 struct Module;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
269
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
270 //typedef unsigned Loc; // file location
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
271 struct Loc
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
272 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
273 char *filename;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
274 unsigned linnum;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
275
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
276 Loc()
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
277 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
278 linnum = 0;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
279 filename = NULL;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
280 }
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
281
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
282 Loc(int x)
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
283 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
284 linnum = x;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
285 filename = NULL;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
286 }
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
287
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
288 Loc(Module *mod, unsigned linnum);
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
289
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
290 char *toChars() const;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
291 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
292
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
293 #ifndef GCC_SAFE_DMD
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
294 #define TRUE 1
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
295 #define FALSE 0
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
296 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
297
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
298 #define INTERFACE_OFFSET 0 // if 1, put classinfo as first entry
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
299 // in interface vtbl[]'s
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
300 #define INTERFACE_VIRTUAL 0 // 1 means if an interface appears
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
301 // in the inheritance graph multiple
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
302 // times, only one is used
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
303
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
304 enum LINK
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
305 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
306 LINKdefault,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
307 LINKd,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
308 LINKc,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
309 LINKcpp,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
310 LINKwindows,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
311 LINKpascal,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
312 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
313
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
314 enum DYNCAST
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
315 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
316 DYNCAST_OBJECT,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
317 DYNCAST_EXPRESSION,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
318 DYNCAST_DSYMBOL,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
319 DYNCAST_TYPE,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
320 DYNCAST_IDENTIFIER,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
321 DYNCAST_TUPLE,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
322 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
323
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
324 enum MATCH
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
325 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
326 MATCHnomatch, // no match
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
327 MATCHconvert, // match with conversions
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 305
diff changeset
328 #if DMDV2
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
329 MATCHconst, // match with conversion to const
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
330 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
331 MATCHexact // exact match
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
332 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
333
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
334 void error(Loc loc, const char *format, ...);
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
335 void verror(Loc loc, const char *format, va_list);
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
336 void fatal();
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
337 void err_nomem();
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
338 void inifile(char *argv0, char *inifile);
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
339 void halt();
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
340
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
341 /*** Where to send error messages ***/
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
342 #if IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
343 #define stdmsg stderr
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
344 #else
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
345 #define stdmsg stdout
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
346 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
347
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
348 #endif /* DMD_MARS_H */