# How to debug inlining fails?

**URL:** https://discourse.julialang.org/t/how-to-debug-inlining-fails/50658
**Category:** General Usage
**Tags:** inference
**Created:** [November 23, 2020, 11:15pm UTC](https://discourse.julialang.org/t/how-to-debug-inlining-fails/50658 "2020-11-23T23:15:59Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![dlfivefifty](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/dlfivefifty/32/1959_2.png) [@dlfivefifty](https://discourse.julialang.org/u/dlfivefifty)
#### Post date: [November 23, 2020, 11:15pm UTC](https://discourse.julialang.org/t/how-to-debug-inlining-fails/50658/1 "2020-11-23T23:15:59Z")

</div>

I have a trait based system in LazyArrays.jl that isn’t inlining, which seems to be breaking type inference. Are there any tips for debugging why this is?

Sorry for the non-MWE but the code is below. For some reason `@inferred _broadcastarray2broadcasted(a)` fails but `@inferred _broadcastarray2broadcasted(MemoryLayout(a), a)` is fine, even though I’ve just copy-and-pasted the method definition.

The relevant lines are:

```julia
@inline _broadcastarray2broadcasted(lay::BroadcastLayout, a) = broadcasted(call(lay, a), map(_broadcastarray2broadcasted, arguments(lay, a))...)
@inline _broadcastarray2broadcasted(lay::BroadcastLayout, a::BroadcastArray) = broadcasted(call(lay, a), map(_broadcastarray2broadcasted, arguments(lay, a))...)
@inline _broadcastarray2broadcasted(_, a) = a
@inline _broadcastarray2broadcasted(lay, a::BroadcastArray) = error("Overload LazyArrays._broadcastarray2broadcasted(::$(lay), _)")
@inline _broadcastarray2broadcasted(::DualLayout{ML}, a) where ML = _broadcastarray2broadcasted(ML(), a)
@inline _broadcastarray2broadcasted(a) = _broadcastarray2broadcasted(MemoryLayout(a), a)

```

---

<div class="post-metadata">

### Author: ![tim.holy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tim.holy/32/52_2.png) [@tim.holy](https://discourse.julialang.org/u/tim.holy)
#### Post date: [November 24, 2020, 6:11pm UTC](https://discourse.julialang.org/t/how-to-debug-inlining-fails/50658/2 "2020-11-24T18:11:23Z")

</div>

Julia master has `Base.print_statement_costs`, maybe that will help. See also [Inference · The Julia Language](https://docs.julialang.org/en/v1.6-dev/devdocs/inference/#The-inlining-algorithm-(inline_worthy))
