From a3682da9173b8e6da5f6a4925f57d7f00885104c Mon Sep 17 00:00:00 2001 From: mpolacek Date: Mon, 2 Dec 2013 16:08:47 +0000 Subject: [PATCH] 2013-12-02 Marek Polacek testsuite/ * c-c++-common/ubsan/vla-1.c: Split the tests into individual functions. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@205590 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/testsuite/ChangeLog | 5 ++ gcc/testsuite/c-c++-common/ubsan/vla-1.c | 97 +++++++++++++++++++++++++++----- 2 files changed, 89 insertions(+), 13 deletions(-) diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 59c0b5b..9c7be13 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2013-12-02 Marek Polacek + + * c-c++-common/ubsan/vla-1.c: Split the tests into individual + functions. + 2013-12-02 Richard Biener PR tree-optimization/59139 diff --git a/gcc/testsuite/c-c++-common/ubsan/vla-1.c b/gcc/testsuite/c-c++-common/ubsan/vla-1.c index 3e47bd3..ca538ed 100644 --- a/gcc/testsuite/c-c++-common/ubsan/vla-1.c +++ b/gcc/testsuite/c-c++-common/ubsan/vla-1.c @@ -1,33 +1,104 @@ /* { dg-do run } */ /* { dg-options "-fsanitize=vla-bound -Wall -Wno-unused-variable" } */ -static int +typedef long int V; +int x = -1; +double di = -3.2; +V v = -6; + +static int __attribute__ ((noinline, noclone)) bar (void) { - return -42; + return -4; } -typedef long int V; -int -main (void) +static void __attribute__ ((noinline, noclone)) +fn1 (void) { - int x = -1; - double di = -3.2; - V v = -666; - int a[x]; - int aa[x][x]; - int aaa[x][x][x]; +} + +static void __attribute__ ((noinline, noclone)) +fn2 (void) +{ + int a[x][x]; +} + +static void __attribute__ ((noinline, noclone)) +fn3 (void) +{ + int a[x][x][x]; +} + +static void __attribute__ ((noinline, noclone)) +fn4 (void) +{ int b[x - 4]; +} + +static void __attribute__ ((noinline, noclone)) +fn5 (void) +{ int c[(int) di]; +} + +static void __attribute__ ((noinline, noclone)) +fn6 (void) +{ int d[1 + x]; +} + +static void __attribute__ ((noinline, noclone)) +fn7 (void) +{ int e[1 ? x : -1]; +} + +static void __attribute__ ((noinline, noclone)) +fn8 (void) +{ int f[++x]; +} + +static void __attribute__ ((noinline, noclone)) +fn9 (void) +{ int g[(signed char) --x]; +} + +static void __attribute__ ((noinline, noclone)) +fn10 (void) +{ int h[(++x, --x, x)]; +} + +static void __attribute__ ((noinline, noclone)) +fn11 (void) +{ int i[v]; +} + +static void __attribute__ ((noinline, noclone)) +fn12 (void) +{ int j[bar ()]; +} +int +main (void) +{ + fn1 (); + fn2 (); + fn3 (); + fn4 (); + fn5 (); + fn6 (); + fn7 (); + fn8 (); + fn9 (); + fn10 (); + fn11 (); + fn12 (); return 0; } @@ -44,5 +115,5 @@ main (void) /* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value 0(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -1(\n|\r\n|\r)" } */ /* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -1(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -666(\n|\r\n|\r)" } */ -/* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -42(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -6(\n|\r\n|\r)" } */ +/* { dg-output "\[^\n\r]*variable length array bound evaluates to non-positive value -4(\n|\r\n|\r)" } */ -- 2.7.4