dmd.e2ir

Converts expressions to Intermediate Representation (IR) for the backend.

Members

Aliases

Elems
alias Elems = Array!(elem*)
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
toSymbol
alias toSymbol = dmd.tocsym.toSymbol
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
toSymbol
alias toSymbol = dmd.glue.toSymbol
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.

Functions

ISREF
bool ISREF(Declaration var)
Undocumented in source. Be warned that the author may not have intended to support it.
ISX64REF
bool ISX64REF(Declaration var)
Undocumented in source. Be warned that the author may not have intended to support it.
ISX64REF
bool ISX64REF(IRState* irs, Expression exp)
Undocumented in source. Be warned that the author may not have intended to support it.
addressElem
elem* addressElem(elem* e, Type t, bool alwaysCopy)

Take address of an elem.

array_toDarray
elem* array_toDarray(Type t, elem* e)

Convert array to a dynamic array.

array_toPtr
elem* array_toPtr(Type t, elem* e)

Convert array to a pointer to the data.

buildArrayBoundsError
elem* buildArrayBoundsError(IRState* irs, Loc loc, elem* lwr, elem* upr, elem* elength)

Construct elem to run when an array bounds check fails.

callCAssert
elem* callCAssert(IRState* irs, Loc loc, Expression exp, Expression emsg, const(char)* str)

Generate call to C's assert failure function. One of exp, emsg, or str must not be null.

clearStringTab
void clearStringTab()

Reset stringTab[] between object files being emitted, because the symbols are local.

elAssign
elem* elAssign(elem* e1, elem* e2, Type t, type* tx)

Generate a copy from e2 to e1.

elemIsLvalue
bool elemIsLvalue(elem* e)

Return true if elem is a an lvalue. Lvalue elems are OPvar and OPind.

genHalt
elem* genHalt(Loc loc)

Generate HALT instruction.

getTypeInfo
elem* getTypeInfo(Loc loc, Type t, IRState* irs)
mem_malloc2
void* mem_malloc2(uint )
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.
needsDtor
StructDeclaration needsDtor(Type t)

Determine if t is a struct that has destructor.

needsPostblit
StructDeclaration needsPostblit(Type t)

Determine if t is a struct that has postblit.

sarray_toDarray
elem* sarray_toDarray(Loc loc, Type tfrom, Type tto, elem* e)
setEthis2
elem* setEthis2(Loc loc, IRState* irs, FuncDeclaration fd, elem* ethis2, elem** ethis, elem** eside)

Initialize the dual-context array with the context pointers.

toElem
elem* toElem(Expression e, IRState* irs)
Undocumented in source. Be warned that the author may not have intended to support it.
toElemDtor
elem* toElemDtor(Expression e, IRState* irs)

Convert Expression to elem, then append destructors for any temporaries created in elem.

toStringSymbol
Symbol* toStringSymbol(const(char)* str, size_t len, size_t sz)

Write read-only string to object file, create a local symbol for it. Makes a copy of str's contents, does not keep a reference to it.

toStringSymbol
Symbol* toStringSymbol(StringExp se)

Turn StringExp into Symbol.

toTraceGC
void toTraceGC(IRState* irs, elem* e, Loc loc)

Replace call to GC allocator with call to tracing GC allocator.

type_zeroCopy
bool type_zeroCopy(type* t)

Determine if zero bits need to be copied for this backend type

Properties

REGSIZE
int REGSIZE [@property getter]
Undocumented in source. Be warned that the author may not have intended to support it.

Static variables

stringTab
StringTable!(Symbol*)* stringTab;
Undocumented in source but is binding to C++. You might be able to learn more by searching the web for its name.

Meta