From: Per Bothner Date: Sat, 11 Sep 1993 20:06:48 +0000 (-0700) Subject: New variable constructor_no_implicit, set by Chill front-end. X-Git-Tag: misc/cutover-egcs-0~8637 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=cc77d4d5c4cd4aec8810d5c3d21ea57b41bedc21;p=gcc.git New variable constructor_no_implicit, set by Chill front-end. From-SVN: r5306 --- diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index b833bcd63e67..926d29230fed 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -5105,6 +5105,9 @@ static tree constructor_pending_elts; /* The SPELLING_DEPTH of this constructor. */ static int constructor_depth; +/* 0 if implicitly pushing constructor levels is allowed. */ +int constructor_no_implicit = 0; /* 0 for C; 1 for some other languages. */ + /* 1 if this constructor level was entered implicitly. */ static int constructor_implicit; @@ -6127,7 +6130,7 @@ process_init_element (value) value = orig_value; /* Otherwise, if we have come to a subaggregate, and we don't have an element of its type, push into it. */ - else if (value != 0 + else if (value != 0 && !constructor_no_implicit && TYPE_MAIN_VARIANT (TREE_TYPE (value)) != fieldtype && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE || fieldcode == UNION_TYPE)) @@ -6184,7 +6187,7 @@ process_init_element (value) value = orig_value; /* Otherwise, if we have come to a subaggregate, and we don't have an element of its type, push into it. */ - else if (value != 0 + else if (value != 0 && !constructor_no_implicit && TYPE_MAIN_VARIANT (TREE_TYPE (value)) != fieldtype && (fieldcode == RECORD_TYPE || fieldcode == ARRAY_TYPE || fieldcode == UNION_TYPE)) @@ -6221,7 +6224,7 @@ process_init_element (value) value = orig_value; /* Otherwise, if we have come to a subaggregate, and we don't have an element of its type, push into it. */ - else if (value != 0 + else if (value != 0 && !constructor_no_implicit && TYPE_MAIN_VARIANT (TREE_TYPE (value)) != elttype && (eltcode == RECORD_TYPE || eltcode == ARRAY_TYPE || eltcode == UNION_TYPE))