Use backend interface for expression statements.
* go-gcc.cc (Gcc_backend::expression_statement): New function. From-SVN: r172051
This commit is contained in:
parent
763ea608b4
commit
cfebcf30ea
4 changed files with 32 additions and 2 deletions
|
@ -1,3 +1,7 @@
|
|||
2011-04-06 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* go-gcc.cc (Gcc_backend::expression_statement): New function.
|
||||
|
||||
2011-04-04 Ian Lance Taylor <iant@google.com>
|
||||
|
||||
* go-gcc.c (class Blabel): Define.
|
||||
|
|
|
@ -166,6 +166,9 @@ class Gcc_backend : public Backend
|
|||
|
||||
// Statements.
|
||||
|
||||
Bstatement*
|
||||
expression_statement(Bexpression*);
|
||||
|
||||
Bstatement*
|
||||
assignment_statement(Bexpression* lhs, Bexpression* rhs, source_location);
|
||||
|
||||
|
@ -206,6 +209,15 @@ get_identifier_from_string(const std::string& str)
|
|||
{
|
||||
return get_identifier_with_length(str.data(), str.length());
|
||||
}
|
||||
|
||||
// An expression as a statement.
|
||||
|
||||
Bstatement*
|
||||
Gcc_backend::expression_statement(Bexpression* expr)
|
||||
{
|
||||
return this->make_statement(expr->get_tree());
|
||||
}
|
||||
|
||||
// Assignment.
|
||||
|
||||
Bstatement*
|
||||
|
|
|
@ -107,6 +107,10 @@ class Backend
|
|||
|
||||
// Statements.
|
||||
|
||||
// Create an expression statement.
|
||||
virtual Bstatement*
|
||||
expression_statement(Bexpression*) = 0;
|
||||
|
||||
// Create an assignment statement.
|
||||
virtual Bstatement*
|
||||
assignment_statement(Bexpression* lhs, Bexpression* rhs,
|
||||
|
|
|
@ -1551,8 +1551,7 @@ class Expression_statement : public Statement
|
|||
do_may_fall_through() const;
|
||||
|
||||
tree
|
||||
do_get_tree(Translate_context* context)
|
||||
{ return this->expr_->get_tree(context); }
|
||||
do_get_tree(Translate_context* context);
|
||||
|
||||
private:
|
||||
Expression* expr_;
|
||||
|
@ -1589,6 +1588,17 @@ Expression_statement::do_may_fall_through() const
|
|||
return true;
|
||||
}
|
||||
|
||||
// Convert to backend representation.
|
||||
|
||||
tree
|
||||
Expression_statement::do_get_tree(Translate_context* context)
|
||||
{
|
||||
tree expr_tree = this->expr_->get_tree(context);
|
||||
Bexpression* bexpr = tree_to_expr(expr_tree);
|
||||
Bstatement* ret = context->backend()->expression_statement(bexpr);
|
||||
return statement_to_tree(ret);
|
||||
}
|
||||
|
||||
// Make an expression statement from an Expression.
|
||||
|
||||
Statement*
|
||||
|
|
Loading…
Add table
Reference in a new issue