From 3c3fa1471c4de6abbf9841155c0f2865bfc099d6 Mon Sep 17 00:00:00 2001 From: Richard Stallman Date: Mon, 17 Aug 1992 18:31:29 +0000 Subject: [PATCH] (digest_init): Use TYPE_MAIN_VARIANT comparing type of inside_init. (process_init_constructor): Warn about partly bracketed initializers. From-SVN: r1875 --- gcc/c-typeck.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 33200b37300..18f2ed50136 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -4603,15 +4603,16 @@ digest_init (type, init, tail, require_constant, constructor_constant, ofwhat) from an expression of the same type, optionally with braces. For an array, this is allowed only for a string constant. */ - if (inside_init && (TREE_TYPE (inside_init) == type - || (code == ARRAY_TYPE && TREE_TYPE (inside_init) - && comptypes (TREE_TYPE (inside_init), type)) - || (code == POINTER_TYPE - && TREE_TYPE (inside_init) != 0 - && (TREE_CODE (TREE_TYPE (inside_init)) == ARRAY_TYPE - || TREE_CODE (TREE_TYPE (inside_init)) == FUNCTION_TYPE) - && comptypes (TREE_TYPE (TREE_TYPE (inside_init)), - TREE_TYPE (type))))) + if (inside_init + && (TYPE_MAIN_VARIANT (TREE_TYPE (inside_init)) == TYPE_MAIN_VARIANT (type) + || (code == ARRAY_TYPE && TREE_TYPE (inside_init) + && comptypes (TREE_TYPE (inside_init), type)) + || (code == POINTER_TYPE + && TREE_TYPE (inside_init) != 0 + && (TREE_CODE (TREE_TYPE (inside_init)) == ARRAY_TYPE + || TREE_CODE (TREE_TYPE (inside_init)) == FUNCTION_TYPE) + && comptypes (TREE_TYPE (TREE_TYPE (inside_init)), + TREE_TYPE (type))))) { if (code == POINTER_TYPE && (TREE_CODE (TREE_TYPE (inside_init)) == ARRAY_TYPE @@ -4867,7 +4868,11 @@ process_init_constructor (type, init, elts, constant_value, constant_element, no matter how the data was given to us. */ if (elts) - tail = *elts; + { + if (extra_warnings) + warning ("aggregate has a partly bracketed initializer"); + tail = *elts; + } else tail = CONSTRUCTOR_ELTS (init); -- 2.30.2