(lookup_field): Don't recurse unless FIELD is a RECORD_TYPE or

UNION_TYPE.

From-SVN: r13870
This commit is contained in:
Richard Kenner 1997-04-13 10:59:54 -04:00
parent 06140bdfa1
commit a68b98cf6d
1 changed files with 12 additions and 4 deletions

View File

@ -1,5 +1,5 @@
/* Build expressions with type checking for C compiler.
Copyright (C) 1987, 88, 91, 92-6, 1997 Free Software Foundation, Inc.
Copyright (C) 1987, 88, 91-6, 1997 Free Software Foundation, Inc.
This file is part of GNU CC.
@ -1151,10 +1151,13 @@ lookup_field (type, component, indirect)
/* Step through all anon unions in linear fashion. */
while (DECL_NAME (field_array[bot]) == NULL_TREE)
{
tree anon, junk;
tree anon = 0, junk;
field = field_array[bot++];
anon = lookup_field (TREE_TYPE (field), component, &junk);
if (TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE
|| TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)
anon = lookup_field (TREE_TYPE (field), component, &junk);
if (anon != NULL_TREE)
{
*indirect = field;
@ -1190,7 +1193,12 @@ lookup_field (type, component, indirect)
if (DECL_NAME (field) == NULL_TREE)
{
tree junk;
tree anon = lookup_field (TREE_TYPE (field), component, &junk);
tree anon = 0;
if (TREE_CODE (TREE_TYPE (field)) == RECORD_TYPE
|| TREE_CODE (TREE_TYPE (field)) == UNION_TYPE)
anon = lookup_field (TREE_TYPE (field), component, &junk);
if (anon != NULL_TREE)
{
*indirect = field;