[pushed] analyzer: fix uses of alloca in testsuite

Message ID 20230201022755.825041-1-dmalcolm@redhat.com
State Committed
Commit d03ae4be2c6d48255b18bb35dc25e551bd3a3b9d
Headers
Series [pushed] analyzer: fix uses of alloca in testsuite |

Commit Message

David Malcolm Feb. 1, 2023, 2:27 a.m. UTC
  Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
Pushed to trunk as r13-5615-gd03ae4be2c6d48.

gcc/testsuite/ChangeLog:
	* gcc.dg/analyzer/call-summaries-2.c: Add
	dg-require-effective-target alloca.
	* gcc.dg/analyzer/imprecise-floating-point-1.c: Likewise.
	* gcc.dg/analyzer/infinite-recursion-alloca.c: Likewise.
	* gcc.dg/analyzer/malloc-callbacks.c: Likewise.
	* gcc.dg/analyzer/out-of-bounds-5.c: Likewise.  Remove includes
	of <stdio.h> and <alloca.h>.  Use "__builtin_free" rather than
	"free", to match uses of "__builtin_malloc".
	* gcc.dg/analyzer/putenv-1.c: Add dg-require-effective-target
	alloca.
	* gcc.dg/analyzer/write-to-string-literal-5.c: Likewise.

Signed-off-by: David Malcolm <dmalcolm@redhat.com>
---
 gcc/testsuite/gcc.dg/analyzer/call-summaries-2.c         | 1 +
 .../gcc.dg/analyzer/imprecise-floating-point-1.c         | 2 ++
 .../gcc.dg/analyzer/infinite-recursion-alloca.c          | 2 ++
 gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c         | 2 ++
 gcc/testsuite/gcc.dg/analyzer/out-of-bounds-5.c          | 9 ++++-----
 gcc/testsuite/gcc.dg/analyzer/putenv-1.c                 | 1 +
 .../gcc.dg/analyzer/write-to-string-literal-5.c          | 1 +
 7 files changed, 13 insertions(+), 5 deletions(-)
  

Comments

NightStrike Feb. 2, 2023, 1:02 a.m. UTC | #1
On Tue, Jan 31, 2023 at 9:27 PM David Malcolm <dmalcolm@redhat.com> wrote:
>
> Successfully bootstrapped & regrtested on x86_64-pc-linux-gnu.
> Pushed to trunk as r13-5615-gd03ae4be2c6d48.
>
> gcc/testsuite/ChangeLog:
>         * gcc.dg/analyzer/call-summaries-2.c: Add
>         dg-require-effective-target alloca.
>         * gcc.dg/analyzer/imprecise-floating-point-1.c: Likewise.
>         * gcc.dg/analyzer/infinite-recursion-alloca.c: Likewise.
>         * gcc.dg/analyzer/malloc-callbacks.c: Likewise.
>         * gcc.dg/analyzer/out-of-bounds-5.c: Likewise.  Remove includes
>         of <stdio.h> and <alloca.h>.  Use "__builtin_free" rather than
>         "free", to match uses of "__builtin_malloc".
>         * gcc.dg/analyzer/putenv-1.c: Add dg-require-effective-target
>         alloca.
>         * gcc.dg/analyzer/write-to-string-literal-5.c: Likewise.

Thanks for this fix, these all pass now on Windows.

I hope I'm not being pedantic, but there's still a remaining
inconsistency in that some parts of the test use memcpy (like test6),
and others use __builtin_memcpy (like test98).  There isn't a call to
__builtin_memset(), but there is a call to memset().  Maybe these
differences are intentional, though.  If they aren't, and you wanted
to reduce it further, you could remove string.h and use the builtins.
You could also include stddef.h instead of stdlib.h, if all you need
is size_t.
  

Patch

diff --git a/gcc/testsuite/gcc.dg/analyzer/call-summaries-2.c b/gcc/testsuite/gcc.dg/analyzer/call-summaries-2.c
index 22ca475b2ed..2d82d02e4e2 100644
--- a/gcc/testsuite/gcc.dg/analyzer/call-summaries-2.c
+++ b/gcc/testsuite/gcc.dg/analyzer/call-summaries-2.c
@@ -1,4 +1,5 @@ 
 /* { dg-additional-options "-fanalyzer-call-summaries --param analyzer-min-snodes-for-call-summary=0" } */
