aboutsummaryrefslogtreecommitdiff
path: root/gcc/go/gofrontend/expressions.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@gcc.gnu.org>2019-06-06 23:34:00 +0000
committerIan Lance Taylor <ian@gcc.gnu.org>2019-06-06 23:34:00 +0000
commit93cbebde76ac7de2d69b223d99acb39e0370687f (patch)
tree66c133d573a219583b5c460b329b900c18ee0ac6 /gcc/go/gofrontend/expressions.h
parent5e664ed0938357392823d2a43be8a196526dd97c (diff)
downloadgcc-93cbebde76ac7de2d69b223d99acb39e0370687f.zip
gcc-93cbebde76ac7de2d69b223d99acb39e0370687f.tar.gz
gcc-93cbebde76ac7de2d69b223d99acb39e0370687f.tar.bz2
compiler: permit inlining temporary statements and references
This increases the number of inlinable functions from 439 to 455. An example is math/bits.Mul32, which uses temporaries to handle the tuple assignment. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/180837 From-SVN: r272022
Diffstat (limited to 'gcc/go/gofrontend/expressions.h')
-rw-r--r--gcc/go/gofrontend/expressions.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/go/gofrontend/expressions.h b/gcc/go/gofrontend/expressions.h
index fc1c5a8..09c71ad 100644
--- a/gcc/go/gofrontend/expressions.h
+++ b/gcc/go/gofrontend/expressions.h
@@ -1531,6 +1531,9 @@ class Temporary_reference_expression : public Expression
set_is_lvalue()
{ this->is_lvalue_ = true; }
+ static Expression*
+ do_import(Import_function_body*, Location);
+
protected:
Type*
do_type();
@@ -1543,6 +1546,13 @@ class Temporary_reference_expression : public Expression
do_copy()
{ return make_temporary_reference(this->statement_, this->location()); }
+ int
+ do_inlining_cost() const
+ { return 1; }
+
+ void
+ do_export(Export_function_body*) const;
+
bool
do_is_addressable() const
{ return true; }