https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102138

--- Comment #11 from Drea Pinski <pinskia at gcc dot gnu.org> ---
  Bexpression* var_expr =
      gogo->backend()->var_expression(t->type_descriptor_var_, location);
  Bexpression* var_addr =
      gogo->backend()->address_expression(var_expr, location);

This fixes the issue:
```
diff --git a/gcc/go/go-gcc.cc b/gcc/go/go-gcc.cc
index aa7939b2438..b61331b2419 100644
--- a/gcc/go/go-gcc.cc
+++ b/gcc/go/go-gcc.cc
@@ -1721,7 +1721,7 @@ Gcc_backend::address_expression(Bexpression* bexpr,
Location location)
   tree expr = bexpr->get_tree();
   if (expr == error_mark_node)
     return this->error_expression();
-
+  TREE_ADDRESSABLE (expr) = 1;
   tree ret = build_fold_addr_expr_loc(location.gcc_location(), expr);
   return this->make_expression(ret);

```

But I doubt it is correct.

Reply via email to