dmd.backend.oper

Compiler implementation of the D programming language.

Members

Enums

_OTbinary
anonymousenum _OTbinary

Various types of operators: OTbinary binary OTunary unary OTleaf leaf OTcommut commutative (e1 op e2) == (e2 op e1) (assoc == !=) OTassoc associative (e1 op (e2 op e3)) == ((e1 op e2) op e3) (also commutative) OTassign assignment = op= i++ i-- i=-i str= OTpost post inc or post dec operator OTeop0e if (e op 0) => e OTeop00 if (e op 0) => 0 OTeop1e if (e op 1) => e OTsideff there are side effects to the operator (assign call post ?: && ||) OTconv type conversion operator that could appear on lhs of assignment operator OTlogical logical operator (result is 0 or 1) OTwid high order bits of operation are irrelevant OTopeq an op= operator OTop an operator that has a corresponding op= OTcall function call OTrtol operators that evaluate right subtree first then left OTrel == != < <= > >= operators OTrel2 < <= > >= operators OTdef definition operator (assign call post asm) OTae potential common subexpression operator OTboolnop operation is a nop if boolean result is desired

Functions

convidx
int convidx(OPER op)

Conversion operators. Convert from conversion operator to conversion index parallel array invconvtab[] in cgelem.c

rel_not
OPER rel_not(OPER op)

Determine things about relational operators.

swaprel (from dmd.backend.cgelem)
OPER swaprel(OPER op) via public import dmd.backend.cgelem : swaprel;

Swap relational operators (like if we swapped the leaves).

Variables

_rel_integral
ubyte[RELMAX] _rel_integral;

If operands are integral types

_rel_not
ubyte[RELMAX] _rel_not;

Logical negation

_rel_swap
ubyte[RELMAX] _rel_swap;

Operand swap

opcost
ubyte[OPMAX] opcost;

Determine the cost of evaluating an operator.

optab1
ubyte[OPMAX] optab1;

Determine properties of an elem. EBIN binary node? EUNA unary node? EOP operator node (unary or binary)? ERTOL right to left evaluation (left to right is default) Eunambig unambiguous definition elem?

Meta