mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-25 19:11:21 +08:00
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
This commit is contained in:
parent
77df40e812
commit
5447e8e2e2
@ -1,4 +1,4 @@
|
||||
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);
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user