From: Richard Kenner Date: Sun, 13 Apr 1997 14:59:54 +0000 (-0400) Subject: (lookup_field): Don't recurse unless FIELD is a RECORD_TYPE or X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=a68b98cf6d528a31bb5f69e7f11f25b1d7d048f0;p=gcc.git (lookup_field): Don't recurse unless FIELD is a RECORD_TYPE or UNION_TYPE. From-SVN: r13870 --- diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 32d5c27a0cf..32111d09dc0 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -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;