Commit de001ec7 by Ian Lance Taylor

compiler: include global variable preinit blocks in ast dumps

    
    Dump out the blocks corresponding to variable pre-inits when
    -fgo-dump-ast is in effect. Each preinit block is prefixed with a
    comment indicating the variable it is initializing.
    
    Reviewed-on: https://go-review.googlesource.com/118636

From-SVN: r261555
parent 1cc56f07
6743db0ed81e313acf66c00a4ed0e2dcaaca2c9f
1f07926263b6d14edb6abd6a00e6385190d30d0e
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.
......@@ -29,7 +29,7 @@ class Ast_dump_traverse_blocks_and_functions : public Traverse
{
public:
Ast_dump_traverse_blocks_and_functions(Ast_dump_context* ast_dump_context)
: Traverse(traverse_blocks | traverse_functions),
: Traverse(traverse_blocks | traverse_functions | traverse_variables),
ast_dump_context_(ast_dump_context)
{ }
......@@ -40,6 +40,9 @@ class Ast_dump_traverse_blocks_and_functions : public Traverse
int
function(Named_object*);
int
variable(Named_object*);
private:
Ast_dump_context* ast_dump_context_;
};
......@@ -150,6 +153,27 @@ Ast_dump_traverse_blocks_and_functions::function(Named_object* no)
return TRAVERSE_CONTINUE;
}
// Dump variable preinits
int
Ast_dump_traverse_blocks_and_functions::variable(Named_object* no)
{
if (!no->is_variable())
return TRAVERSE_CONTINUE;
Variable* var = no->var_value();
if (var->has_pre_init())
{
this->ast_dump_context_->ostream() << "// preinit block for var "
<< no->message_name() << "\n";
var->preinit()->traverse(this);
}
return TRAVERSE_CONTINUE;
}
// Class Ast_dump_context.
Ast_dump_context::Ast_dump_context(std::ostream* out /* = NULL */,
......
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