PING: new pass to warn on questionable uses of alloca() and VLAs
diff mbox

Message ID 2974c6f7-f1db-e1b8-3908-0689ce5b3016@redhat.com
State New
Headers show

Commit Message

Aldy Hernandez Oct. 19, 2016, 1:54 p.m. UTC
On 10/19/2016 09:24 AM, Eric Botcazou wrote:
>> It seems to me that there is a precedence for -W type tests to start
>> with a capital letter, as opposed to a lowercase letter:
>>
>> $ cd gcc.dg
>> $ ls W[a-z]* |wc
>>      280     280    5816
>>
>> Do you think it would perhaps be reasonable to rename all of them to
>> uppercase?
>
> Yes, I agree that this would be more consistent.
>
>> You could take -Wvla-[1-7].c and I can take the subsequent ones?
>
> Not sure if this wouldn't make us tread on each other's toe. ;-)  I'd just
> rename your 3 new testcases (-Wvla-larger-than-1.c, Wvla-larger-than-2.c and
> Walloca-11.c probably) and promote the existing wvla-[1-7].c to uppercase.
>

Done.

I have committed the attached patch as mostly obvious :).
commit e066ee667cec9a90478deff7b3090587ae11236f
Author: aldyh <aldyh@138bc75d-0d04-0410-961f-82ee72b054a4>
Date:   Wed Oct 19 13:52:43 2016 +0000

    	* 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.
    
    git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@241344 138bc75d-0d04-0410-961f-82ee72b054a4

Comments

Eric Botcazou Oct. 19, 2016, 3:31 p.m. UTC | #1
> I have committed the attached patch as mostly obvious :).

Thanks!

Patch
diff mbox

diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index a270700..d3d269d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
diff --git a/gcc/testsuite/gcc.dg/Walloca-11.c b/gcc/testsuite/gcc.dg/Walloca-11.c
new file mode 100644
index 0000000..5124476
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Walloca-11.c
@@ -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);
+}
diff --git a/gcc/testsuite/gcc.dg/Wvla-1.c b/gcc/testsuite/gcc.dg/Wvla-1.c
index 384c930..d2e3cb5 100644
--- a/gcc/testsuite/gcc.dg/Wvla-1.c
+++ b/gcc/testsuite/gcc.dg/Wvla-1.c
@@ -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'" } */
diff --git a/gcc/testsuite/gcc.dg/Wvla-2.c b/gcc/testsuite/gcc.dg/Wvla-2.c
index 96814dc..92c67ed 100644
--- a/gcc/testsuite/gcc.dg/Wvla-2.c
+++ b/gcc/testsuite/gcc.dg/Wvla-2.c
@@ -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'" } */
diff --git a/gcc/testsuite/gcc.dg/Wvla-3.c b/gcc/testsuite/gcc.dg/Wvla-3.c
index 5124476..45132fa 100644
--- a/gcc/testsuite/gcc.dg/Wvla-3.c
+++ b/gcc/testsuite/gcc.dg/Wvla-3.c
@@ -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'" } */
diff --git a/gcc/testsuite/gcc.dg/Wvla-4.c b/gcc/testsuite/gcc.dg/Wvla-4.c
new file mode 100644
index 0000000..ae2e0b0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wvla-4.c
@@ -0,0 +1,5 @@ 
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors -std=c99 -Wvla" } */
+
+extern void 
+func (int i, int array[i]); /* { dg-warning "ISO C90 forbids variable length array 'array'" } */
diff --git a/gcc/testsuite/gcc.dg/Wvla-5.c b/gcc/testsuite/gcc.dg/Wvla-5.c
new file mode 100644
index 0000000..919b8dc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wvla-5.c
@@ -0,0 +1,5 @@ 
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors -std=c89 -Wno-vla" } */
+
+extern void 
+func (int i, int array[i]);
diff --git a/gcc/testsuite/gcc.dg/Wvla-6.c b/gcc/testsuite/gcc.dg/Wvla-6.c
new file mode 100644
index 0000000..694a4cc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wvla-6.c
@@ -0,0 +1,5 @@ 
+/* { dg-do compile } */
+/* { dg-options "-std=c89 -Wvla" } */
+
+extern void 
+func (int i, int [i]); /* { dg-warning "ISO C90 forbids variable length array" } */
diff --git a/gcc/testsuite/gcc.dg/Wvla-7.c b/gcc/testsuite/gcc.dg/Wvla-7.c
new file mode 100644
index 0000000..4c264f0
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wvla-7.c
@@ -0,0 +1,5 @@ 
+/* { dg-do compile } */
+/* { dg-options "-pedantic-errors -std=c89 -Wvla" } */
+
+extern void 
+func (int i, int [i]); /* { dg-error "ISO C90 forbids variable" } */
diff --git a/gcc/testsuite/gcc.dg/Wvla-larger-than-1.c b/gcc/testsuite/gcc.dg/Wvla-larger-than-1.c
new file mode 100644
index 0000000..384c930
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wvla-larger-than-1.c
@@ -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);
+  }
+}
diff --git a/gcc/testsuite/gcc.dg/Wvla-larger-than-2.c b/gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
new file mode 100644
index 0000000..96814dc
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/Wvla-larger-than-2.c
@@ -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--);
+}
diff --git a/gcc/testsuite/gcc.dg/wvla-1.c b/gcc/testsuite/gcc.dg/wvla-1.c
deleted file mode 100644
index d2e3cb5..0000000
--- a/gcc/testsuite/gcc.dg/wvla-1.c
+++ /dev/null
@@ -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'" } */
diff --git a/gcc/testsuite/gcc.dg/wvla-2.c b/gcc/testsuite/gcc.dg/wvla-2.c
deleted file mode 100644
index 92c67ed..0000000
--- a/gcc/testsuite/gcc.dg/wvla-2.c
+++ /dev/null
@@ -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'" } */
diff --git a/gcc/testsuite/gcc.dg/wvla-3.c b/gcc/testsuite/gcc.dg/wvla-3.c
deleted file mode 100644
index 45132fa..0000000
--- a/gcc/testsuite/gcc.dg/wvla-3.c
+++ /dev/null
@@ -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'" } */
diff --git a/gcc/testsuite/gcc.dg/wvla-4.c b/gcc/testsuite/gcc.dg/wvla-4.c
deleted file mode 100644
index ae2e0b0..0000000
--- a/gcc/testsuite/gcc.dg/wvla-4.c
+++ /dev/null
@@ -1,5 +0,0 @@ 
-/* { dg-do compile } */
-/* { dg-options "-pedantic-errors -std=c99 -Wvla" } */
-
-extern void 
-func (int i, int array[i]); /* { dg-warning "ISO C90 forbids variable length array 'array'" } */
diff --git a/gcc/testsuite/gcc.dg/wvla-5.c b/gcc/testsuite/gcc.dg/wvla-5.c
deleted file mode 100644
index 919b8dc..0000000
--- a/gcc/testsuite/gcc.dg/wvla-5.c
+++ /dev/null
@@ -1,5 +0,0 @@ 
-/* { dg-do compile } */
-/* { dg-options "-pedantic-errors -std=c89 -Wno-vla" } */
-
-extern void 
-func (int i, int array[i]);
diff --git a/gcc/testsuite/gcc.dg/wvla-6.c b/gcc/testsuite/gcc.dg/wvla-6.c
deleted file mode 100644
index 694a4cc..0000000
--- a/gcc/testsuite/gcc.dg/wvla-6.c
+++ /dev/null
@@ -1,5 +0,0 @@ 
-/* { dg-do compile } */
-/* { dg-options "-std=c89 -Wvla" } */
-
-extern void 
-func (int i, int [i]); /* { dg-warning "ISO C90 forbids variable length array" } */
diff --git a/gcc/testsuite/gcc.dg/wvla-7.c b/gcc/testsuite/gcc.dg/wvla-7.c
deleted file mode 100644
index 4c264f0..0000000
--- a/gcc/testsuite/gcc.dg/wvla-7.c
+++ /dev/null
@@ -1,5 +0,0 @@ 
-/* { dg-do compile } */
-/* { dg-options "-pedantic-errors -std=c89 -Wvla" } */
-
-extern void 
-func (int i, int [i]); /* { dg-error "ISO C90 forbids variable" } */