compile: add type conversion in Type::gc_symbol_pointer

Wrap the return from Type::gc_symbol_pointer with a type conversion to
    uintptr, since the values returned are stored into structure fields
    with that type.
    
    Reviewed-on: https://go-review.googlesource.com/34625

From-SVN: r243978
This commit is contained in:
Ian Lance Taylor 2016-12-30 18:03:39 +00:00
parent 9085a4c146
commit 7d5c50520a
2 changed files with 5 additions and 2 deletions

View File

@ -1,4 +1,4 @@
d9be5f5d7907cbc169424fe2b8532cc3919cad5b
ebe9d824adca053066837b8b19461048ced34aff
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -2138,7 +2138,10 @@ Type::gc_symbol_pointer(Gogo* gogo)
Location bloc = Linemap::predeclared_location();
Bexpression* var_expr =
gogo->backend()->var_expression(t->gc_symbol_var_, VE_rvalue, bloc);
return gogo->backend()->address_expression(var_expr, bloc);
Bexpression* addr_expr =
gogo->backend()->address_expression(var_expr, bloc);
Btype* ubtype = Type::lookup_integer_type("uintptr")->get_backend(gogo);
return gogo->backend()->convert_expression(ubtype, addr_expr, bloc);
}
// A mapping from unnamed types to GC symbol variables.