compiler: use a single temporary for calls with multiple results
commit5731103c14d9676c2821fbea321434c02594a253
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Jul 2017 17:42:05 +0000 (28 17:42 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 28 Jul 2017 17:42:05 +0000 (28 17:42 +0000)
treefa10dc5e6dd7a1545853a515294f4213cdb38e31
parent846782cc97559575fe07238a85e42f4d978f5582
compiler: use a single temporary for calls with multiple results

    For calls that return multiple results we used to create a temporary
    of struct type to hold the results, and also create a separate
    temporary for each result.  Then the call expression would copy each
    result out of the struct to the temporary, and Call_result_expression
    would refer to the desired temporary.

    Simplify this to just use a single temporary of struct type, and
    change Call_result_expression to fetch a field of the struct.

    This may reduce some incorrect tree sharing in the backend code.

    Reviewed-on: https://go-review.googlesource.com/51770

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250682 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc
gcc/go/gofrontend/expressions.h