File: CodeGen.d

package info (click to toggle)
oo2c32 1.5.4-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 8,888 kB
  • ctags: 5,436
  • sloc: ansic: 95,310; sh: 473; makefile: 345; perl: 57; lisp: 20
file content (330 lines) | stat: -rw-r--r-- 11,913 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
/* file generated by oo2c -- do not edit */
#include "CodeGen.h"
#include "AlgebraicTransformation.h"
#include "AliasAnalysis.h"
#include "Allocate.h"
#include "Build.h"
#include "Check.h"
#include "Classify.h"
#include "ConstPropagation.h"
#include "ControlFlow.h"
#include "CopyPropagation.h"
#include "DeadCodeElimination.h"
#include "Error.h"
#include "FileData.h"
#include "Files.h"
#include "GateReduction.h"
#include "GenConst.h"
#include "GenDecl.h"
#include "GenInclude.h"
#include "GenStatm.h"
#include "GuardCond.h"
#include "GuardPropagation.h"
#include "LoopTransformation.h"
#include "Opcode.h"
#include "Out.h"
#include "Schedule.h"
#include "SideEffects.h"
#include "StdTypes.h"
#include "Strings.h"
#include "SymbolFile.h"
#include "SystemFlags.h"
#include "TextRider.h"
#include "ValueNumbering.h"
#include "WriteGSA.h"
#include "WriteGSAvC.h"

/* local definitions */
ParamOptions__StringOption CodeGen__translationBasis;
typedef void(* CodeGen__TransformProc)(Data__Region r);
typedef struct CodeGen__CodeTransformDesc {
  struct CodeGen__CodeTransformDesc* next;
  unsigned char name[48];
  unsigned char id;
  char _53pad, _54pad, _55pad;
  unsigned int flags;
  CodeGen__TransformProc proc;
} CodeGen__CodeTransformDesc;
typedef struct CodeGen__CodeTransformDesc* CodeGen__CodeTransform;
static CodeGen__CodeTransform CodeGen__ctProcs;
ParamOptions__StringOption CodeGen__optimizers;
ParamOptions__BooleanOption CodeGen__stupidCodeGen;
static ParamOptions__BooleanOption CodeGen__checks;
static FileData__FileData CodeGen__hFile;
static FileData__FileData CodeGen__dFile;
static FileData__FileData CodeGen__cFile;
static TextRider__Writer CodeGen__hWriter;
static TextRider__Writer CodeGen__dWriter;
static TextRider__Writer CodeGen__cWriter;

/* function prototypes */
CodeGen__CodeTransform CodeGen__FindProc(unsigned char id);
void CodeGen__WriteGSACode(Data__Region r);
void CodeGen__InstallOptimizers_AddProc(const unsigned char* name__ref, int name_0d, unsigned char id, CodeGen__TransformProc proc, unsigned int flags);
unsigned char CodeGen__OptimizeBlock_NoDCE(const unsigned char* opt, int opt_0d);
void CodeGen__OptimizeBlock(Data__GlobalRegion greg);
void CodeGen__OptimizeModule(CodeGen__Module modData);
void CodeGen__DeleteGreg(Data__GlobalRegion *greg, Data__Object *obj, unsigned char keepInterface);
void CodeGen__InitializeModule(TextRider__Writer w, Data__Object obj, Data__Struct tdList);
unsigned char CodeGen__TranslateGreg_AdjustBranchConditions_SingleUse(Data__Usable u);
unsigned char CodeGen__TranslateGreg_AdjustBranchConditions_NegateInstruction(Data__Instruction instr);
void CodeGen__TranslateGreg_AdjustBranchConditions(Data__Region r);
void CodeGen__TranslateGreg_ResetLocations(Data__Instruction enter, Data__Instruction exit);
void CodeGen__TranslateGreg(TextRider__Writer w, Data__GlobalRegion greg, Data__Struct tdList);
void CodeGen__EmitProcedure(TextRider__Writer w, CodeGen__Procedure proc);
void CodeGen__EmitModuleBody(TextRider__Writer w, CodeGen__Module modData, Data__Struct tdList);
void CodeGen__EmitDeclarations_CollectInitialization_AddElement(int index, Data__Instruction update, GenConst__UpdateList *CodeGen__EmitDeclarations_CollectInitialization_list, int *CodeGen__EmitDeclarations_CollectInitialization_filled, int *CodeGen__EmitDeclarations_CollectInitialization_lenList);
int CodeGen__EmitDeclarations_CollectInitialization_TraceUpdates_Elements(Data__Struct t);
void CodeGen__EmitDeclarations_CollectInitialization_TraceUpdates(Data__Usable value, int offset, Data__Struct type, Data__GlobalRegion *CodeGen__EmitDeclarations_CollectInitialization_greg, Data__Object *CodeGen__EmitDeclarations_CollectInitialization_obj, GenConst__UpdateList *CodeGen__EmitDeclarations_CollectInitialization_list, int *CodeGen__EmitDeclarations_CollectInitialization_filled, int *CodeGen__EmitDeclarations_CollectInitialization_lenList);
void CodeGen__EmitDeclarations_CollectInitialization(Data__Object obj, GenConst__UpdateList *list, int *lenList, int *filled, CodeGen__Module *CodeGen__EmitDeclarations_mod);
void CodeGen__EmitDeclarations_RemoveNoopUpdates(Data__Usable value, Data__GlobalRegion greg);
void CodeGen__EmitDeclarations(TextRider__Writer w, GenDecl__ObjectList objList, int objCount, CodeGen__Module mod, unsigned char header);
void CodeGen__EmitHeaderFile(TextRider__Writer w, CodeGen__Module mod);
Data__Struct CodeGen__EmitTypeDescriptors(TextRider__Writer w, CodeGen__Module mod);
void CodeGen__EmitDeclFile_WriteOtherImports(Data__Object obj, TextRider__Writer *CodeGen__EmitDeclFile_w);
void CodeGen__EmitDeclFile_EmitPrototypes(TextRider__Writer w, CodeGen__Procedure procList);
void CodeGen__EmitDeclFile(TextRider__Writer w, CodeGen__Module mod);
void CodeGen__WriteSymbolFile(CodeGen__Module modData);
TextRider__Writer CodeGen__CreateModule_CreateFiles_CreateTmpFile(FileData__FileData fd);
void CodeGen__CreateModule_CreateFiles(Data__Object mod, CodeGen__Program *CodeGen__CreateModule_progData);
void CodeGen__CreateModule_AppendModule(CodeGen__Module *modList, CodeGen__Module mod);
void CodeGen__FinishProcedure_AppendProcedure(CodeGen__Procedure *procList, CodeGen__Procedure proc);
void CodeGen__FinishModule_CloseFile(TextRider__Writer w, FileData__FileData fd);

