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
This commit is contained in:
parent
a9788936a1
commit
270ca283ff
|
@ -1,4 +1,4 @@
|
|||
9a89f32811e6b3a29e22dda46e9c23811f562876
|
||||
d9be5f5d7907cbc169424fe2b8532cc3919cad5b
|
||||
|
||||
The first line of this file holds the git revision number of the last
|
||||
merge done from the gofrontend repository.
|
||||
|
|
|
@ -740,9 +740,9 @@ Gogo::register_gc_vars(const std::vector<Named_object*>& var_gc,
|
|||
"__size", uint_type);
|
||||
|
||||
Location builtin_loc = Linemap::predeclared_location();
|
||||
Expression* length = Expression::make_integer_ul(var_gc.size(), NULL,
|
||||
builtin_loc);
|
||||
|
||||
unsigned roots_len = var_gc.size() + this->gc_roots_.size() + 1;
|
||||
Expression* length = Expression::make_integer_ul(roots_len, NULL,
|
||||
builtin_loc);
|
||||
Array_type* root_array_type = Type::make_array_type(root_type, length);
|
||||
Type* ptdt = Type::make_type_descriptor_ptr_type();
|
||||
Struct_type* root_list_type =
|
||||
|
|
Loading…
Reference in New Issue