aboutsummaryrefslogtreecommitdiff
path: root/gcc/c
diff options
context:
space:
mode:
authorJoern Rennecke <joern.rennecke@embecosm.com>2013-07-04 22:20:34 +0000
committerJoern Rennecke <amylaar@gcc.gnu.org>2013-07-04 23:20:34 +0100
commit40d3d53015c20f58fff7e6b098d0c943d3aea2b0 (patch)
tree4559cbb5c6a77bed54dfc0e0b4f1a07ff09c382c /gcc/c
parent5fde62e29930ccf09c647c47db77894ff046b0ac (diff)
downloadgcc-40d3d53015c20f58fff7e6b098d0c943d3aea2b0.zip
gcc-40d3d53015c20f58fff7e6b098d0c943d3aea2b0.tar.gz
gcc-40d3d53015c20f58fff7e6b098d0c943d3aea2b0.tar.bz2
re PR c/57821 ('array is too large' error is missing when sizetype overflows)
gcc/c: PR c/57821 * c-typeck.c (set_init_index): When folding, check for index overflow. gcc/c-family: PR c/57821 * c-common.c (complete_array_type): Delay folding first index like other indices. When folding, check for index overflow. gcc/testsuite: PR c/57821 * gcc.dg/large-size-array-6.c: New test. From-SVN: r200683
Diffstat (limited to 'gcc/c')
-rw-r--r--gcc/c/ChangeLog5
-rw-r--r--gcc/c/c-typeck.c5
2 files changed, 10 insertions, 0 deletions
diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog
index 71a1db1..43cc839 100644
--- a/gcc/c/ChangeLog
+++ b/gcc/c/ChangeLog
@@ -1,3 +1,8 @@
+2013-07-04 Joern Rennecke <joern.rennecke@embecosm.com>
+
+ PR c/57821
+ * c-typeck.c (set_init_index): When folding, check for index overflow.
+
2013-06-28 Balaji V. Iyer <balaji.v.iyer@intel.com>
* c-parser.c (c_parser_array_notation): Removed rejection of array
diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c
index 3a92311..30871db 100644
--- a/gcc/c/c-typeck.c
+++ b/gcc/c/c-typeck.c
@@ -7217,6 +7217,11 @@ set_init_index (tree first, tree last,
if (last)
constant_expression_warning (last);
constructor_index = convert (bitsizetype, first);
+ if (tree_int_cst_lt (constructor_index, first))
+ {
+ constructor_index = copy_node (constructor_index);
+ TREE_OVERFLOW (constructor_index) = 1;
+ }
if (last)
{