mirror of git://gcc.gnu.org/git/gcc.git
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
|
||
|---|---|---|
| .. | ||
| adjacent_find | ||
| all_of | ||
| any_of | ||
| binary_search | ||
| copy | ||
| copy_backward | ||
| copy_if | ||
| copy_n | ||
| count | ||
| count_if | ||
| equal | ||
| equal_range | ||
| fill | ||
| fill_n | ||
| find | ||
| find_end | ||
| find_first_of | ||
| find_if | ||
| find_if_not | ||
| for_each | ||
| generate/requirements/explicit_instantiation | ||
| generate_n | ||
| headers | ||
| heap | ||
| includes | ||
| inplace_merge | ||
| is_heap | ||
| is_heap_until | ||
| is_partitioned | ||
| is_permutation | ||
| is_sorted | ||
| is_sorted_until | ||
| iter_swap | ||
| lexicographical_compare | ||
| lower_bound | ||
| make_heap | ||
| max | ||
| max_element | ||
| merge | ||
| min | ||
| min_element | ||
| minmax | ||
| minmax_element | ||
| mismatch | ||
| move | ||
| move_backward | ||
| next_permutation | ||
| none_of | ||
| nth_element | ||
| partial_sort | ||
| partial_sort_copy | ||
| partition | ||
| partition_copy | ||
| partition_point | ||
| pop_heap | ||
| prev_permutation | ||
| push_heap | ||
| random_shuffle | ||
| remove | ||
| remove_copy/requirements/explicit_instantiation | ||
| remove_copy_if | ||
| remove_if | ||
| replace | ||
| replace_copy | ||
| replace_copy_if | ||
| replace_if | ||
| reverse | ||
| reverse_copy/explicit_instantiation | ||
| rotate | ||
| rotate_copy/requirements/explicit_instantiation | ||
| search | ||
| search_n | ||
| set_difference | ||
| set_intersection | ||
| set_symmetric_difference | ||
| set_union | ||
| shuffle | ||
| sort | ||
| sort_heap | ||
| stable_partition | ||
| stable_sort | ||
| swap | ||
| swap_ranges | ||
| transform/requirements/explicit_instantiation | ||
| unique | ||
| unique_copy | ||
| upper_bound | ||