annotate dmd/idgen.c @ 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 def7a1d494fd
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
1
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
2 // Compiler implementation of the D programming language
658
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
3 // Copyright (c) 1999-2008 by Digital Mars
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
4 // All Rights Reserved
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
5 // written by Walter Bright
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
6 // http://www.digitalmars.com
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
7 // License for redistribution is by either the Artistic License
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
8 // in artistic.txt, or the GNU General Public License in gnu.txt.
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
9 // See the included readme.txt for details.
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
10
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
11 // Program to generate string files in d data structures.
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
12 // Saves much tedious typing, and eliminates typo problems.
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
13 // Generates:
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
14 // id.h
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
15 // id.c
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
16
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
17 #include <stdio.h>
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
18 #include <stdlib.h>
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
19 #include <string.h>
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
20 #include <stdarg.h>
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
21 #include <assert.h>
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
22
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
23 struct Msgtable
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
24 {
658
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
25 const char *ident; // name to use in DMD source
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
26 const char *name; // name in D executable
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
27 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
28
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
29 Msgtable msgtable[] =
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
30 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
31 { "IUnknown" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
32 { "Object" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
33 { "object" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
34 { "max" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
35 { "min" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
36 { "This", "this" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
37 { "ctor", "_ctor" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
38 { "dtor", "_dtor" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
39 { "classInvariant", "__invariant" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
40 { "unitTest", "_unitTest" },
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1152
diff changeset
41 { "require", "__require" },
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1152
diff changeset
42 { "ensure", "__ensure" },
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
43 { "init" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
44 { "size" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
45 { "__sizeof", "sizeof" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
46 { "alignof" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
47 { "mangleof" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
48 { "stringof" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
49 { "tupleof" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
50 { "length" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
51 { "remove" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
52 { "ptr" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
53 { "funcptr" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
54 { "dollar", "__dollar" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
55 { "offset" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
56 { "offsetof" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
57 { "ModuleInfo" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
58 { "ClassInfo" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
59 { "classinfo" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
60 { "typeinfo" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
61 { "outer" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
62 { "Exception" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
63 { "withSym", "__withSym" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
64 { "result", "__result" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
65 { "returnLabel", "__returnLabel" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
66 { "delegate" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
67 { "line" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
68 { "empty", "" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
69 { "p" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
70 { "coverage", "__coverage" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
71 { "__vptr" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
72 { "__monitor" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
73
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
74 { "TypeInfo" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
75 { "TypeInfo_Class" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
76 { "TypeInfo_Interface" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
77 { "TypeInfo_Struct" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
78 { "TypeInfo_Enum" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
79 { "TypeInfo_Typedef" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
80 { "TypeInfo_Pointer" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
81 { "TypeInfo_Array" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
82 { "TypeInfo_StaticArray" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
83 { "TypeInfo_AssociativeArray" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
84 { "TypeInfo_Function" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
85 { "TypeInfo_Delegate" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
86 { "TypeInfo_Tuple" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
87 { "TypeInfo_Const" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
88 { "TypeInfo_Invariant" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
89 { "elements" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
90 { "_arguments_typeinfo" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
91 { "_arguments" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
92 { "_argptr" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
93 { "_match" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
94
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
95 { "LINE", "__LINE__" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
96 { "FILE", "__FILE__" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
97 { "DATE", "__DATE__" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
98 { "TIME", "__TIME__" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
99 { "TIMESTAMP", "__TIMESTAMP__" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
100 { "VENDOR", "__VENDOR__" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
101 { "VERSIONX", "__VERSION__" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
102
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
103 { "nan" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
104 { "infinity" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
105 { "dig" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
106 { "epsilon" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
107 { "mant_dig" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
108 { "max_10_exp" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
109 { "max_exp" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
110 { "min_10_exp" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
111 { "min_exp" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
112 { "re" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
113 { "im" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
114
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
115 { "C" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
116 { "D" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
117 { "Windows" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
118 { "Pascal" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
119 { "System" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
120
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
121 { "exit" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
122 { "success" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
123 { "failure" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
124
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
125 { "keys" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
126 { "values" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
127 { "rehash" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
128
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
129 { "sort" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
130 { "reverse" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
131 { "dup" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
132 { "idup" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
133
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
134 // For inline assembler
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
135 { "___out", "out" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
136 { "___in", "in" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
137 { "__int", "int" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
138 { "__dollar", "$" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
139 { "__LOCAL_SIZE" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
140
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
141 // For operator overloads
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
142 { "uadd", "opPos" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
143 { "neg", "opNeg" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
144 { "com", "opCom" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
145 { "add", "opAdd" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
146 { "add_r", "opAdd_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
147 { "sub", "opSub" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
148 { "sub_r", "opSub_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
149 { "mul", "opMul" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
150 { "mul_r", "opMul_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
151 { "div", "opDiv" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
152 { "div_r", "opDiv_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
153 { "mod", "opMod" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
154 { "mod_r", "opMod_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
155 { "eq", "opEquals" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
156 { "cmp", "opCmp" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
157 { "iand", "opAnd" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
158 { "iand_r", "opAnd_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
159 { "ior", "opOr" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
160 { "ior_r", "opOr_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
161 { "ixor", "opXor" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
162 { "ixor_r", "opXor_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
163 { "shl", "opShl" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
164 { "shl_r", "opShl_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
165 { "shr", "opShr" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
166 { "shr_r", "opShr_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
167 { "ushr", "opUShr" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
168 { "ushr_r", "opUShr_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
169 { "cat", "opCat" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
170 { "cat_r", "opCat_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
171 { "assign", "opAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
172 { "addass", "opAddAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
173 { "subass", "opSubAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
174 { "mulass", "opMulAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
175 { "divass", "opDivAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
176 { "modass", "opModAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
177 { "andass", "opAndAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
178 { "orass", "opOrAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
179 { "xorass", "opXorAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
180 { "shlass", "opShlAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
181 { "shrass", "opShrAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
182 { "ushrass", "opUShrAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
183 { "catass", "opCatAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
184 { "postinc", "opPostInc" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
185 { "postdec", "opPostDec" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
186 { "index", "opIndex" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
187 { "indexass", "opIndexAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
188 { "slice", "opSlice" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
189 { "sliceass", "opSliceAssign" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
190 { "call", "opCall" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
191 { "cast", "opCast" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
192 { "match", "opMatch" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
193 { "next", "opNext" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
194 { "opIn" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
195 { "opIn_r" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
196
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
197 { "classNew", "new" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
198 { "classDelete", "delete" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
199
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
200 // For foreach
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
201 { "apply", "opApply" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
202 { "applyReverse", "opApplyReverse" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
203
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
204 { "adDup", "_adDupT" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
205 { "adReverse", "_adReverse" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
206
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
207 // For internal functions
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
208 { "aaLen", "_aaLen" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
209 { "aaKeys", "_aaKeys" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
210 { "aaValues", "_aaValues" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
211 { "aaRehash", "_aaRehash" },
1587
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1152
diff changeset
212 { "monitorenter", "_d_monitorenter" },
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1152
diff changeset
213 { "monitorexit", "_d_monitorexit" },
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1152
diff changeset
214 { "criticalenter", "_d_criticalenter" },
def7a1d494fd Merge DMD 1.051
Christian Kamm <kamm incasoftware de>
parents: 1152
diff changeset
215 { "criticalexit", "_d_criticalexit" },
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
216
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
217 // For pragma's
658
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
218 { "GNU_asm" },
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
219 { "lib" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
220 { "msg" },
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 336
diff changeset
221
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 658
diff changeset
222 // LDC pragma's
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 336
diff changeset
223 { "intrinsic" },
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 336
diff changeset
224 { "va_intrinsic" },
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 336
diff changeset
225 { "no_typeinfo" },
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 336
diff changeset
226 { "no_moduleinfo" },
445
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
227 { "Alloca", "alloca" },
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
228 { "vastart", "va_start" },
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
229 { "vacopy", "va_copy" },
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
230 { "vaend", "va_end" },
cc40db549aea Changed the handling of variadic intrinsics a bit.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 443
diff changeset
231 { "vaarg", "va_arg" },
663
6aaa3d3c1183 First part of rename to LDC.
Christian Kamm <kamm incasoftware de>
parents: 658
diff changeset
232 { "ldc" },
945
03d7c4aac654 SWITCHED TO LLVM 2.5 !
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 663
diff changeset
233 { "allow_inline" },
1152
521dd1626d76 Added initial support for raw LLVM inline asm.
Tomas Lindquist Olsen <tomas.l.olsen gmail.com>
parents: 945
diff changeset
234 { "llvm_inline_asm" },
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
235
658
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
236 // For special functions
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
237 { "tohash", "toHash" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
238 { "tostring", "toString" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
239
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
240 // Special functions
443
44f08170f4ef Removed tango from the repository and instead added a runtime dir with the files needed to patch and build tango from svn.
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 336
diff changeset
241 //{ "alloca" },
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
242 { "main" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
243 { "WinMain" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
244 { "DllMain" },
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
245 };
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
246
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
247
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
248 int main()
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
249 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
250 FILE *fp;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
251 unsigned i;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
252
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
253 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
254 fp = fopen("id.h","w");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
255 if (!fp)
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
256 { printf("can't open id.h\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
257 exit(EXIT_FAILURE);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
258 }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
259
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
260 fprintf(fp, "// File generated by idgen.c\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
261 #if __DMC__
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
262 fprintf(fp, "#pragma once\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
263 #endif
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
264 fprintf(fp, "#ifndef DMD_ID_H\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
265 fprintf(fp, "#define DMD_ID_H 1\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
266 fprintf(fp, "struct Identifier;\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
267 fprintf(fp, "struct Id\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
268 fprintf(fp, "{\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
269
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
270 for (i = 0; i < sizeof(msgtable) / sizeof(msgtable[0]); i++)
658
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
271 { const char *id = msgtable[i].ident;
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
272
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
273 fprintf(fp," static Identifier *%s;\n", id);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
274 }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
275
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
276 fprintf(fp, " static void initialize();\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
277 fprintf(fp, "};\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
278 fprintf(fp, "#endif\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
279
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
280 fclose(fp);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
281 }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
282
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
283 {
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
284 fp = fopen("id.c","w");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
285 if (!fp)
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
286 { printf("can't open id.c\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
287 exit(EXIT_FAILURE);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
288 }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
289
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
290 fprintf(fp, "// File generated by idgen.c\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
291 fprintf(fp, "#include \"id.h\"\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
292 fprintf(fp, "#include \"identifier.h\"\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
293 fprintf(fp, "#include \"lexer.h\"\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
294
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
295 for (i = 0; i < sizeof(msgtable) / sizeof(msgtable[0]); i++)
658
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
296 { const char *id = msgtable[i].ident;
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
297 const char *p = msgtable[i].name;
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
298
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
299 if (!p)
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
300 p = id;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
301 fprintf(fp,"Identifier *Id::%s;\n", id);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
302 }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
303
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
304 fprintf(fp, "void Id::initialize()\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
305 fprintf(fp, "{\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
306
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
307 for (i = 0; i < sizeof(msgtable) / sizeof(msgtable[0]); i++)
658
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
308 { const char *id = msgtable[i].ident;
50383e476c7e Upgraded frontend to DMD 1.035
Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
parents: 486
diff changeset
309 const char *p = msgtable[i].name;
336
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
310
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
311 if (!p)
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
312 p = id;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
313 fprintf(fp," %s = Lexer::idPool(\"%s\");\n", id, p);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
314 }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
315
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
316 fprintf(fp, "}\n");
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
317
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
318 fclose(fp);
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
319 }
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
320
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
321 return EXIT_SUCCESS;
aaade6ded589 [svn r357] Merged DMD 1.033
lindquist
parents: 19
diff changeset
322 }