Message ID | mcr4oae1u6o.fsf@google.com |
---|---|
State | New |
Headers | show |
diff -r 2e4bc89f0e29 go/expressions.cc --- a/go/expressions.cc Wed Dec 15 14:40:54 2010 -0800 +++ b/go/expressions.cc Wed Dec 15 15:34:46 2010 -0800 @@ -9628,7 +9628,13 @@ return error_mark_node; gcc_assert(TREE_CODE(TREE_TYPE(struct_tree)) == RECORD_TYPE); tree field = TYPE_FIELDS(TREE_TYPE(struct_tree)); - gcc_assert(field != NULL_TREE); + if (field == NULL_TREE) + { + // This can happen for a type which refers to itself indirectly + // and then turns out to be erroneous. + gcc_assert(saw_errors()); + return error_mark_node; + } for (unsigned int i = this->field_index_; i > 0; --i) { field = DECL_CHAIN(field);