tree-vrp.c (check_array_ref): Bail out on zero-length arrays.
gcc/ 2013-08-30 Meador Inge <meadori@codesourcery.com> * tree-vrp.c (check_array_ref): Bail out on zero-length arrays. gcc/testsuite/ 2013-08-30 Meador Inge <meadori@codesourcery.com> * gcc.dg/Warray-bounds-11.c: New testcase. From-SVN: r202115
This commit is contained in:
parent
de5a5fa139
commit
0a6ea5c9c9
|
@ -1,3 +1,7 @@
|
|||
2013-08-30 Meador Inge <meadori@codesourcery.com>
|
||||
|
||||
* tree-vrp.c (check_array_ref): Bail out on zero-length arrays.
|
||||
|
||||
2013-08-30 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* Makefile.in (ubsan.o): Add.
|
||||
|
|
|
@ -1,3 +1,7 @@
|
|||
2013-08-30 Meador Inge <meadori@codesourcery.com>
|
||||
|
||||
* gcc.dg/Warray-bounds-11.c: New testcase.
|
||||
|
||||
2013-08-30 Marek Polacek <polacek@redhat.com>
|
||||
|
||||
* g++.dg/ubsan/div-by-zero-1.C: New test.
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2 -Warray-bounds -std=gnu99" } */
|
||||
/* Test zero-length arrays for GNU C. */
|
||||
|
||||
unsigned int a[] = { };
|
||||
unsigned int size_a;
|
||||
|
||||
int test(void)
|
||||
{
|
||||
/* This should not warn. */
|
||||
return size_a ? a[0] : 0;
|
||||
}
|
|
@ -6137,9 +6137,10 @@ check_array_ref (location_t location, tree ref, bool ignore_off_by_one)
|
|||
low_sub = up_sub = TREE_OPERAND (ref, 1);
|
||||
up_bound = array_ref_up_bound (ref);
|
||||
|
||||
/* Can not check flexible arrays. */
|
||||
/* Can not check flexible arrays or zero-length arrays. */
|
||||
if (!up_bound
|
||||
|| TREE_CODE (up_bound) != INTEGER_CST)
|
||||
|| TREE_CODE (up_bound) != INTEGER_CST
|
||||
|| tree_int_cst_equal (up_bound, integer_minus_one_node))
|
||||
return;
|
||||
|
||||
/* Accesses to trailing arrays via pointers may access storage
|
||||
|
|
Loading…
Reference in New Issue