# dmd.inlinecost

Compute the cost of inlining a function call by counting expressions.

#### Authors

Walter Bright

#### License

Boost License 1.0

Source: inlinecost.d

Documentation: https://dlang.org/phobos/dmd_inlinecost.html

Coverage: https://codecov.io/gh/dlang/dmd/src/master/src/dmd/inlinecost.d

- `tooCostly`

  #### Declaration

  `pure nothrow bool `tooCostly`(int `cost`);`

  Determine if too expensive to inline.

  #### Parameters

  `int `cost`` | `cost` of inlining

  #### Return Value

  `true` if too costly

- `inlineCostExpression`

  #### Declaration

  `int `inlineCostExpression`(Expression `e`);`

  Determine cost of inlining Expression

  #### Parameters

  `Expression `e`` | Expression to determine cost of

  #### Return Value

  cost of inlining `e`

- `inlineCostFunction`

  #### Declaration

  `int `inlineCostFunction`(FuncDeclaration `fd`, bool `hasthis`, bool `hdrscan`);`

  Determine cost of inlining function

  #### Parameters

  `FuncDeclaration `fd`` | function to determine cost of
  `bool `hasthis`` | if the function call has explicit 'this' expression
  `bool `hdrscan`` | if generating a header file

  #### Return Value

  cost of inlining `fd`

- `isInlinableNestedAggregate`

  #### Declaration

  `AggregateDeclaration `isInlinableNestedAggregate`(DeclarationExp `e`);`

  Indicates if a nested aggregate prevents or not a function to be inlined. It's used to compute the cost but also to avoid a copy of the aggregate while the inliner processes.

  #### Parameters

  `DeclarationExp `e`` | the declaration expression that may represent an aggregate.

  #### Return Value

  `null` if ``e`` is not an aggregate or if it is an aggregate that doesn't permit inlining, and the aggregate otherwise.