diff options
author | Richard Stallman <rms@gnu.org> | 1993-09-28 02:01:14 +0000 |
---|---|---|
committer | Richard Stallman <rms@gnu.org> | 1993-09-28 02:01:14 +0000 |
commit | b03d739a609bcd91799638742ad4b62a3264ed1d (patch) | |
tree | 8f8e112762d2d8bbce4c218abecdbe5be64e0f31 | |
parent | 235174ce3024532ed61336cb9e66c0faa0ca9e37 (diff) | |
download | gcc-b03d739a609bcd91799638742ad4b62a3264ed1d.zip gcc-b03d739a609bcd91799638742ad4b62a3264ed1d.tar.gz gcc-b03d739a609bcd91799638742ad4b62a3264ed1d.tar.bz2 |
(pop_init_level): Add special case for nonincremental scalar initializers.
From-SVN: r5503
-rw-r--r-- | gcc/c-typeck.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gcc/c-typeck.c b/gcc/c-typeck.c index 4cdbc2c..9cd22c8 100644 --- a/gcc/c-typeck.c +++ b/gcc/c-typeck.c @@ -5712,6 +5712,28 @@ pop_init_level (implicit) } else if (constructor_type == 0) ; + else if (TREE_CODE (constructor_type) != RECORD_TYPE + && TREE_CODE (constructor_type) != UNION_TYPE + && TREE_CODE (constructor_type) != ARRAY_TYPE + && ! constructor_incremental) + { + /* A nonincremental scalar initializer--just return + the element, after verifying there is just one. */ + if (constructor_elements == 0) + { + error_init ("empty scalar initializer%s", + " for `%s'", NULL); + constructor = error_mark_node; + } + else if (TREE_CHAIN (constructor_elements) != 0) + { + error_init ("extra elements in scalar initializer%s", + " for `%s'", NULL); + constructor = TREE_VALUE (constructor_elements); + } + else + constructor = TREE_VALUE (constructor_elements); + } else if (! constructor_incremental) { if (constructor_erroneous) @@ -5726,6 +5748,7 @@ pop_init_level (implicit) TREE_CONSTANT (constructor) = 1; if (constructor_constant && constructor_simple) TREE_STATIC (constructor) = 1; + resume_momentary (momentary); } } |