/* module and type descriptors */
static const struct {
  int length;
  void* pad;
  const char name[8];
} _n0 = {8, NULL, {"CodeGen"}};
static struct _MD CodeGen_md = {
  NULL, 
  &Kernel__ModuleDesc_td.td, 
  {
    NULL, 
    (const unsigned char*)_n0.name, 
    -1, 
    NULL
  }
};

static const struct {
  int length;
  void* pad;
  const char name[12];
} _n1 = {12, NULL, {"ProgramDesc"}};
static const struct {
  int length;
  void* pad;
  _Type btypes[1];
} CodeGen__ProgramDesc_tdb = {
  1, 
  NULL, 
  {
    &CodeGen__ProgramDesc_td.td
  }
};
static const struct {
  int length;
  void* pad;
  const void* tbprocs[1];
} _tb0 = {0, NULL, {
  NULL
}};
struct _TD CodeGen__ProgramDesc_td = {
  NULL,
  &Types__TypeDesc_td.td,
  {
    CodeGen__ProgramDesc_tdb.btypes,
    _tb0.tbprocs,
    (const unsigned char*)_n1.name,
    &CodeGen_md.md,
    0, 
    '0', '1',
    sizeof(CodeGen__ProgramDesc),
    NULL
  }
};

static const struct {
  int length;
  void* pad;
  const char name[11];
} _n2 = {11, NULL, {"ModuleDesc"}};
static const struct {
  int length;
  void* pad;
  _Type btypes[1];
} CodeGen__ModuleDesc_tdb = {
  1, 
  NULL, 
  {
    &CodeGen__ModuleDesc_td.td
  }
};
static const struct {
  int length;
  void* pad;
  const void* tbprocs[1];
} _tb1 = {0, NULL, {
  NULL
}};
struct _TD CodeGen__ModuleDesc_td = {
  NULL,
  &Types__TypeDesc_td.td,
  {
    CodeGen__ModuleDesc_tdb.btypes,
    _tb1.tbprocs,
    (const unsigned char*)_n2.name,
    &CodeGen_md.md,
    0, 
    '0', '1',
    sizeof(CodeGen__ModuleDesc),
    &CodeGen__ProgramDesc_td.td
  }
};

static const struct {
  int length;
  void* pad;
  const char name[14];
} _n3 = {14, NULL, {"ProcedureDesc"}};
static const struct {
  int length;
  void* pad;
  _Type btypes[1];
} CodeGen__ProcedureDesc_tdb = {
  1, 
  NULL, 
  {
    &CodeGen__ProcedureDesc_td.td
  }
};
static const struct {
  int length;
  void* pad;
  const void* tbprocs[1];
} _tb2 = {0, NULL, {
  NULL
}};
struct _TD CodeGen__ProcedureDesc_td = {
  NULL,
  &Types__TypeDesc_td.td,
  {
    CodeGen__ProcedureDesc_tdb.btypes,
    _tb2.tbprocs,
    (const unsigned char*)_n3.name,
    &CodeGen_md.md,
    0, 
    '0', '1',
    sizeof(CodeGen__ProcedureDesc),
    &CodeGen__ModuleDesc_td.td
  }
};