+/* { dg-require-effective-target alloca } */
 
 /* There need to be at least two calls to a function for the
    call-summarization code to be used.
diff --git a/gcc/testsuite/gcc.dg/analyzer/imprecise-floating-point-1.c b/gcc/testsuite/gcc.dg/analyzer/imprecise-floating-point-1.c
index d8a3f4884d6..7fe09fb826b 100644
--- a/gcc/testsuite/gcc.dg/analyzer/imprecise-floating-point-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/imprecise-floating-point-1.c
@@ -1,3 +1,5 @@ 
+/* { dg-require-effective-target alloca } */
+
 #include <stdlib.h>
 
 /* Tests warn on use of floating-point operands inside the calculation
diff --git a/gcc/testsuite/gcc.dg/analyzer/infinite-recursion-alloca.c b/gcc/testsuite/gcc.dg/analyzer/infinite-recursion-alloca.c
index 8c50631d8ce..87727e8ca25 100644
--- a/gcc/testsuite/gcc.dg/analyzer/infinite-recursion-alloca.c
+++ b/gcc/testsuite/gcc.dg/analyzer/infinite-recursion-alloca.c
@@ -1,3 +1,5 @@ 
+/* { dg-require-effective-target alloca } */
+
 typedef __SIZE_TYPE__ size_t;
 
 int test_alloca_1 (void)
diff --git a/gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c b/gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c
index c79f80d376d..cf3927fcaea 100644
--- a/gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c
+++ b/gcc/testsuite/gcc.dg/analyzer/malloc-callbacks.c
@@ -1,3 +1,5 @@ 
+/* { dg-require-effective-target alloca } */
+
 #include <stdlib.h>
 
 typedef void *(*allocator_t) (size_t);
diff --git a/gcc/testsuite/gcc.dg/analyzer/out-of-bounds-5.c b/gcc/testsuite/gcc.dg/analyzer/out-of-bounds-5.c
index eb6aae0f8cb..2a61d8ca236 100644
--- a/gcc/testsuite/gcc.dg/analyzer/out-of-bounds-5.c
+++ b/gcc/testsuite/gcc.dg/analyzer/out-of-bounds-5.c
@@ -1,9 +1,8 @@ 
 /* { dg-additional-options "-Wno-unused-but-set-variable" } */
+/* { dg-require-effective-target alloca } */
 
 #include <string.h>
-#include <stdio.h>
 #include <stdlib.h>
-#include <alloca.h>
 #include <stdint.h>
 
 /* Tests with symbolic values.  */
@@ -14,7 +13,7 @@  void test1 (size_t size)
   if (!buf) return;
 
   buf[size] = '\0'; /* { dg-warning "heap-based buffer overflow" } */
-  free (buf);
+  __builtin_free (buf);
 }
 
 void test2 (size_t size)
@@ -23,7 +22,7 @@  void test2 (size_t size)
   if (!buf) return;
 
   buf[size + 1] = '\0'; /* { dg-warning "heap-based buffer overflow" } */
-  free (buf);
+  __builtin_free (buf);
 }
 
 void test3 (size_t size, size_t op)
@@ -32,7 +31,7 @@  void test3 (size_t size, size_t op)
   if (!buf) return;
 
   buf[size + op] = '\0'; /* { dg-warning "heap-based buffer overflow" } */
-  free (buf);
+  __builtin_free (buf);
 }
 
 void test4 (size_t size, unsigned short s)
diff --git a/gcc/testsuite/gcc.dg/analyzer/putenv-1.c b/gcc/testsuite/gcc.dg/analyzer/putenv-1.c
index 4c3f0ae2e74..543121258c8 100644
--- a/gcc/testsuite/gcc.dg/analyzer/putenv-1.c
+++ b/gcc/testsuite/gcc.dg/analyzer/putenv-1.c
@@ -1,4 +1,5 @@ 
 /* { dg-additional-options "-Wno-analyzer-null-argument" } */
+/* { dg-require-effective-target alloca } */
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-5.c b/gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-5.c
index b7ac4659012..42efc49fb22 100644
--- a/gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-5.c
+++ b/gcc/testsuite/gcc.dg/analyzer/write-to-string-literal-5.c
@@ -2,6 +2,7 @@ 
    notes) works.  */
 
 /* { dg-additional-options "-fanalyzer-show-duplicate-count" } */
+/* { dg-require-effective-target alloca } */
 
 #include "analyzer-decls.h"