PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds
PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds index into string literal gcc/ChangeLog: * tree.c (array_at_struct_end_p): Handle STRING_CST. gcc/testsuite/ChangeLog: * gcc/testsuite/gcc.dg/pr82596.c: New test. From-SVN: r253902
This commit is contained in:
parent
9e878cf1ba
commit
f5ba8fd108
4 changed files with 40 additions and 0 deletions
|
@ -1,3 +1,8 @@
|
|||
2017-10-19 Martin Sebor <msebor@redhat.com>
|
||||
|
||||
PR tree-optimization/82596
|
||||
* tree.c (array_at_struct_end_p): Handle STRING_CST.
|
||||
|
||||
2017-10-19 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* asan.c (handle_builtin_alloca): Deal with all alloca variants.
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2017-10-19 Martin Sebor <msebor@redhat.com>
|
||||
|
||||
PR tree-optimization/82596
|
||||
* gcc/testsuite/gcc.dg/pr82596.c: New test.
|
||||
|
||||
2017-10-19 Eric Botcazou <ebotcazou@adacore.com>
|
||||
|
||||
* gcc.dg/Walloca-15.c: New test.
|
||||
|
|
27
gcc/testsuite/gcc.dg/pr82596.c
Normal file
27
gcc/testsuite/gcc.dg/pr82596.c
Normal file
|
@ -0,0 +1,27 @@
|
|||
/* PR tree-optimization/82596 - missing -Warray-bounds on an out-of-bounds
|
||||
index into string literal
|
||||
{ dg-do compile }
|
||||
{ dg-options "-O2 -Warray-bounds" } */
|
||||
|
||||
#define SIZE_MAX __SIZE_MAX__
|
||||
#define SSIZE_MAX __PTRDIFF_MAX__
|
||||
#define SSIZE_MIN (-SSIZE_MAX - 1)
|
||||
|
||||
void sink (int, ...);
|
||||
|
||||
#define T(arg) sink (arg)
|
||||
|
||||
void test_cststring (int i)
|
||||
{
|
||||
T (""[SSIZE_MIN]); /* { dg-warning "below array bounds" "string" { xfail lp64 } } */
|
||||
T (""[SSIZE_MIN + 1]); /* { dg-warning "below array bounds" "string" } */
|
||||
T (""[-1]); /* { dg-warning "below array bounds" "string" } */
|
||||
T (""[0]);
|
||||
T (""[1]); /* { dg-warning "above array bounds" "string" } */
|
||||
T ("0"[2]); /* { dg-warning "above array bounds" "string" } */
|
||||
T ("012"[2]);
|
||||
T ("012"[3]);
|
||||
T ("012"[4]); /* { dg-warning "above array bounds" "string" } */
|
||||
T ("0123"[SSIZE_MAX]); /* { dg-warning "above array bounds" "string" } */
|
||||
T ("0123"[SIZE_MAX]); /* { dg-warning "above array bounds" "string" } */
|
||||
}
|
|
@ -12549,6 +12549,9 @@ array_at_struct_end_p (tree ref)
|
|||
else
|
||||
return false;
|
||||
|
||||
if (TREE_CODE (ref) == STRING_CST)
|
||||
return false;
|
||||
|
||||
while (handled_component_p (ref))
|
||||
{
|
||||
/* If the reference chain contains a component reference to a
|
||||
|
|
Loading…
Add table
Reference in a new issue