@@ -52,9 +52,6 @@ alias enum_TK = ubyte;
5252
5353__gshared Config config;
5454
55- @trusted
56- uint CPP () { return config.flags3 & CFG3cpp; }
57-
5855
5956// ///////// Position in source file
6057
@@ -408,50 +405,27 @@ enum
408405{
409406 Fpending = 1 , // if function has been queued for being written
410407 Foutput = 2 , // if function has been written out
411- Foperator = 4 , // if operator overload
412- Fcast = 8 , // if cast overload
413408 Finline = 0x10 , // if SCinline, and function really is inline
414- Foverload = 0x20 , // if function can be overloaded
415- Ftypesafe = 0x40 , // if function name needs type appended
416- Fmustoutput = 0x80 , // set for forward ref'd functions that
417- // must be output
418- Fvirtual = 0x100 , // if function is a virtual function
419409 Fctor = 0x200 , // if function is a constructor
420410 Fdtor = 0x400 , // if function is a destructor
421- Fnotparent = 0x800 , // if function is down Foversym chain
422411 Finlinenest = 0x1000 , // used as a marker to prevent nested
423412 // inlines from expanding
424- Flinkage = 0x2000 , // linkage is already specified
425413 Fstatic = 0x4000 , // static member function (no this)
426- Fbitcopy = 0x8000 , // it's a simple bitcopy (op=() or X(X&))
427414 Fpure = 0x10000 , // pure function
428- Finstance = 0x20000 , // function is an instance of a template
429- Ffixed = 0x40000 , // ctor has had cpp_fixconstructor() run on it,
430- // dtor has had cpp_fixdestructor()
431- Fintro = 0x80000 , // function doesn't hide a previous virtual function
432- // unused = 0x100000, // unused bit
433- Fkeeplink = 0x200000 , // don't change linkage to default
434- Fnodebug = 0x400000 , // do not generate debug info for this function
435- Fgen = 0x800000 , // compiler generated function
436415 Finvariant = 0x1000000 , // __invariant function
437- Fexplicit = 0x2000000 , // explicit constructor
438- Fsurrogate = 0x4000000 , // surrogate call function
439416}
440417
441418alias func_flags3_t = uint ;
442419enum
443420{
444421 Fvtblgen = 1 , // generate vtbl[] when this function is defined
445- Femptyexc = 2 , // empty exception specification (obsolete, use Tflags & TFemptyexc)
446422 Fcppeh = 4 , // uses C++ EH
447423 Fnteh = 8 , // uses NT Structured EH
448- Fdeclared = 0x10 , // already declared function Symbol
449424 Fmark = 0x20 , // has unbalanced OPctor's
450425 Fdoinline = 0x40 , // do inline walk
451426 Foverridden = 0x80 , // ignore for overriding purposes
452427 Fjmonitor = 0x100 , // Mars synchronized function
453428 Fnosideeff = 0x200 , // function has no side effects
454- F3badoparrow = 0x400 , // bad operator->()
455429 Fmain = 0x800 , // function is D main
456430 Fnested = 0x1000 , // D nested function with 'this'
457431 Fmember = 0x2000 , // D member function with 'this'
@@ -473,38 +447,11 @@ struct func_t
473447 Symbol* F__func__; // symbol for __func__[] string
474448 func_flags_t Fflags;
475449 func_flags3_t Fflags3;
476- ubyte Foper; // operator number (OPxxxx) if Foperator
477-
478- Symbol* Fparsescope; // use this scope to parse friend functions
479- // which are defined within a class, so the
480- // class is in scope, but are not members
481- // of the class
482450
483451 Classsym* Fclass; // if member of a class, this is the class
484452 // (I think this is redundant with Sscope)
485- Funcsym* Foversym; // overloaded function at same scope
486- symlist_t Fclassfriends; // Symbol list of classes of which this
487- // function is a friend
488- block* Fbaseblock; // block where base initializers get attached
489- block* Fbaseendblock; // block where member destructors get attached
490- elem* Fbaseinit; // list of member initializers (meminit_t)
491- // this field has meaning only for
492- // functions which are constructors
493- uint Fsequence; // sequence number at point of definition
494- Symbol* Ftempl; // if Finstance this is the template that generated it
495453 Funcsym* Falias; // SCfuncalias: function Symbol referenced
496454 // by using-declaration
497- symlist_t Fthunks; // list of thunks off of this function
498- param_t* Farglist; // SCfunctempl: the template-parameter-list
499- param_t* Fptal; // Finstance: this is the template-argument-list
500- // SCftexpspec: for explicit specialization, this
501- // is the template-argument-list
502- list_t Ffwdrefinstances; // SCfunctempl: list of forward referenced instances
503- list_t Fexcspec; // List of types in the exception-specification
504- // (NULL if none or empty)
505- Funcsym* Fexplicitspec; // SCfunctempl, SCftexpspec: threaded list
506- // of SCftexpspec explicit specializations
507- Funcsym* Fsurrogatesym; // Fsurrogate: surrogate cast function
508455
509456 char * Fredirect; // redirect function name to this name in object
510457
@@ -527,17 +474,8 @@ struct baseclass_t
527474 Classsym* BCbase; // base class Symbol
528475 baseclass_t* BCnext; // next base class
529476 targ_size_t BCoffset; // offset from start of derived class to this
530- ushort BCvbtbloff; // for BCFvirtual, offset from start of
531- // vbtbl[] to entry for this virtual base.
532- // Valid in Sbase list
533- symlist_t BCpublics; // public members of base class (list is freeable)
534- list_t BCmptrlist; // (in Smptrbase only) this is the vtbl
535- // (NULL if not different from base class's vtbl
536477 Symbol* BCvtbl; // Symbol for vtbl[] array (in Smptrbase list)
537478 // Symbol for vbtbl[] array (in Svbptrbase list)
538- Classsym* BCparent; // immediate parent of this base class
539- // in Smptrbase
540- baseclass_t* BCpbase; // parent base, NULL if did not come from a parent
541479}
542480
543481/* **********************************
@@ -572,26 +510,9 @@ enum
572510 STRnotagname = 4 , // struct/class with no tag name
573511 STRoutdef = 8 , // we've output the debug definition
574512 STRbitfields = 0x10 , // set if struct contains bit fields
575- STRabstract = 0x20 , // abstract class
576- STRbitcopy = 0x40 , // set if operator=() is merely a bit copy
577- STRanyctor = 0x80 , // set if any constructors were defined
578- // by the user
579- STRnoctor = 0x100 , // no constructors allowed
580- STRgen = 0x200 , // if struct is an instantiation of a
581- // template class, and was generated by
582- // that template
583- STRvtblext = 0x400 , // generate vtbl[] only when first member function
584- // definition is encountered (see Fvtblgen)
585- STRexport = 0x800 , // all member functions are to be _export
586- STRpredef = 0x1000 , // a predefined struct
587513 STRunion = 0x2000 , // actually, it's a union
588514 STRclass = 0x4000 , // it's a class, not a struct
589- STRimport = 0x8000 , // imported class
590- STRstaticmems = 0x10000 , // class has static members
591515 STR0size = 0x20000 , // zero sized struct
592- STRinstantiating = 0x40000 , // if currently being instantiated
593- STRexplicit = 0x80000 , // if explicit template instantiation
594- STRgenctor0 = 0x100000 , // need to gen X::X()
595516 STRnotpod = 0x200000 , // struct is not POD
596517}
597518
@@ -603,35 +524,11 @@ struct struct_t
603524 uint Salignsize; // size of struct for alignment purposes
604525 ubyte Sstructalign; // struct member alignment in effect
605526 struct_flags_t Sflags;
606- tym_t ptrtype; // type of pointer to refer to classes by
607527 baseclass_t* Sbase; // list of direct base classes
608- Symbol* Svptr; // Symbol of vptr
609- Symbol* Stempsym; // if this struct is an instantiation
610- // of a template class, this is the
611- // template class Symbol
612528
613529 // For 64 bit Elf function ABI
614530 type* Sarg1type;
615531 type* Sarg2type;
616-
617- /* For:
618- * template<class T> struct A { };
619- * template<class T> struct A<T *> { };
620- *
621- * A<int> a; // primary
622- * Gives:
623- * Sarglist = <int>
624- * Spr_arglist = NULL;
625- *
626- * A<int*> a; // specialization
627- * Gives:
628- * Sarglist = <int>
629- * Spr_arglist = <int*>;
630- */
631-
632- param_t* Sarglist; // if this struct is an instantiation
633- // of a template class, this is the
634- // actual arg list used
635532}
636533
637534/* *********************************
0 commit comments