Commit 5447e8e2 by Ian Lance Taylor

compiler: permit inlining constant expressions and expression statements

    
    This relatively minor change increases the number of inlinable
    functions/methods in the standard library from 983 to 2179.
    
    In particular it permits inlining math/bits/RotateLeftNN.  This
    restores the speed of crypto/sha256 back to what it was before the
    update to 1.13beta1.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/194340

From-SVN: r275558
parent 77df40e8
c6097f269d2b3dbfd5204cf7e3d0b9f8d7ec2b5e
5c3f52ffbae7a9bb59bce63cd2cffdd8af8f4a92
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -3283,6 +3283,10 @@ class Const_expression : public Expression
Bexpression*
do_get_backend(Translate_context* context);
int
do_inlining_cost() const
{ return 1; }
// When exporting a reference to a const as part of a const
// expression, we export the value. We ignore the fact that it has
// a name.
......
......@@ -158,6 +158,10 @@ Statement::import_statement(Import_function_body* ifb, Location loc)
return Goto_statement::do_import(ifb, loc);
Expression* lhs = Expression::import_expression(ifb, loc);
if (ifb->match_c_string(" //"))
return Statement::make_statement(lhs, true);
ifb->require_c_string(" = ");
Expression* rhs = Expression::import_expression(ifb, loc);
return Statement::make_assignment(lhs, rhs, loc);
......@@ -2089,6 +2093,14 @@ Expression_statement::do_may_fall_through() const
return true;
}
// Export an expression statement.
void
Expression_statement::do_export_statement(Export_function_body* efb)
{
this->expr_->export_expression(efb);
}
// Convert to backend representation.
Bstatement*
......
......@@ -924,6 +924,13 @@ class Expression_statement : public Statement
bool
do_may_fall_through() const;
int
do_inlining_cost()
{ return 0; }
void
do_export_statement(Export_function_body*);
Bstatement*
do_get_backend(Translate_context* context);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment