comparison dmd2/irstate.h @ 1452:638d16625da2

LDC 2 compiles again.
author Robert Clipsham <robert@octarineparrot.com>
date Sat, 30 May 2009 17:23:32 +0100
parents
children
comparison
equal deleted inserted replaced
1423:42bd767ec5a4 1452:638d16625da2
1
2 // Compiler implementation of the D programming language
3 // Copyright (c) 1999-2008 by Digital Mars
4 // All Rights Reserved
5 // written by Walter Bright
6 // http://www.digitalmars.com
7
8 #ifndef DMD_CONTEXT_H
9 #define DMD_CONTEXT_H
10
11 #ifdef __DMC__
12 #pragma once
13 #endif /* __DMC__ */
14
15 struct Module;
16 struct Statement;
17 struct block;
18 struct Dsymbol;
19 struct Identifier;
20 struct Symbol;
21 struct FuncDeclaration;
22 struct Blockx;
23 struct Array;
24 struct elem;
25
26 struct IRState
27 {
28 IRState *prev;
29 Statement *statement;
30 Module *m; // module
31 Dsymbol *symbol;
32 Identifier *ident;
33 Symbol *shidden; // hidden parameter to function
34 Symbol *sthis; // 'this' parameter to function (member and nested)
35 Symbol *sclosure; // pointer to closure instance
36 Blockx *blx;
37 Array *deferToObj; // array of Dsymbol's to run toObjFile(int multiobj) on later
38 elem *ehidden; // transmit hidden pointer to CallExp::toElem()
39 Symbol *startaddress;
40
41 block *breakBlock;
42 block *contBlock;
43 block *switchBlock;
44 block *defaultBlock;
45
46 IRState(IRState *irs, Statement *s);
47 IRState(IRState *irs, Dsymbol *s);
48 IRState(Module *m, Dsymbol *s);
49
50 block *getBreakBlock(Identifier *ident);
51 block *getContBlock(Identifier *ident);
52 block *getSwitchBlock();
53 block *getDefaultBlock();
54 FuncDeclaration *getFunc();
55 };
56
57 #endif /* DMD_CONTEXT_H */