static const struct {
  int length;
  void* pad;
  const char name[18];
} _n4 = {18, NULL, {"CodeTransformDesc"}};
static const struct {
  int length;
  void* pad;
  _Type btypes[1];
} CodeGen__CodeTransformDesc_tdb = {
  1, 
  NULL, 
  {
    &CodeGen__CodeTransformDesc_td.td
  }
};
static const struct {
  int length;
  void* pad;
  const void* tbprocs[1];
} _tb3 = {0, NULL, {
  NULL
}};
struct _TD CodeGen__CodeTransformDesc_td = {
  NULL,
  &Types__TypeDesc_td.td,
  {
    CodeGen__CodeTransformDesc_tdb.btypes,
    _tb3.tbprocs,
    (const unsigned char*)_n4.name,
    &CodeGen_md.md,
    0, 
    '0', '1',
    sizeof(CodeGen__CodeTransformDesc),
    &CodeGen__ProcedureDesc_td.td
  }
};

/* local strings */
static const unsigned char _c65[] = "checks:=TRUE";
static const unsigned char _c64[] = "--checks";
static const unsigned char _c63[] = "checks";
static const unsigned char _c62[] = "optimizers:=\047$1\047";
static const unsigned char _c61[] = "--opt";
static const unsigned char _c60[] = "\077\077\077";
static const unsigned char _c59[] = "optimizers";
static const unsigned char _c58[] = "stupidCodeGen:=TRUE";
static const unsigned char _c57[] = "--stupid";
static const unsigned char _c56[] = "stupidCodeGen";
static const unsigned char _c55[] = "translationBasis:=\047$1\047";
static const unsigned char _c54[] = "--translate";
static const unsigned char _c53[] = "translationBasis";
static const unsigned char _c52[] = "/* local strings */";
static const unsigned char _c51[] = "program";
static const unsigned char _c50[] = "module";
static const unsigned char _c49[] = "Closing file `%\047 failed";
static const unsigned char _c48[] = "Registering file `%\047 failed";
static const unsigned char _c47[] = "Write error in file `%\047";
static const unsigned char _c46[] = "static _ModId _mid;";
static const unsigned char _c45[] = "__libc";
static const unsigned char _c44[] = "__oo2c";
static const unsigned char _c43[] = "";
static const unsigned char _c42[] = ".c";
static const unsigned char _c41[] = ".d";
static const unsigned char _c40[] = "/* file generated by oo2c -- do not edit */";
static const unsigned char _c39[] = "Couldn\047t create file `%\047";
static const unsigned char _c38[] = "   symbol file changed";
static const unsigned char _c37[] = "   new symbol file";
static const unsigned char _c36[] = "/* function prototypes */";
static const unsigned char _c35[] = "/* local definitions */";
static const unsigned char _c34[] = ".h";
static const unsigned char _c33[] = "gproc";
static const unsigned char _c32[] = "/* module and type descriptors */";
static const unsigned char _c31[] = "#endif";
static const unsigned char _c30[] = "_init(void);";
static const unsigned char _c29[] = "extern void ";
static const unsigned char _c28[] = "#define _MODULE_";
static const unsigned char _c27[] = "_";
static const unsigned char _c26[] = "#ifndef _MODULE_";
static const unsigned char _c25[] = "_init(void) {";
static const unsigned char _c24[] = "void ";
static const unsigned char _c23[] = " {";
static const unsigned char _c22[] = ");";
static const unsigned char _c21[] = "NULL";
static const unsigned char _c20[] = ".td";
static const unsigned char _c19[] = "_md.md, ";
static const unsigned char _c18[] = "_mid = _register_module(&";
static const unsigned char _c17[] = " violated GSA invariant, aborting";
static const unsigned char _c16[] = "Error: ";
static const unsigned char _c15[] = "Code emitted by front-end didn\047t pass consistency checks, aborting";
static const unsigned char _c14[] = "constant propagation";
static const unsigned char _c13[] = "algebraic transformation";
static const unsigned char _c12[] = "common subexpression elimination";
static const unsigned char _c11[] = "gate reduction";
static const unsigned char _c10[] = "guard propagation";
static const unsigned char _c9[] = "loop transformation";
static const unsigned char _c8[] = "alias analysis";
static const unsigned char _c7[] = "dead code elimination";
static const unsigned char _c6[] = "dead code elimination and remove disabled instr";
static const unsigned char _c5[] = "suppress final dead code elimination";
static const unsigned char _c4[] = "write GSA code";
static const unsigned char _c3[] = " ";
static const unsigned char _c2[] = "  ";
static const unsigned char _c1[] = "\047.  Valid values:";
static const unsigned char _c0[] = "Illegal optimization id `";