compiler: fix buglet in function inlining related to sink names
authorIan Lance Taylor <ian@gcc.gnu.org>
Fri, 15 Nov 2019 03:28:49 +0000 (03:28 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 15 Nov 2019 03:28:49 +0000 (03:28 +0000)
commitf543bdd3f997a82627fee4bd3704dd939ece809d
treedbf9c33c59bf0a8dc30cb5e4970d3790d1403db9
parent942c4b32b0553378f843e606bb56c417acbdc4be
compiler: fix buglet in function inlining related to sink names

    When the compiler writes an inlinable function to the export data,
    parameter names are written out (in Export::write_name) using the
    Gogo::message_name as opposed to a raw/encoded name. This means that
    sink parameters (those named "_") get created with the name "_"
    instead of "._" (the name created by the lexer/parser). This confuses
    Gogo::is_sink_name, which looks for the latter sequence and not just
    "_". This can cause issues later on if an inlinable function is
    imported and fed through the rest of the compiler (things that are
    sinks are no recognized as such). To fix these issues, change
    Gogo::is_sink_name to return true for either variants ("_" or "._").

    Fixes golang/go#35586.

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

From-SVN: r278275
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/gogo.h