• Ian Lance Taylor's avatar
    cmd/gc: treat non-local vars inlined into wrapper as escaping · ec0ebc22
    Ian Lance Taylor authored
    The compiler has a phase ordering problem.  Escape analysis runs
    before wrapper generation.  When a generated wrapper calls a method
    defined in a different package, if that call is inlined, there will be
    no escape information for the variables defined in the inlined call.
    Those variables will be placed on the stack, which fails if they
    actually do escape.
    
    There are probably various complex ways to fix this.  This is a simple
    way to avoid it: when a generated wrapper calls a method defined in a
    different package, treat all local variables as escaping.
    
    Fixes #9537.
    
    Change-Id: I530f39346de16ad173371c6c3f69cc189351a4e9
    Reviewed-on: https://go-review.googlesource.com/3092Reviewed-by: 's avatarRuss Cox <rsc@golang.org>
    ec0ebc22
inl.c 23.6 KB