diff options
author | Richard Stallman <rms@gnu.org> | 1992-08-17 18:31:29 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1992-08-17 18:31:29 +0000 |
commit | 3c3fa1471c4de6abbf9841155c0f2865bfc099d6 (patch) | |
tree | f4ba7b53a94351f463039e995a33e0c7069e6d72 /gcc | |
parent | b5b6ad4638b2c30f776cee513caaf68876d773a3 (diff) | |
download | gcc-3c3fa1471c4de6abbf9841155c0f2865bfc099d6.zip gcc-3c3fa1471c4de6abbf9841155c0f2865bfc099d6.tar.gz gcc-3c3fa1471c4de6abbf9841155c0f2865bfc099d6.tar.bz2 |
(digest_init): Use TYPE_MAIN_VARIANT comparing type of inside_init.
(process_init_constructor): Warn about partly bracketed initializers.
From-SVN: r1875
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/c-typeck.c | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 33200b3..18f2ed5 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); |