Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

ddmd.backend.cc

Compiler implementation of the D programming language.
Authors:

Source: backend/cc.d

enum int IDMAX;
Print out debugging information.
struct Srcpos;
Position in source file
struct Pstate;
Current 'state' of the compiler. Used to gather together most global variables. This struct is saved/restored during function body parsing.
struct Cstate;
Global variables.
alias ClassDeclaration_ = void*;
Basic blocks: Basic blocks are a linked list of all the basic blocks in a function. startblock heads the list.
alias BC = int;
Basic block control flow operators.
struct symtab_t;
Functions
struct meminit_t;
Item in list for member initializer.
struct baseclass_t;
Base classes are a list of these.
alias mptr_flags_t = char;
For virtual tables.
struct TMF;
Information gathered about externally defined template member functions, member data, and member classes.
struct TME;
Information gathered about primary member template explicit specialization.
struct TMNE;
Information gathered about nested explicit specializations.
struct TMNF;
Information gathered about nested class friends.
struct template_t;
Special information for class templates.
alias enum_flags_t = uint;
Special information for enums.
alias struct_flags_t = uint;
Special information for structs.
nothrow @nogc Symbol* list_symbol(list_t lst);
Symbol Table
alias pflags_t = uint;
Function parameters: Pident identifier of parameter Ptype type of argument Pelem default value for argument Psym symbol corresponding to Pident when using the parameter list as a symbol table For template-parameter-list: Pident identifier of parameter Ptype if NULL, this is a type-parameter else the type for a parameter-declaration value argument Pelem default value for value argument Pdeftype default value for type-parameter Pptpl template-parameter-list for template-template-parameter Psym default value for template-template-parameter For template-arg-list: (actual arguments) Pident NULL Ptype type-name Pelem expression (either Ptype or Pelem is NULL) Psym SCtemplate for template-template-argument
alias FL = int;
Element types. These should be combined with storage classes.
struct EEcontext;
Srcfiles
Collect information about a source file.
Source files are referred to by a pointer into pfiles[]. This is so that
when PH files are hydrated, only pfiles[] needs updating. Of course, this
means that pfiles[] cannot be reallocated to larger numbers, its size is
fixed at SRCFILES_MAX.
Sfile *arr; // array of Sfiles
This is to support compiling expressions within the context of a function.
struct dt_t;
Data definitions DTibytes 1..7 bytes DTabytes offset of bytes of data a { a data bytes } DTnbytes bytes of data a { a data bytes } a = offset DTazeros # of 0 bytes a DTsymsize same as DTazeros, but the type of the symbol gives the size DTcommon # of 0 bytes (in a common block) a DTxoff offset from symbol w a w = symbol number (pointer for CPP) a = offset DTcoff offset into code segment