diff mbox series

use __builtin_alloca, drop non-standard alloca.h

Message ID orimqykfky.fsf@lxoliva.fsfla.org
State New
Headers show
Series use __builtin_alloca, drop non-standard alloca.h | expand

Commit Message

Alexandre Oliva Aug. 15, 2019, 8:17 a.m. UTC
Since alloca.h is not ISO C, most of our alloca-using tests seem to
rely on __builtin_alloca instead of including the header and calling
alloca.  This patch extends this practice to some of the exceptions I
found in gcc.target, marking them as requiring a functional alloca
while at that.

Tested on x86_64-linux-gnu, and manually compile-tested the non-x86
tests.  Ok to install?


for  gcc/testsuite/ChangeLog

	* gcc.target/arc/interrupt-6.c: Use __builtin_alloca, require
	effective target support for alloca, drop include of alloca.h.
	* gcc.target/i386/pr80969-3.c: Likewise.
	* gcc.target/sparc/setjmp-1.c: Likewise.
	* gcc.target/x86_64/abi/ms-sysv/gen.cc: Likewise.
	* gcc.target/x86_64/abi/ms-sysv/ms-sysv.c: Likewise.
---
 gcc/testsuite/gcc.target/arc/interrupt-6.c         |    5 ++---
 gcc/testsuite/gcc.target/i386/pr80969-3.c          |    5 ++---
 gcc/testsuite/gcc.target/sparc/setjmp-1.c          |    4 ++--
 gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc |    2 +-
 .../gcc.target/x86_64/abi/ms-sysv/ms-sysv.c        |    2 +-
 5 files changed, 8 insertions(+), 10 deletions(-)

Comments

Jeff Law Aug. 15, 2019, 6:07 p.m. UTC | #1
On 8/15/19 2:17 AM, Alexandre Oliva wrote:
> Since alloca.h is not ISO C, most of our alloca-using tests seem to
> rely on __builtin_alloca instead of including the header and calling
> alloca.  This patch extends this practice to some of the exceptions I
> found in gcc.target, marking them as requiring a functional alloca
> while at that.
> 
> Tested on x86_64-linux-gnu, and manually compile-tested the non-x86
> tests.  Ok to install?
> 
> 
> for  gcc/testsuite/ChangeLog
> 
> 	* gcc.target/arc/interrupt-6.c: Use __builtin_alloca, require
> 	effective target support for alloca, drop include of alloca.h.
> 	* gcc.target/i386/pr80969-3.c: Likewise.
> 	* gcc.target/sparc/setjmp-1.c: Likewise.
> 	* gcc.target/x86_64/abi/ms-sysv/gen.cc: Likewise.
> 	* gcc.target/x86_64/abi/ms-sysv/ms-sysv.c: Likewise.
OK
jeff
diff mbox series

Patch

diff --git a/gcc/testsuite/gcc.target/arc/interrupt-6.c b/gcc/testsuite/gcc.target/arc/interrupt-6.c
index d82bd67edd83..9cb0565f55c9 100644
--- a/gcc/testsuite/gcc.target/arc/interrupt-6.c
+++ b/gcc/testsuite/gcc.target/arc/interrupt-6.c
@@ -1,8 +1,7 @@ 
 /* { dg-do compile } */
 /* { dg-skip-if "Not available for ARCv1" { arc700 || arc6xx } } */
 /* { dg-options "-O2 -mirq-ctrl-saved=r0-ilink" } */
-
-#include <alloca.h>
+/* { dg-require-effective-target alloca } */
 
 /* Check if ilink is recognized. Check how FP and BLINK are saved.
    BLINK is saved last on the stack because the IRQ autosave will do
@@ -14,7 +13,7 @@  extern int bar (void *);
 void  __attribute__ ((interrupt("ilink")))
 foo(void)
 {
-  int *p = alloca (10);
+  int *p = __builtin_alloca (10);
   bar (p);
 }
 /* { dg-final { scan-assembler-not ".*fp,\\\[sp" } } */
diff --git a/gcc/testsuite/gcc.target/i386/pr80969-3.c b/gcc/testsuite/gcc.target/i386/pr80969-3.c
index d902a771cc8f..318e06cd94c6 100644
--- a/gcc/testsuite/gcc.target/i386/pr80969-3.c
+++ b/gcc/testsuite/gcc.target/i386/pr80969-3.c
@@ -2,11 +2,10 @@ 
 /* { dg-do compile { target { { ! x32 } && { ! avx512f_runtime } } } } */
 /* { dg-options "-Ofast -mabi=ms -mavx512f" } */
 /* { dg-require-effective-target avx512f } */
+/* { dg-require-effective-target alloca } */
 
 /* Test with alloca (and DRAP).  */
 
-#include <alloca.h>
-
 int a[56];
 volatile int b = -12345;
 volatile const int d = 42;
@@ -19,7 +18,7 @@  void (*volatile const foo_noinfo)(int *, int, int) = foo;
 
 int main (int argc, char *argv[]) {
   int c;
-  int *e = alloca (d);
+  int *e = __builtin_alloca (d);
   foo_noinfo (e, d, 0);
   for (; b; b++) {
     c = b;
diff --git a/gcc/testsuite/gcc.target/sparc/setjmp-1.c b/gcc/testsuite/gcc.target/sparc/setjmp-1.c
index d0fecb363270..699d7f7b8ff4 100644
--- a/gcc/testsuite/gcc.target/sparc/setjmp-1.c
+++ b/gcc/testsuite/gcc.target/sparc/setjmp-1.c
@@ -4,9 +4,9 @@ 
 /* { dg-do run { target *-*-solaris2.* *-*-linux* *-*-*bsd* } } */
 /* { dg-require-effective-target fpic } */
 /* { dg-options "-fPIC" } */
+/* { dg-require-effective-target alloca } */
 
 #include <stdio.h>
-#include <alloca.h>
 #include <setjmp.h>
 #include <string.h>
 #include <stdlib.h>
@@ -26,7 +26,7 @@  int main (void)
 {
   setjmp (jb);
 
-  char *p = alloca (256);
+  char *p = __builtin_alloca (256);
   memset (p, 0, 256);
   sprintf (p, "%d\n", foo);
 
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
index 701531480f62..818a8875a6dd 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
+++ b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/gen.cc
@@ -291,7 +291,7 @@  void fn::print_def (ostream &out) const
   if (get_msabi () && get_alloca ())
     {
       const char *size_str = m_args.empty () ? "42" : "a";
-      out << "  void *alloca_mem = alloca (8 + " << size_str << ");" << endl
+      out << "  void *alloca_mem = __builtin_alloca (8 + " << size_str << ");" << endl
 	  << "  *(long*)alloca_mem = FLAG_ALLOCA;" << endl;
     }
   if (get_msabi () && get_varargs ())
diff --git a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
index 5fdd1e20674b..abfcee6f56a4 100644
--- a/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
+++ b/gcc/testsuite/gcc.target/x86_64/abi/ms-sysv/ms-sysv.c
@@ -49,6 +49,7 @@  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 /* { dg-do run } */
 /* { dg-additional-sources "do-test.S" } */
 /* { dg-additional-options "-Wall" } */
+/* { dg-require-effective-target alloca } */
 
 #include <stdio.h>
 #include <string.h>
@@ -56,7 +57,6 @@  see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
 #include <signal.h>
 #include <unistd.h>
 #include <stdint.h>
-#include <alloca.h>
 #include <stdarg.h>
 #include <assert.h>
 #include <errno.h>