Commit 2887665c by Ian Lance Taylor

Fix self-referential struct via function and array.

From-SVN: r169339
parent b5fa435a
...@@ -3763,7 +3763,7 @@ Struct_type::fill_in_tree(Gogo* gogo, tree type) ...@@ -3763,7 +3763,7 @@ Struct_type::fill_in_tree(Gogo* gogo, tree type)
// Don't follow pointers yet, so that we don't get confused by a // Don't follow pointers yet, so that we don't get confused by a
// pointer to an array of this struct type. // pointer to an array of this struct type.
tree field_type_tree; tree field_type_tree;
if (p->type()->points_to() != NULL) if (p->type()->points_to() != NULL || p->type()->function_type() != NULL)
{ {
field_type_tree = ptr_type_node; field_type_tree = ptr_type_node;
has_pointer = true; has_pointer = true;
...@@ -3793,7 +3793,8 @@ Struct_type::fill_in_tree(Gogo* gogo, tree type) ...@@ -3793,7 +3793,8 @@ Struct_type::fill_in_tree(Gogo* gogo, tree type)
p != this->fields_->end(); p != this->fields_->end();
++p, field = DECL_CHAIN(field)) ++p, field = DECL_CHAIN(field))
{ {
if (p->type()->points_to() != NULL) if (p->type()->points_to() != NULL
|| p->type()->function_type() != NULL)
TREE_TYPE(field) = p->type()->get_tree(gogo); TREE_TYPE(field) = p->type()->get_tree(gogo);
} }
} }
......
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