Perform constant folding.


Walter Bright

Source: optimize.d

  • Declaration

    Expression expandVar(int result, VarDeclaration v);

    If variable has a const initializer, return that initializer.

    Return Value

    initializer if there is one, null if not, ErrorExp if error

  • Declaration

    Expression Expression_optimize(Expression e, int result, bool keepLvalue);

    Constant fold an Expression.


    Expression e

    expression to const fold; this may get modified in-place

    int result

    WANTvalue, WANTexpand, or both

    bool keepLvalue

    e is an lvalue, and keep it as an lvalue since it is an argument to a ref or out parameter, or the operand of & operator

    Return Value

    Constant folded version of e