dmd.e2ir
Converts expressions to Intermediate Representation (IR) for the backend.
License
Source: e2ir.d
Documentation: https://dlang.org/phobos/dmd_e2ir.html
-
Declaration
elem*
elAssign
(elem*e1
, elem*e2
, Typet
, type*tx
);Generate a copy from
e2
toe1
.Parameters
elem*
e1
lvalue
elem*
e2
rvalue
Type
t
value type
type*
tx
if !
null
, thent
converted to C typeReturn Value
generated elem
-
Declaration
bool
type_zeroCopy
(type*t
);Determine if zero bits need to be copied for this backend type
Parameters
type*
t
backend type
Return Value
true
if 0 bits -
Declaration
Symbol*
toStringSymbol
(const(char)*str
, size_tlen
, size_tsz
);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.Parameters
const(char)*
str
string
size_t
len
number of code units in string
size_t
sz
number of bytes per code unit
Return Value
Symbol
-
Declaration
Symbol*
toStringSymbol
(StringExpse
);Turn StringExp into Symbol.
-
Declaration
void
toTraceGC
(IRState*irs
, elem*e
, const ref Locloc
);Replace call to GC allocator with call to tracing GC allocator.
Parameters
IRState*
irs
to get function from
elem*
e
elem to modify in place
Loc
loc
to get file/line from
-
Declaration
elem*
toElemDtor
(Expressione
, IRState*irs
);Convert Expression to elem, then append destructors for any temporaries created in elem.
Parameters
Expression
e
Expression to convert
IRState*
irs
context
Return Value
generated elem tree
-
Declaration
elem*
addressElem
(elem*e
, Typet
, boolalwaysCopy
= false);Take address of an elem. Accounts for
e
being an rvalue by assigning the rvalue to a temp.Parameters
elem*
e
elem to take address of
Type
t
Type of elem
bool
alwaysCopy
when
true
, always copye
to a tmpReturn Value
the equivalent of &
e
-
Declaration
void
clearStringTab
();Reset stringTab[] between object files being emitted, because the symbols are local.