Commit b8106e8f by Ian Lance Taylor

compiler: make sure type descriptor initializers go in .rodata

    
    When creating type descriptor variables, the compiler (specifically
    Type::make_type_descriptor_var) invokes the immutable_struct() and
    immutable_struct_set_init() back end methods, so as to insure that
    these items go into the ".rodata" section of the generate object file.
    The expression initializers for these variables can contain nested
    subexpressions, however, and these subexpressions were not always
    being placed into .rodata. This patch changes the backend-gen code for
    slice initializers to emit implicit variables into .rodata if those
    initializers are part of a type descriptor init.
    
    Reviewed-on: https://go-review.googlesource.com/132596

From-SVN: r264181
parent 04dad37c
da249ffd264154cc992e76ff03f91f700d3bf53e 06e688ff6d829c8de3735e9f59b61b373afc596f
The first line of this file holds the git revision number of the last The first line of this file holds the git revision number of the last
merge done from the gofrontend repository. merge done from the gofrontend repository.
...@@ -4453,7 +4453,8 @@ Unary_expression::do_get_backend(Translate_context* context) ...@@ -4453,7 +4453,8 @@ Unary_expression::do_get_backend(Translate_context* context)
// initialize the value once, so we can use this directly // initialize the value once, so we can use this directly
// rather than copying it. In that case we can't make it // rather than copying it. In that case we can't make it
// read-only, because the program is permitted to change it. // read-only, because the program is permitted to change it.
copy_to_heap = context->function() != NULL; copy_to_heap = (context->function() != NULL
|| context->is_const());
} }
std::string asm_name(go_selectively_encode_id(var_name)); std::string asm_name(go_selectively_encode_id(var_name));
Bvariable* implicit = Bvariable* implicit =
......
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