Mercurial > projects > ddmd
diff dmd/backend/SFL.d @ 0:10317f0c89a5
Initial commit
author | korDen |
---|---|
date | Sat, 24 Oct 2009 08:42:06 +0400 |
parents | |
children | fd4acc376c45 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dmd/backend/SFL.d Sat Oct 24 08:42:06 2009 +0400 @@ -0,0 +1,67 @@ +module dmd.backend.SFL; + +enum SFL +{ + SFLmark = 0x08, // temporary marker + SFLvalue = 0x01, // Svalue contains const expression + SFLimplem = 0x02, // if seen implementation of Symbol + // (function body for functions, + // initializer for variables) + SFLdouble = 0x02, // SCregpar or SCparameter, where float + // is really passed as a double + SFLfree = 0x04, // if we can symbol_free() a Symbol in + // a Symbol table[] + SFLexit = 0x10, // tyfunc: function does not return + // (ex: exit,abort,_assert,longjmp) + SFLtrue = 0x200, // value of Symbol != 0 + SFLreplace = SFLmark, // variable gets replaced in inline expansion + SFLskipinit = 0x10000, // SCfield, SCmember: initializer is skipped + SFLnodebug = 0x20000, // don't generate debug info + SFLwasstatic = 0x800000, // was an uninitialized static + SFLweak = 0x1000000, // resolve to NULL if not found + + // CPP + SFLnodtor = 0x10, // set if destructor for Symbol is already called + SFLdtorexp = 0x80, // Svalue has expression to tack onto dtor + SFLmutable = 0x100000, // SCmember or SCfield is mutable + SFLdyninit = 0x200000, // symbol has dynamic initializer + SFLtmp = 0x400000, // symbol is a generated temporary + +///version (XXX) {///TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS +/// SFLthunk = 0x40000, // symbol is temporary for thunk +///} + + // Possible values for protection bits + SFLprivate = 0x60, + SFLprotected = 0x40, + SFLpublic = 0x20, + SFLnone = 0x00, + SFLpmask = 0x60, // mask for the protection bits +///version (VEC_VTBL_LIST) { +/// SFLvtbl = 0x2000, // Symbol is a vtable or vbtable +///} + + // OPTIMIZER and CODGEN + SFLdead = 0x800, // this variable is dead + + // OPTIMIZER only + SFLunambig = 0x400, // only accessible by unambiguous reference, + // i.e. cannot be addressed via pointer + // (GTregcand is a subset of this) + // P.S. code generator turns off this + // flag if any reads are done from it. + // This is to eliminate stores to it + // that are never read. + + SFLlivexit = 0x1000, // live on exit from function + SFLnotbasiciv = 0x4000, // not a basic induction variable + SFLnord = SFLdouble, // SCauto,SCregister,SCtmp: disallow redundant warnings + + // CODGEN only + SFLread = 0x40000, // variable is actually read from + // (to eliminate dead stores) + SFLspill = 0x80000, // only in register part of the time +} + +import dmd.EnumUtils; +mixin(BringToCurrentScope!(SFL)); \ No newline at end of file