aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1992-08-17 18:31:29 +0000
committerRichard Stallman <rms@gnu.org>1992-08-17 18:31:29 +0000
commit3c3fa1471c4de6abbf9841155c0f2865bfc099d6 (patch)
treef4ba7b53a94351f463039e995a33e0c7069e6d72
parentb5b6ad4638b2c30f776cee513caaf68876d773a3 (diff)
downloadgcc-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
-rw-r--r--gcc/c-typeck.c25
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);