diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2014-12-10 20:38:13 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2014-12-10 20:38:13 +0000 |
commit | c44f74e4cb760a204865655d2abc80276d7b6c4e (patch) | |
tree | 55d23d5573be15e9f8432f098d0293e7ef1dc338 /gcc/go/gofrontend/expressions.h | |
parent | 1b457aa45d402df7fbf1dbd818f6d38a4c447aaa (diff) | |
download | gcc-c44f74e4cb760a204865655d2abc80276d7b6c4e.zip gcc-c44f74e4cb760a204865655d2abc80276d7b6c4e.tar.gz gcc-c44f74e4cb760a204865655d2abc80276d7b6c4e.tar.bz2 |
re PR go/61316 (gccgo: spurious "incompatible types in assignment" error [GoSmith])
PR go/61316
compiler: Don't lower multi-valued arguments into temporaries.
From-SVN: r218606
Diffstat (limited to 'gcc/go/gofrontend/expressions.h')
-rw-r--r-- | gcc/go/gofrontend/expressions.h | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/gcc/go/gofrontend/expressions.h b/gcc/go/gofrontend/expressions.h index d96df28..398709e 100644 --- a/gcc/go/gofrontend/expressions.h +++ b/gcc/go/gofrontend/expressions.h @@ -1632,7 +1632,7 @@ class Call_expression : public Expression fn_(fn), args_(args), type_(NULL), results_(NULL), call_(NULL), call_temp_(NULL), expected_result_count_(0), is_varargs_(is_varargs), varargs_are_lowered_(false), types_are_determined_(false), - is_deferred_(false), issued_error_(false) + is_deferred_(false), issued_error_(false), is_multi_value_arg_(false) { } // The function to call. @@ -1703,6 +1703,17 @@ class Call_expression : public Expression bool issue_error(); + // Whether this call returns multiple results that are used as an + // multi-valued argument. + bool + is_multi_value_arg() const + { return this->is_multi_value_arg_; } + + // Note this call is used as a multi-valued argument. + void + set_is_multi_value_arg() + { this->is_multi_value_arg_ = true; } + protected: int do_traverse(Traverse*); @@ -1806,6 +1817,8 @@ class Call_expression : public Expression // results and uses. This is to avoid producing multiple errors // when there are multiple Call_result_expressions. bool issued_error_; + // True if this call is used as an argument that returns multiple results. + bool is_multi_value_arg_; }; // An expression which represents a pointer to a function. |