diff options
author | Than McIntosh <thanm@google.com> | 2017-05-12 16:36:50 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2017-05-12 16:36:50 +0000 |
commit | da55a299c5159a622bcf04bf3f97707f5335bcad (patch) | |
tree | 6ae18ad0b0ccac78b05dd11e1c152bafdda97e4d /gcc/go/gofrontend/expressions.cc | |
parent | 9dd19976b1b01fd5490fe9f3e840153db8a9610b (diff) | |
download | gcc-da55a299c5159a622bcf04bf3f97707f5335bcad.zip gcc-da55a299c5159a622bcf04bf3f97707f5335bcad.tar.gz gcc-da55a299c5159a622bcf04bf3f97707f5335bcad.tar.bz2 |
compiler: add calling Bfunction Backend::call_expression
Pass in the calling (containing) Bfunction when invoking the Backend
method call_expression(), so as to handle the case where generation of
the call forces the creation of a temp var within the calling
function.
Reviewed-on: https://go-review.googlesource.com/43270
From-SVN: r247981
Diffstat (limited to 'gcc/go/gofrontend/expressions.cc')
-rw-r--r-- | gcc/go/gofrontend/expressions.cc | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/gcc/go/gofrontend/expressions.cc b/gcc/go/gofrontend/expressions.cc index ecafe16..c5e9a0b 100644 --- a/gcc/go/gofrontend/expressions.cc +++ b/gcc/go/gofrontend/expressions.cc @@ -10290,13 +10290,16 @@ Call_expression::do_get_backend(Translate_context* context) bfn = gogo->backend()->convert_expression(bft, bfn, location); } - Bexpression* call = gogo->backend()->call_expression(bfn, fn_args, - bclosure, location); + Bfunction* bfunction = NULL; + if (context->function()) + bfunction = context->function()->func_value()->get_decl(); + Bexpression* call = gogo->backend()->call_expression(bfunction, bfn, + fn_args, bclosure, + location); if (this->results_ != NULL) { Bexpression* bcall_ref = this->call_result_ref(context); - Bfunction* bfunction = context->function()->func_value()->get_decl(); Bstatement* assn_stmt = gogo->backend()->assignment_statement(bfunction, bcall_ref, call, location); |