diff options
Diffstat (limited to 'gcc/go/gofrontend/statements.h')
-rw-r--r-- | gcc/go/gofrontend/statements.h | 44 |
1 files changed, 41 insertions, 3 deletions
diff --git a/gcc/go/gofrontend/statements.h b/gcc/go/gofrontend/statements.h index 3e85243..432da30 100644 --- a/gcc/go/gofrontend/statements.h +++ b/gcc/go/gofrontend/statements.h @@ -187,7 +187,7 @@ class Statement // Make a block statement from a Block. This is an embedded list of // statements which may also include variable definitions. - static Statement* + static Block_statement* make_block_statement(Block*, Location); // Make an increment statement. @@ -956,11 +956,13 @@ class Block_statement : public Statement // Export a block for a block statement. static void - export_block(Export_function_body*, Block*); + export_block(Export_function_body*, Block*, bool is_lowered_for_statement); // Import a block statement, returning the block. + // *IS_LOWERED_FOR_STATEMENT reports whether this block statement + // was lowered from a for statement. static Block* - do_import(Import_function_body*, Location); + do_import(Import_function_body*, Location, bool* is_lowered_for_statement); protected: int @@ -1409,6 +1411,10 @@ class Goto_statement : public Statement label() const { return this->label_; } + // Import a goto statement. + static Statement* + do_import(Import_function_body*, Location); + protected: int do_traverse(Traverse*); @@ -1423,6 +1429,13 @@ class Goto_statement : public Statement Bstatement* do_get_backend(Translate_context*); + int + do_inlining_cost() + { return 5; } + + void + do_export_statement(Export_function_body*); + void do_dump_statement(Ast_dump_context*) const; @@ -1455,6 +1468,13 @@ class Goto_unnamed_statement : public Statement Bstatement* do_get_backend(Translate_context* context); + int + do_inlining_cost() + { return 5; } + + void + do_export_statement(Export_function_body*); + void do_dump_statement(Ast_dump_context*) const; @@ -1477,6 +1497,10 @@ class Label_statement : public Statement label() const { return this->label_; } + // Import a label or unnamed label. + static Statement* + do_import(Import_function_body*, Location); + protected: int do_traverse(Traverse*); @@ -1484,6 +1508,13 @@ class Label_statement : public Statement Bstatement* do_get_backend(Translate_context*); + int + do_inlining_cost() + { return 1; } + + void + do_export_statement(Export_function_body*); + void do_dump_statement(Ast_dump_context*) const; @@ -1506,6 +1537,13 @@ class Unnamed_label_statement : public Statement Bstatement* do_get_backend(Translate_context* context); + int + do_inlining_cost() + { return 1; } + + void + do_export_statement(Export_function_body*); + void do_dump_statement(Ast_dump_context*) const; |