Commit b70f0b0c by Aldy Hernandez Committed by Aldy Hernandez

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
parent 346a966e
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
......
/* { 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);
}
/* { 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'" } */
/* { 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'" } */
/* { 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'" } */
/* { 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);
}
}
/* { 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--);
}
/* { 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'" } */
/* { 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'" } */
/* { 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'" } */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment