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
+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.
+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.
--- /dev/null
+/* { 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;
+}
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