Commit 270ca283 by Ian Lance Taylor

compiler: use more accurate array type in Gogo::register_gc_vars

    
    The length of the roots array in Gogo::register_gc_vars was being
    computed incorrectly, potentially leading to type clashes in the back
    end. Compute an accurate length for this array ahead of time.
    
    Reviewed-on: https://go-review.googlesource.com/34624

From-SVN: r243974
parent a9788936
9a89f32811e6b3a29e22dda46e9c23811f562876 d9be5f5d7907cbc169424fe2b8532cc3919cad5b
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.
...@@ -740,9 +740,9 @@ Gogo::register_gc_vars(const std::vector<Named_object*>& var_gc, ...@@ -740,9 +740,9 @@ Gogo::register_gc_vars(const std::vector<Named_object*>& var_gc,
"__size", uint_type); "__size", uint_type);
Location builtin_loc = Linemap::predeclared_location(); Location builtin_loc = Linemap::predeclared_location();
Expression* length = Expression::make_integer_ul(var_gc.size(), NULL, unsigned roots_len = var_gc.size() + this->gc_roots_.size() + 1;
Expression* length = Expression::make_integer_ul(roots_len, NULL,
builtin_loc); builtin_loc);
Array_type* root_array_type = Type::make_array_type(root_type, length); Array_type* root_array_type = Type::make_array_type(root_type, length);
Type* ptdt = Type::make_type_descriptor_ptr_type(); Type* ptdt = Type::make_type_descriptor_ptr_type();
Struct_type* root_list_type = Struct_type* root_list_type =
......
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