View source code
Display the source code in dmd/e2ir.d from which this page was generated on github.
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 local clone.

Module dmd.e2ir

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




addressElem(e, t, alwaysCopy) Take address of an elem. Accounts for e being an rvalue by assigning the rvalue to a temp.
clearStringTab() Reset stringTab[] between object files being emitted, because the symbols are local.
elAssign(e1, e2, t, tx) Generate a copy from e2 to e1.
isDllImported(var) Figure out whether a data symbol should be dllimported
ISX64REF(var) If variable var is a value that will actually be passed as a reference
toElem(e, irs) Convert Expression to backend elem.
toElemDtor(e, irs) Convert Expression to elem, then append destructors for any temporaries created in elem.
toExtSymbol(s) Generate a backend symbol for a frontend symbol
toStringSymbol(str, len, 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(se) Turn StringExp into Symbol.
toTraceGC(irs, e, loc) Replace call to GC allocator with call to tracing GC allocator.
type_zeroCopy(t) Determine if zero bits need to be copied for this backend type


Walter Bright


Boost License 1.0