PR c++/69517 - [5/6 regression] SEGV on a VLA with excess initializer elements
authorMartin Sebor <msebor@redhat.com>
Wed, 13 Apr 2016 23:26:41 +0000 (23:26 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Wed, 13 Apr 2016 23:26:41 +0000 (17:26 -0600)
commit342fac9537c6a75e65fe62943ba84b81bddede3f
tree1d55385c5ee07d32a08d9279dcb595632d96e73c
parent2ecc0c837bf2ac1309f41d30b7b30595331a6eb6
PR c++/69517 - [5/6 regression] SEGV on a VLA with excess initializer elements

PR c++/69517 - [5/6 regression] SEGV on a VLA with excess initializer elements
PR c++/70019 - VLA size overflow not detected
PR c++/70588 - SIGBUS on a VLA larger than SIZE_MAX / 2

gcc/testsuite/ChangeLog:
2016-04-13  Martin Sebor  <msebor@redhat.com>

        PR c++/69517
        PR c++/70019
        PR c++/70588
        * c-c++-common/ubsan/vla-1.c (main): Catch exceptions.
        * g++.dg/cpp1y/vla11.C: New test.
        * g++.dg/cpp1y/vla12.C: New test.
        * g++.dg/cpp1y/vla13.C: New test.
        * g++.dg/cpp1y/vla14.C: New test.
        * g++.dg/cpp1y/vla3.C: Restore deleted test.
        * gcc/testsuite/g++.dg/init/array24.C: Fully brace VLA initializer.
        * g++.dg/ubsan/vla-1.C: Disable exceptions.

gcc/cp/ChangeLog:
2016-04-13  Martin Sebor  <msebor@redhat.com>

        PR c++/69517
        PR c++/70019
        PR c++/70588
        * cp-tree.h (throw_bad_array_length, build_vla_check): Declare new
        functions.
        * decl.c (check_initializer, cp_finish_decl): Call them.
        (reshape_init_r): Reject incompletely braced intializer-lists
        for VLAs.
        * init.c (throw_bad_array_length, build_vla_check)
        (build_vla_size_check, build_vla_init_check): Define new functions.
        * typeck2.c (split_nonconstant_init_1): Use variably_modified_type_p()
        to detect a VLA.
        (store_init_value): Same.

gcc/doc/ChangeLog:
2016-04-13  Martin Sebor  <msebor@redhat.com>

        PR c++/69517
        PR c++/70019
        PR c++/70588
        * extend.texi (Variable Length): Document C++ specifics.

libstdc++-v3/ChangeLog:
2016-04-13  Martin Sebor  <msebor@redhat.com>

        PR c++/69517
        * testsuite/25_algorithms/rotate/moveable2.cc: Make sure VLA
       upper bound is positive.

From-SVN: r234966
18 files changed:
gcc/ChangeLog
gcc/cp/ChangeLog
gcc/cp/cp-tree.h
gcc/cp/decl.c
gcc/cp/init.c
gcc/cp/typeck2.c
gcc/doc/extend.texi
gcc/testsuite/ChangeLog
gcc/testsuite/c-c++-common/ubsan/vla-1.c
gcc/testsuite/g++.dg/cpp1y/vla11.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1y/vla12.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1y/vla13.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1y/vla14.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1y/vla3.C [new file with mode: 0644]
gcc/testsuite/g++.dg/init/array24.C
gcc/testsuite/g++.dg/ubsan/vla-1.C
libstdc++-v3/ChangeLog
libstdc++-v3/testsuite/25_algorithms/rotate/moveable2.cc