comparison dmd/backend/SFL.d @ 0:10317f0c89a5

Initial commit
author korDen
date Sat, 24 Oct 2009 08:42:06 +0400
parents
children fd4acc376c45
comparison
equal deleted inserted replaced
-1:000000000000 0:10317f0c89a5
1 module dmd.backend.SFL;
2
3 enum SFL
4 {
5 SFLmark = 0x08, // temporary marker
6 SFLvalue = 0x01, // Svalue contains const expression
7 SFLimplem = 0x02, // if seen implementation of Symbol
8 // (function body for functions,
9 // initializer for variables)
10 SFLdouble = 0x02, // SCregpar or SCparameter, where float
11 // is really passed as a double
12 SFLfree = 0x04, // if we can symbol_free() a Symbol in
13 // a Symbol table[]
14 SFLexit = 0x10, // tyfunc: function does not return
15 // (ex: exit,abort,_assert,longjmp)
16 SFLtrue = 0x200, // value of Symbol != 0
17 SFLreplace = SFLmark, // variable gets replaced in inline expansion
18 SFLskipinit = 0x10000, // SCfield, SCmember: initializer is skipped
19 SFLnodebug = 0x20000, // don't generate debug info
20 SFLwasstatic = 0x800000, // was an uninitialized static
21 SFLweak = 0x1000000, // resolve to NULL if not found
22
23 // CPP
24 SFLnodtor = 0x10, // set if destructor for Symbol is already called
25 SFLdtorexp = 0x80, // Svalue has expression to tack onto dtor
26 SFLmutable = 0x100000, // SCmember or SCfield is mutable
27 SFLdyninit = 0x200000, // symbol has dynamic initializer
28 SFLtmp = 0x400000, // symbol is a generated temporary
29
30 ///version (XXX) {///TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS
31 /// SFLthunk = 0x40000, // symbol is temporary for thunk
32 ///}
33
34 // Possible values for protection bits
35 SFLprivate = 0x60,
36 SFLprotected = 0x40,
37 SFLpublic = 0x20,
38 SFLnone = 0x00,
39 SFLpmask = 0x60, // mask for the protection bits
40 ///version (VEC_VTBL_LIST) {
41 /// SFLvtbl = 0x2000, // Symbol is a vtable or vbtable
42 ///}
43
44 // OPTIMIZER and CODGEN
45 SFLdead = 0x800, // this variable is dead
46
47 // OPTIMIZER only
48 SFLunambig = 0x400, // only accessible by unambiguous reference,
49 // i.e. cannot be addressed via pointer
50 // (GTregcand is a subset of this)
51 // P.S. code generator turns off this
52 // flag if any reads are done from it.
53 // This is to eliminate stores to it
54 // that are never read.
55
56 SFLlivexit = 0x1000, // live on exit from function
57 SFLnotbasiciv = 0x4000, // not a basic induction variable
58 SFLnord = SFLdouble, // SCauto,SCregister,SCtmp: disallow redundant warnings
59
60 // CODGEN only
61 SFLread = 0x40000, // variable is actually read from
62 // (to eliminate dead stores)
63 SFLspill = 0x80000, // only in register part of the time
64 }
65
66 import dmd.EnumUtils;
67 mixin(BringToCurrentScope!(SFL));