aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/gofrontend/expressions.cc
diff options
context:
space:
mode:
authorThan McIntosh <thanm@google.com>2017-05-12 16:36:50 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2017-05-12 16:36:50 +0000
commitda55a299c5159a622bcf04bf3f97707f5335bcad (patch)
tree6ae18ad0b0ccac78b05dd11e1c152bafdda97e4d /gcc/go/gofrontend/expressions.cc
parent9dd19976b1b01fd5490fe9f3e840153db8a9610b (diff)
downloadgcc-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.cc9
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);