dmd.inline

Performs inlining, which is an optimization pass enabled with the -inline flag.

Discussion

The AST is traversed, and every function call is considered for inlining using inlinecost.d. The function call is then inlined if this cost is below a threshold.

Authors

Walter Bright

Source: inline.d

  • Declaration

    void inlineScanModule(Module m);

    Scan function implementations in Module m looking for functions that can be inlined, and inline them in situ.

    Parameters

    Module m

    module to scan

  • Declaration

    Expression inlineCopy(Expression e, Scope* sc);

    Perform the "inline copying" of a default argument for a function parameter.

    Todo: The hack for https://issues.dlang.org/show_bug.cgi?id=4820 case is still questionable. Perhaps would have to handle a delegate expression with 'null' context properly in front-end.