annotate dmd/mars.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 9bf06e02070b
children
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
1630
44b145be2ef5 Merge dmd 1.056.
Robert Clipsham <robert@octarineparrot.com>
parents: 1621
diff changeset
3 // Copyright (c) 1999-2010 by Digital Mars
159
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
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
16 #endif
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
17
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
18 /*
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
19 It is very important to use version control macros correctly - the
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
20 idea is that host and target are independent. If these are done
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
21 correctly, cross compilers can be built.
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
22 The host compiler and host operating system are also different,
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
23 and are predefined by the host compiler. The ones used in
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
24 dmd are:
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
25
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
26 Macros defined by the compiler, not the code:
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
27
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
28 Compiler:
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
29 __DMC__ Digital Mars compiler
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
30 _MSC_VER Microsoft compiler
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
31 __GNUC__ Gnu compiler
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
32
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
33 Host operating system:
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
34 _WIN32 Microsoft NT, Windows 95, Windows 98, Win32s,
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
35 Windows 2000, Win XP, Vista
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
36 _WIN64 Windows for AMD64
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
37 linux Linux
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
38 __APPLE__ Mac OSX
1367
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1364
diff changeset
39 __FreeBSD__ FreeBSD
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1364
diff changeset
40 __sun&&__SVR4 Solaris, OpenSolaris (yes, both macros are necessary)
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
41
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
42 For the target systems, there are the target operating system and
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
43 the target object file format:
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
44
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
45 Target operating system:
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
46 TARGET_WINDOS Covers 32 bit windows and 64 bit windows
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
47 TARGET_LINUX Covers 32 and 64 bit linux
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
48 TARGET_OSX Covers 32 and 64 bit Mac OSX
1367
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1364
diff changeset
49 TARGET_FREEBSD Covers 32 and 64 bit FreeBSD
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1364
diff changeset
50 TARGET_SOLARIS Covers 32 and 64 bit Solaris
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
51 TARGET_NET Covers .Net
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
52
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
53 It is expected that the compiler for each platform will be able
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
54 to generate 32 and 64 bit code from the same compiler binary.
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
55
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
56 Target object module format:
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
57 OMFOBJ Intel Object Module Format, used on Windows
1367
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1364
diff changeset
58 ELFOBJ Elf Object Module Format, used on linux, FreeBSD and Solaris
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
59 MACHOBJ Mach-O Object Module Format, used on Mac OSX
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
60
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
61 There are currently no macros for byte endianness order.
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
62 */
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
63
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
64
1195
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1170
diff changeset
65 #include <stdio.h>
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
66 #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
67 #include <stdarg.h>
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
68 #include <stddef.h>
305
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
69 #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
70 #include <inttypes.h>
2b72433d5c8c [svn r326] Fixed a bunch of issues with printf's that MinGW32 did not support.
lindquist
parents: 277
diff changeset
71 #include <stdarg.h>
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
72
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
73 #ifdef __DMC__
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
74 #ifdef DEBUG
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
75 #undef assert
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
76 #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
77 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
78 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
79
1372
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
80 #ifndef IS_PRINTF
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
81 # ifdef __GNUC__
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
82 # define IS_PRINTF(FMTARG) __attribute((__format__ (__printf__, (FMTARG), (FMTARG)+1) ))
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
83 # else
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
84 # define IS_PRINTF(FMTARG)
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
85 # endif
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
86 #endif
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
87
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
88 #ifdef IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
89 /* Changes for the GDC compiler by David Friedman */
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
90 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
91
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 305
diff changeset
92 #define DMDV2 0 // Version 2.0 features
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
93 #define BREAKABI 1 // 0 if not ready to break the ABI just yet
1195
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1170
diff changeset
94 #define STRUCTTHISREF DMDV2 // if 'this' for struct is a reference, not a pointer
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1170
diff changeset
95 #define SNAN_DEFAULT_INIT DMDV2 // if floats are default initialized to signalling NaN
1602
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
96 #define SARRAYVALUE DMDV2 // static arrays are value types
1640
9bf06e02070b Merge DMD 1.057.
Christian Kamm <kamm incasoftware de>
parents: 1630
diff changeset
97 #define MODULEINFO_IS_STRUCT DMDV2 // if ModuleInfo is a struct rather than a class
1602
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
98
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
99 // Set if C++ mangling is done by the front end
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
100 #define CPP_MANGLE (DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS))
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
101
1367
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1364
diff changeset
102 /* Other targets are TARGET_LINUX, TARGET_OSX, TARGET_FREEBSD and
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1364
diff changeset
103 * TARGET_SOLARIS, which are
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
104 * set on the command line via the compiler makefile.
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
105 */
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
106
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
107 #if _WIN32
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
108 #define TARGET_WINDOS 1 // Windows dmd generates Windows targets
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
109 #define OMFOBJ 1
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
110 #endif
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
111
1367
8026319762be Merged DMD 1.045 !!!
Tomas Lindquist Olsen <tomas.l.olsen gmail com>
parents: 1364
diff changeset
112 #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
113 #ifndef ELFOBJ
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
114 #define ELFOBJ 1
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
115 #endif
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
116 #endif
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
117
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
118 #if TARGET_OSX
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
119 #ifndef MACHOBJ
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
120 #define MACHOBJ 1
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
121 #endif
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
122 #endif
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
123
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
124
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
125 struct Array;
1402
1311dabc6a1f Merged xfBuild patch for dependency tree generation. See #286.
Christian Kamm <kamm incasoftware de>
parents: 1372
diff changeset
126 struct OutBuffer;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
127
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 651
diff changeset
128 // LDC
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
129 enum ARCH
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
130 {
566
68d7df3f9b05 Added some sanity checks for target detection.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 550
diff changeset
131 ARCHinvalid,
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
132 ARCHx86,
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
133 ARCHx86_64,
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
134 ARCHppc,
734
6dcab994ddc3 Fold in mandel's patch for ARM from #106
Christian Kamm <kamm incasoftware de>
parents: 723
diff changeset
135 ARCHppc_64,
735
eee9efe5b51f Attempt at getting LLVM to provide a proper target data layout. Should assert now if things are borked.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 734
diff changeset
136 ARCHarm,
eee9efe5b51f Attempt at getting LLVM to provide a proper target data layout. Should assert now if things are borked.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 734
diff changeset
137 ARCHthumb
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
138 };
708
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
139 enum OUTPUTFLAG
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
140 {
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
141 OUTPUTFLAGno,
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
142 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
143 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
144 };
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
145
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
146 enum OS
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
147 {
566
68d7df3f9b05 Added some sanity checks for target detection.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 550
diff changeset
148 OSinvalid,
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
149 OSLinux,
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
150 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
151 OSMacOSX,
872
aa953cc960b6 Apply BlueZeniX's patch for OpenSolaris compatibility. Fixes #158.
Christian Kamm <kamm incasoftware de>
parents: 853
diff changeset
152 OSFreeBSD,
aa953cc960b6 Apply BlueZeniX's patch for OpenSolaris compatibility. Fixes #158.
Christian Kamm <kamm incasoftware de>
parents: 853
diff changeset
153 OSSolaris,
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
154 };
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
155
1281
29d3861aa2da Make sure this still compiles after LLVM r70437, which introduces a
Frits van Bommel <fvbommel wxs.nl>
parents: 1195
diff changeset
156 typedef unsigned char ubyte;
29d3861aa2da Make sure this still compiles after LLVM r70437, which introduces a
Frits van Bommel <fvbommel wxs.nl>
parents: 1195
diff changeset
157
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
158 // Put command line switches in here
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
159 struct Param
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
160 {
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
161 bool obj; // write object file
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
162 bool link; // perform link
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
163 bool verbose; // verbose compile
1281
29d3861aa2da Make sure this still compiles after LLVM r70437, which introduces a
Frits van Bommel <fvbommel wxs.nl>
parents: 1195
diff changeset
164 ubyte symdebug; // insert debug symbolic information
1170
e40c65bd8c5d Allow specific optimization passes to be requested from the command line.
Frits van Bommel <fvbommel wxs.nl>
parents: 1124
diff changeset
165 #if !IN_LLVM
e40c65bd8c5d Allow specific optimization passes to be requested from the command line.
Frits van Bommel <fvbommel wxs.nl>
parents: 1124
diff changeset
166 // LDC uses a different mechanism
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
167 bool optimize; // run optimizer
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
168 char optimizeLevel; // optimization level
1170
e40c65bd8c5d Allow specific optimization passes to be requested from the command line.
Frits van Bommel <fvbommel wxs.nl>
parents: 1124
diff changeset
169 #endif
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
170 char vtls; // identify thread local variables
534
7e2867ed70d9 Get rid of isLinux and isWindows in favor of global.params.os.
Christian Kamm <kamm incasoftware de>
parents: 445
diff changeset
171 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
172 OS os; // target OS
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
173 bool is64bit; // generate 64 bit code
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
174 bool isLE; // generate little endian code
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
175 bool useDeprecated; // allow use of deprecated features
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
176 bool useAssert; // generate runtime code for assert()'s
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
177 bool useInvariants; // generate class invariant checks
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
178 bool useIn; // generate precondition checks
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
179 bool useOut; // generate postcondition checks
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
180 bool useArrayBounds; // generate array bounds checks
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
181 bool useSwitchError; // check for switches without a default
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
182 bool useUnitTests; // generate unittest code
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
183 bool useInline; // inline expand functions
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
184 bool warnings; // enable warnings
1281
29d3861aa2da Make sure this still compiles after LLVM r70437, which introduces a
Frits van Bommel <fvbommel wxs.nl>
parents: 1195
diff changeset
185 ubyte Dversion; // D version number
1640
9bf06e02070b Merge DMD 1.057.
Christian Kamm <kamm incasoftware de>
parents: 1630
diff changeset
186 // 1: warnings as errors
9bf06e02070b Merge DMD 1.057.
Christian Kamm <kamm incasoftware de>
parents: 1630
diff changeset
187 // 2: informational warnings (no errors)
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
188 char safe; // enforce safe memory model
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
189
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
190 char *argv0; // program name
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
191 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
192 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
193 char *objdir; // .obj file output directory
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
194 char *objname; // .obj file output name
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
195
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
196 bool doDocComments; // process embedded documentation comments
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
197 char *docdir; // write documentation file to docdir directory
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
198 char *docname; // write documentation file to docname
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
199 Array *ddocfiles; // macro include files for Ddoc
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
200
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
201 bool doHdrGeneration; // process embedded documentation comments
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
202 char *hdrdir; // write 'header' file to docdir directory
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
203 char *hdrname; // write 'header' file to docname
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
204
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
205 char doXGeneration; // write JSON file
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
206 char *xfilename; // write JSON file to xfilename
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
207
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
208 unsigned debuglevel; // debug level
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
209 Array *debugids; // debug identifiers
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
210
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
211 unsigned versionlevel; // version level
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
212 Array *versionids; // version identifiers
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
213
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
214 bool dump_source;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
215
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
216 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
217 Array *debuglibnames; // default libraries for debug builds
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
218
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
219 char *moduleDepsFile; // filename for deps output
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
220 OutBuffer *moduleDeps; // contents to be written to deps file
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
221
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
222 // Hidden debug switches
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
223 bool debuga;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
224 bool debugb;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
225 bool debugc;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
226 bool debugf;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
227 bool debugr;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
228 bool debugw;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
229 bool debugx;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
230 bool debugy;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
231
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
232 bool run; // run resulting executable
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
233
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
234 // Linker stuff
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
235 Array *objfiles;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
236 Array *linkswitches;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
237 Array *libfiles;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
238 char *deffile;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
239 char *resfile;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
240 char *exefile;
1630
44b145be2ef5 Merge dmd 1.056.
Robert Clipsham <robert@octarineparrot.com>
parents: 1621
diff changeset
241 char *mapfile;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
242
1630
44b145be2ef5 Merge dmd 1.056.
Robert Clipsham <robert@octarineparrot.com>
parents: 1621
diff changeset
243 #if IN_LLVM
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 651
diff changeset
244 // LDC stuff
986
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
245 OUTPUTFLAG output_ll;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
246 OUTPUTFLAG output_bc;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
247 OUTPUTFLAG output_s;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
248 OUTPUTFLAG output_o;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
249 bool llvmAnnotate;
a8cb25d478c4 Use LLVM-style command line (instead of DMD-style)
Frits van Bommel <fvbommel wxs.nl>
parents: 918
diff changeset
250 bool useInlineAsm;
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: 1281
diff changeset
251 bool verbose_cg;
1482
d9c5f5a43403 Run `semantic3` on imported modules, and emit new symbols with
Frits van Bommel <fvbommel wxs.nl>
parents: 1402
diff changeset
252 bool useAvailableExternally;
699
ed9a9e6dd1cc Started changing target triple stuff, part of fixing #97
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 694
diff changeset
253
ed9a9e6dd1cc Started changing target triple stuff, part of fixing #97
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 694
diff changeset
254 // target stuff
988
2667e3a145be - Fixed LLVM style CL args for D2.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 986
diff changeset
255 const char* llvmArch;
2667e3a145be - Fixed LLVM style CL args for D2.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 986
diff changeset
256 const char *targetTriple;
2667e3a145be - Fixed LLVM style CL args for D2.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 986
diff changeset
257 const char *dataLayout;
1630
44b145be2ef5 Merge dmd 1.056.
Robert Clipsham <robert@octarineparrot.com>
parents: 1621
diff changeset
258 #endif
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
259 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
260
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
261 struct Global
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
262 {
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
263 const char *mars_ext;
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
264 const char *sym_ext;
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
265 const 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
266 #if _WIN32
fd5665da3a27 Hopefully sensible command switch handling. Changed default ext to .o on Windows.
Christian Kamm <kamm incasoftware de>
parents: 699
diff changeset
267 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
268 #endif
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
269 char *ll_ext;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
270 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
271 char *s_ext;
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
272 const char *lib_ext;
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
273 const char *doc_ext; // for Ddoc generated files
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
274 const char *ddoc_ext; // for Ddoc macro include files
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
275 const char *hdr_ext; // for D 'header' import files
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
276 const char *json_ext; // for JSON files
1630
44b145be2ef5 Merge dmd 1.056.
Robert Clipsham <robert@octarineparrot.com>
parents: 1621
diff changeset
277 const char *map_ext; // for .map files
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
278 const char *copyright;
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
279 const char *written;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
280 Array *path; // Array of char*'s which form the import lookup path
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
281 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
282 int structalign;
1103
b30fe7e1dbb9 - Updated to DMD frontend 1.041.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1064
diff changeset
283 const char *version;
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 651
diff changeset
284 char *ldc_version;
853
82ad6c0c601c Add Elrood's patch to output LDC and LLVM source revs.
Christian Kamm <kamm incasoftware de>
parents: 797
diff changeset
285 char *llvm_version;
159
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 Param params;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
288 unsigned errors; // number of errors reported so far
1640
9bf06e02070b Merge DMD 1.057.
Christian Kamm <kamm incasoftware de>
parents: 1630
diff changeset
289 unsigned warnings; // number of warnings reported so far
9bf06e02070b Merge DMD 1.057.
Christian Kamm <kamm incasoftware de>
parents: 1630
diff changeset
290 unsigned gag; // !=0 means gag reporting of errors & warnings
159
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 Global();
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
293 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
294
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
295 extern Global global;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
296
876
27a379f288bf Merged DMD 1.039
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 872
diff changeset
297 /* Set if Windows Structured Exception Handling C extensions are supported.
27a379f288bf Merged DMD 1.039
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 872
diff changeset
298 * Apparently, VC has dropped support for these?
27a379f288bf Merged DMD 1.039
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 872
diff changeset
299 */
27a379f288bf Merged DMD 1.039
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 872
diff changeset
300 #define WINDOWS_SEH (_WIN32 && __DMC__)
27a379f288bf Merged DMD 1.039
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 872
diff changeset
301
27a379f288bf Merged DMD 1.039
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 872
diff changeset
302
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
303 #ifdef __DMC__
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
304 typedef _Complex long double complex_t;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
305 #else
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
306 #ifndef IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
307 #include "complex_t.h"
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
308 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
309 #ifdef __APPLE__
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
310 //#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
311 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
312 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
313
1195
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1170
diff changeset
314 // Be careful not to care about sign when using dinteger_t
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1170
diff changeset
315 //typedef uint64_t integer_t;
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1170
diff changeset
316 typedef uint64_t dinteger_t; // use this instead of integer_t to
e961851fb8be Merged DMD 1.042.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 1170
diff changeset
317 // avoid conflicts with system #include's
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
318
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
319 // Signed and unsigned variants
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
320 typedef int64_t sinteger_t;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
321 typedef uint64_t uinteger_t;
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 typedef int8_t d_int8;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
324 typedef uint8_t d_uns8;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
325 typedef int16_t d_int16;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
326 typedef uint16_t d_uns16;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
327 typedef int32_t d_int32;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
328 typedef uint32_t d_uns32;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
329 typedef int64_t d_int64;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
330 typedef uint64_t d_uns64;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
331
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
332 typedef float d_float32;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
333 typedef double d_float64;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
334 typedef long double d_float80;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
335
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
336 typedef d_uns8 d_char;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
337 typedef d_uns16 d_wchar;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
338 typedef d_uns32 d_dchar;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
339
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
340 #ifdef IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
341 #include "d-gcc-real.h"
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
342 #else
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
343 typedef long double real_t;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
344 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
345
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
346 // Modify OutBuffer::writewchar to write the correct size of wchar
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
347 #if _WIN32
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
348 #define writewchar writeword
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
349 #else
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
350 // This needs a configuration test...
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
351 #define writewchar write4
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
352 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
353
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
354 #ifdef IN_GCC
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
355 #include "d-gcc-complex_t.h"
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
356 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
357
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
358 struct Module;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
359
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
360 //typedef unsigned Loc; // file location
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
361 struct Loc
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
362 {
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
363 const char *filename;
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
364 unsigned linnum;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
365
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
366 Loc()
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
367 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
368 linnum = 0;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
369 filename = NULL;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
370 }
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
371
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
372 Loc(int x)
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
373 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
374 linnum = x;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
375 filename = NULL;
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
376 }
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
377
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
378 Loc(Module *mod, unsigned linnum);
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
379
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
380 char *toChars() const;
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
381 bool equals(const Loc& loc);
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
382 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
383
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
384 #ifndef GCC_SAFE_DMD
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
385 #define TRUE 1
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
386 #define FALSE 0
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
387 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
388
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
389 #define INTERFACE_OFFSET 0 // if 1, put classinfo as first entry
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
390 // in interface vtbl[]'s
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
391 #define INTERFACE_VIRTUAL 0 // 1 means if an interface appears
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
392 // in the inheritance graph multiple
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
393 // times, only one is used
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
394
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
395 enum LINK
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
396 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
397 LINKdefault,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
398 LINKd,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
399 LINKc,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
400 LINKcpp,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
401 LINKwindows,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
402 LINKpascal,
723
55f6c2e454d7 Implemented correct parameter order according to x86-32 ABI documentation.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 708
diff changeset
403
1630
44b145be2ef5 Merge dmd 1.056.
Robert Clipsham <robert@octarineparrot.com>
parents: 1621
diff changeset
404 #if IN_LLVM
723
55f6c2e454d7 Implemented correct parameter order according to x86-32 ABI documentation.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 708
diff changeset
405 LINKintrinsic,
1630
44b145be2ef5 Merge dmd 1.056.
Robert Clipsham <robert@octarineparrot.com>
parents: 1621
diff changeset
406 #endif
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
407 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
408
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
409 enum DYNCAST
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
410 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
411 DYNCAST_OBJECT,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
412 DYNCAST_EXPRESSION,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
413 DYNCAST_DSYMBOL,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
414 DYNCAST_TYPE,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
415 DYNCAST_IDENTIFIER,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
416 DYNCAST_TUPLE,
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
417 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
418
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
419 enum MATCH
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
420 {
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
421 MATCHnomatch, // no match
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
422 MATCHconvert, // match with conversions
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 305
diff changeset
423 #if DMDV2
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
424 MATCHconst, // match with conversion to const
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
425 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
426 MATCHexact // exact match
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
427 };
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
428
1621
fb2e6707ad17 Merge DMD r314+r315: bugzilla 2029 Typesafe variadic functions don't...
Leandro Lucarella <llucax@gmail.com>
parents: 1602
diff changeset
429 typedef uint64_t StorageClass;
1602
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
430
a413ae7329bf Merge DMD r243: some harmonization with D2 dmd
Leandro Lucarella <llucax@gmail.com>
parents: 1587
diff changeset
431
1372
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
432 void warning(Loc loc, const char *format, ...) IS_PRINTF(2);
229e02867307 Fix format-string bugs by adding __attribute__((__format__)) in all applicable
Frits van Bommel <fvbommel wxs.nl>
parents: 1367
diff changeset
433 void error(Loc loc, const char *format, ...) IS_PRINTF(2);
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
434 void verror(Loc loc, const char *format, va_list);
1640
9bf06e02070b Merge DMD 1.057.
Christian Kamm <kamm incasoftware de>
parents: 1630
diff changeset
435 void vwarning(Loc loc, const char *format, va_list);
1586
7f728c52e63c Fix several 'reaches end of function' warnings by making fatal noreturn.
Christian Kamm <kamm incasoftware de>
parents: 1482
diff changeset
436 #ifdef __GNUC__
7f728c52e63c Fix several 'reaches end of function' warnings by making fatal noreturn.
Christian Kamm <kamm incasoftware de>
parents: 1482
diff changeset
437 __attribute__((noreturn))
7f728c52e63c Fix several 'reaches end of function' warnings by making fatal noreturn.
Christian Kamm <kamm incasoftware de>
parents: 1482
diff changeset
438 #endif
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
439 void fatal();
1586
7f728c52e63c Fix several 'reaches end of function' warnings by making fatal noreturn.
Christian Kamm <kamm incasoftware de>
parents: 1482
diff changeset
440
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
441 void err_nomem();
988
2667e3a145be - Fixed LLVM style CL args for D2.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 986
diff changeset
442 void inifile(char *argv0, const char *inifile);
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
443 void halt();
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
444
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
445 /*** Where to send error messages ***/
797
340acf1535d0 Removed KDevelop3 project files, CMake can generate them just fine!
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 735
diff changeset
446 #if IN_GCC || IN_LLVM
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
447 #define stdmsg stderr
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
448 #else
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1586
diff changeset
449 #define stdmsg stderr
159
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
450 #endif
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
451
5acec6b2eef8 [svn r175] merged dmd 1.029
ChristianK
parents: 133
diff changeset
452 #endif /* DMD_MARS_H */