diff options
author | Joern Rennecke <joern.rennecke@embecosm.com> | 2013-07-04 22:20:34 +0000 |
---|---|---|
committer | Joern Rennecke <amylaar@gcc.gnu.org> | 2013-07-04 23:20:34 +0100 |
commit | 40d3d53015c20f58fff7e6b098d0c943d3aea2b0 (patch) | |
tree | 4559cbb5c6a77bed54dfc0e0b4f1a07ff09c382c /gcc/c | |
parent | 5fde62e29930ccf09c647c47db77894ff046b0ac (diff) | |
download | gcc-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/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/c/c-typeck.c | 5 |
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) { |