Hello,

The aarch64 testsuite features a few tests for
the stack-clash-protection facility, all using "alloca"
after an #include <alloca.h>.

The use of alloca.h causes the tests to fail on
target systems not providing that header, such as some
variants of VxWorks.

My understanding is that the tests really depend on
the alloca functionality, not on alloca.h in particular.

This patch is a proposal to modify the tests to
use __builtin_alloca instead, as done in some other
places in the testsuite.

This cures the failures on VxWorks and bootstrap+regtest
fine on aarch64 linux.

Ok to commit ?

Thanks in advance!

Best Regards,

Olivier


2020-01-06  Olivier Hainque  <hain...@adacore.com>
        Alexandre Oliva  <ol...@adacore.com>

        * gcc.target/aarch64/stack-check-alloca.h: Remove
        #include alloca.h.
        (f_caller): Use __builtin_alloca instead of alloca.
        * gcc.target/aarch64/stack-check-alloca-1.c: Add
        { dg-require-effective-target alloca }.
        * gcc.target/aarch64/stack-check-alloca-2.c: Likewise.
        * gcc.target/aarch64/stack-check-alloca-3.c: Likewise.
        * gcc.target/aarch64/stack-check-alloca-4.c: Likewise.
        * gcc.target/aarch64/stack-check-alloca-5.c: Likewise.
        * gcc.target/aarch64/stack-check-alloca-6.c: Likewise.
        * gcc.target/aarch64/stack-check-alloca-7.c: Likewise.
        * gcc.target/aarch64/stack-check-alloca-8.c: Likewise.
        * gcc.target/aarch64/stack-check-alloca-9.c: Likewise.
        * gcc.target/aarch64/stack-check-alloca-10.c: Likewise.

diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-1.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-1.c
index 7fc189f6210..e963ee66d36 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-1.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-1.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE y
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-10.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-10.c
index 7c42206d315..eb85843565d 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-10.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-10.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 127.5 * 64 * 1024
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-2.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-2.c
index 69fdd16e35a..cc8216d2312 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-2.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-2.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 0
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-3.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-3.c
index fba3a7a25b7..f5e51fa4dc8 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-3.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-3.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 100
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-4.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-4.c
index d53f30a4133..c903f4d9998 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-4.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-4.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 2 * 1024
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-5.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-5.c
index e0ff99ffbe1..691ec23f89f 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-5.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-5.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 63 * 1024
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-6.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-6.c
index c4bad9a2f46..9e4af23ae24 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-6.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-6.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 63.5 * 1024
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-7.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-7.c
index cba9ff89c1a..f0ce2d8bd77 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-7.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-7.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 64 * 1024
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-8.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-8.c
index 5a35411b344..caaab04df52 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-8.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-8.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 65 * 1024
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-9.c 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-9.c
index 5773d8052bc..2c42e858100 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-9.c
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca-9.c
@@ -1,6 +1,7 @@
 /* { dg-do compile } */
 /* { dg-options "-O2 -fstack-clash-protection --param 
stack-clash-protection-guard-size=16" } */
 /* { dg-require-effective-target supports_stack_clash_protection } */
+/* { dg-require-effective-target alloca } */
 
 #define SIZE 127 * 64 * 1024
 #include "stack-check-alloca.h"
diff --git a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca.h 
b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca.h
index a4f7fa2dd35..5e7406bf6ce 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca.h
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca.h
@@ -1,4 +1,3 @@
-#include <alloca.h>
 
 __attribute__((noinline, noipa))
 void g (char* ptr, int y)
@@ -8,6 +7,6 @@ void g (char* ptr, int y)
 
 void f_caller (int y)
 {
-  char* pStr = alloca(SIZE);
+  char* pStr = __builtin_alloca(SIZE);
   g (pStr, y);
-}
\ No newline at end of file
+}

Reply via email to