Wvla-1.c: Rename to...
* gcc.dg/Wvla-1.c: Rename to... * gcc.dg/Wvla-larger-than-1.c: ...this. * gcc.dg/Wvla-2.c: Rename to... * gcc.dg/Wvla-larger-than-2.c: ...this. * gcc.dg/Wvla-3.c: Rename to... * gcc.dg/Walloca-11.c.: ...this. * gcc.dg/wvla-[1-7].c: Rename to: * gcc.dg/Wvla-[1-7].c: ...this. From-SVN: r241344
This commit is contained in:
parent
346a966edf
commit
b70f0b0cc3
14 changed files with 126 additions and 115 deletions
|
@ -1,3 +1,14 @@
|
|||
2016-10-19 Aldy Hernandez <aldyh@redhat.com>
|
||||
|
||||
* gcc.dg/Wvla-1.c: Rename to...
|
||||
* gcc.dg/Wvla-larger-than-1.c: ...this.
|
||||
* gcc.dg/Wvla-2.c: Rename to...
|
||||
* gcc.dg/Wvla-larger-than-2.c: ...this.
|
||||
* gcc.dg/Wvla-3.c: Rename to...
|
||||
* gcc.dg/Walloca-11.c.: ...this.
|
||||
* gcc.dg/wvla-[1-7].c: Rename to:
|
||||
* gcc.dg/Wvla-[1-7].c: ...this.
|
||||
|
||||
2016-10-19 Bin Cheng <bin.cheng@arm.com>
|
||||
|
||||
PR tree-optimization/78005
|
||||
|
|
12
gcc/testsuite/gcc.dg/Walloca-11.c
Normal file
12
gcc/testsuite/gcc.dg/Walloca-11.c
Normal file
|
@ -0,0 +1,12 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Walloca -O2" } */
|
||||
|
||||
// Make sure we don't warn on VLA with -Walloca.
|
||||
|
||||
void f (void*);
|
||||
|
||||
void h1 (unsigned n)
|
||||
{
|
||||
int a [n];
|
||||
f (a);
|
||||
}
|
|
@ -1,24 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wvla-larger-than=100 -O2" } */
|
||||
/* { dg-options "-std=c89 -Wvla" } */
|
||||
|
||||
typedef __SIZE_TYPE__ size_t;
|
||||
|
||||
extern void useit (char *);
|
||||
|
||||
int num;
|
||||
|
||||
void test_vlas (size_t num)
|
||||
{
|
||||
char str2[num]; /* { dg-warning "unbounded use" } */
|
||||
useit(str2);
|
||||
|
||||
num = 98;
|
||||
for (int i=0; i < 1234; ++i) {
|
||||
char str[num]; // OK, VLA in a loop, but it is a
|
||||
// known size *AND* the compiler takes
|
||||
// care of cleaning up between
|
||||
// iterations with
|
||||
// __builtin_stack_restore.
|
||||
useit(str);
|
||||
}
|
||||
}
|
||||
extern void
|
||||
func (int i, int array[i]); /* { dg-warning "ISO C90 forbids variable length array 'array'" } */
|
||||
|
|
|
@ -1,70 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target stdint_types } */
|
||||
/* { dg-options "-O2 -Wvla-larger-than=40" } */
|
||||
/* { dg-options "-std=c99 -Wvla" } */
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
void f0 (void *);
|
||||
void
|
||||
f1 (__SIZE_TYPE__ a)
|
||||
{
|
||||
if (a <= 10)
|
||||
{
|
||||
// 10 * 4 bytes = 40: OK!
|
||||
uint32_t x[a];
|
||||
f0 (x);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
f2 (__SIZE_TYPE__ a)
|
||||
{
|
||||
if (a <= 11)
|
||||
{
|
||||
// 11 * 4 bytes = 44: Not OK.
|
||||
uint32_t x[a]; // { dg-warning "array may be too large" }
|
||||
// { dg-message "note:.*argument may be as large as 44" "note" { target *-*-* } 25 }
|
||||
f0 (x);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
f3 (__SIZE_TYPE__ a, __SIZE_TYPE__ b)
|
||||
{
|
||||
if (a <= 5 && b <= 3)
|
||||
{
|
||||
// 5 * 3 * 4 bytes = 60: Not OK.
|
||||
uint32_t x[a][b]; // { dg-warning "array may be too large" }
|
||||
f0 (x);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
f4 (__SIZE_TYPE__ a, __SIZE_TYPE__ b)
|
||||
{
|
||||
if (a <= 5 && b <= 2)
|
||||
{
|
||||
// 5 * 2 * 4 bytes = 40 bytes: OK!
|
||||
uint32_t x[a][b];
|
||||
f0 (x);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
f5 (__SIZE_TYPE__ len)
|
||||
{
|
||||
// Test that a direct call to __builtin_alloca_with_align is not
|
||||
// confused with a VLA.
|
||||
void *p = __builtin_alloca_with_align (len, 8);
|
||||
f0 (p);
|
||||
}
|
||||
|
||||
void
|
||||
f6 (unsigned stuff)
|
||||
{
|
||||
int n = 7000;
|
||||
do {
|
||||
char a[n]; // { dg-warning "variable-length array is too large" }
|
||||
f0 (a);
|
||||
} while (stuff--);
|
||||
}
|
||||
extern void
|
||||
func (int i, int array[i]); /* { dg-warning "ISO C90 forbids variable length array 'array'" } */
|
||||
|
|
|
@ -1,12 +1,5 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Walloca -O2" } */
|
||||
/* { dg-options "-pedantic-errors -std=c89 -Wvla" } */
|
||||
|
||||
// Make sure we don't warn on VLA with -Walloca.
|
||||
|
||||
void f (void*);
|
||||
|
||||
void h1 (unsigned n)
|
||||
{
|
||||
int a [n];
|
||||
f (a);
|
||||
}
|
||||
extern void
|
||||
func (int i, int array[i]); /* { dg-error "ISO C90 forbids variable.* array 'array'" } */
|
||||
|
|
24
gcc/testsuite/gcc.dg/Wvla-larger-than-1.c
Normal file
24
gcc/testsuite/gcc.dg/Wvla-larger-than-1.c
Normal file
|
@ -0,0 +1,24 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wvla-larger-than=100 -O2" } */
|
||||
|
||||
typedef __SIZE_TYPE__ size_t;
|
||||
|
||||
extern void useit (char *);
|
||||
|
||||
int num;
|
||||
|
||||
void test_vlas (size_t num)
|
||||
{
|
||||
char str2[num]; /* { dg-warning "unbounded use" } */
|
||||
useit(str2);
|
||||
|
||||
num = 98;
|
||||
for (int i=0; i < 1234; ++i) {
|
||||
char str[num]; // OK, VLA in a loop, but it is a
|
||||
// known size *AND* the compiler takes
|
||||
// care of cleaning up between
|
||||
// iterations with
|
||||
// __builtin_stack_restore.
|
||||
useit(str);
|
||||
}
|
||||
}
|
70
gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
Normal file
70
gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
Normal file
|
@ -0,0 +1,70 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-require-effective-target stdint_types } */
|
||||
/* { dg-options "-O2 -Wvla-larger-than=40" } */
|
||||
|
||||
#include <stdint.h>
|
||||
|
||||
void f0 (void *);
|
||||
void
|
||||
f1 (__SIZE_TYPE__ a)
|
||||
{
|
||||
if (a <= 10)
|
||||
{
|
||||
// 10 * 4 bytes = 40: OK!
|
||||
uint32_t x[a];
|
||||
f0 (x);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
f2 (__SIZE_TYPE__ a)
|
||||
{
|
||||
if (a <= 11)
|
||||
{
|
||||
// 11 * 4 bytes = 44: Not OK.
|
||||
uint32_t x[a]; // { dg-warning "array may be too large" }
|
||||
// { dg-message "note:.*argument may be as large as 44" "note" { target *-*-* } 25 }
|
||||
f0 (x);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
f3 (__SIZE_TYPE__ a, __SIZE_TYPE__ b)
|
||||
{
|
||||
if (a <= 5 && b <= 3)
|
||||
{
|
||||
// 5 * 3 * 4 bytes = 60: Not OK.
|
||||
uint32_t x[a][b]; // { dg-warning "array may be too large" }
|
||||
f0 (x);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
f4 (__SIZE_TYPE__ a, __SIZE_TYPE__ b)
|
||||
{
|
||||
if (a <= 5 && b <= 2)
|
||||
{
|
||||
// 5 * 2 * 4 bytes = 40 bytes: OK!
|
||||
uint32_t x[a][b];
|
||||
f0 (x);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
f5 (__SIZE_TYPE__ len)
|
||||
{
|
||||
// Test that a direct call to __builtin_alloca_with_align is not
|
||||
// confused with a VLA.
|
||||
void *p = __builtin_alloca_with_align (len, 8);
|
||||
f0 (p);
|
||||
}
|
||||
|
||||
void
|
||||
f6 (unsigned stuff)
|
||||
{
|
||||
int n = 7000;
|
||||
do {
|
||||
char a[n]; // { dg-warning "variable-length array is too large" }
|
||||
f0 (a);
|
||||
} while (stuff--);
|
||||
}
|
|
@ -1,5 +0,0 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=c89 -Wvla" } */
|
||||
|
||||
extern void
|
||||
func (int i, int array[i]); /* { dg-warning "ISO C90 forbids variable length array 'array'" } */
|
|
@ -1,5 +0,0 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-std=c99 -Wvla" } */
|
||||
|
||||
extern void
|
||||
func (int i, int array[i]); /* { dg-warning "ISO C90 forbids variable length array 'array'" } */
|
|
@ -1,5 +0,0 @@
|
|||
/* { dg-do compile } */
|
||||
/* { dg-options "-pedantic-errors -std=c89 -Wvla" } */
|
||||
|
||||
extern void
|
||||
func (int i, int array[i]); /* { dg-error "ISO C90 forbids variable.* array 'array'" } */
|
Loading…
Add table
Reference in a new issue