compiler: make escape analysis work with imported inlineable functions
authorIan Lance Taylor <ian@gcc.gnu.org>
Mon, 10 Jun 2019 19:30:21 +0000 (19:30 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Mon, 10 Jun 2019 19:30:21 +0000 (19:30 +0000)
commitc2f879e1fe5b388fb0fcfee97f97fcbeae765e83
treeb0d0979b7a397c489b1c465432ff8e85c11e67f0
parentf359611b363490b48a7ce0fd021f7e47d8816eb0
compiler: make escape analysis work with imported inlineable functions

    The escape analysis was written before we import inlineable
    function bodies, and in some places it skipped functions that are
    not in the local package. Now that there are imported function
    bodies, make the escape analysis work with them.

    Note that it is necessary for the escape analysis to run on
    imported function bodies, even if they are already tagged. The
    tags only have the information of the parameters (receiver,
    results), but not the internal nodes, e.g. local variables. We
    still need to do the analysis to get all the information. (In the
    future maybe we could export/import escape info for internal
    nodes also, then we don't need to redo the analysis.)

    Also add assertions to ensure that if we analyze the same
    function in multiple places, they'd better agree with each other.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181537

From-SVN: r272124
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/escape.cc
gcc/go/gofrontend/types.h