Hi Andrew,

> On 6 Jan 2020, at 23:24, Andrew Pinski <pins...@gmail.com> wrote:
> Just one small suggestion:

Sure

> Instead of:
> -  char* pStr = alloca(SIZE);
> +  char* pStr = __builtin_alloca(SIZE);
> 
> Why not just do:
> -#include <alloca.h>
> +#define alloca __builtin_alloca

Yes, good idea.

Revised patch attached, where I also added a comment
explaining why we are doing this.

Re-tested on aarch64-linux.

Is this one ok ?

Thanks,

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. #define alloca __builtin_alloca
        instead.
        * 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 7fc189f..e963ee6 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 7c42206..eb85843 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 69fdd16..cc8216d 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 fba3a7a..f5e51fa 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 d53f30a..c903f4d 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 e0ff99f..691ec23 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 c4bad9a..9e4af23 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 cba9ff8..f0ce2d8 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 5a35411..caaab04 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 5773d80..2c42e85 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 a4f7fa2..4cacd92 100644
--- a/gcc/testsuite/gcc.target/aarch64/stack-check-alloca.h
+++ b/gcc/testsuite/gcc.target/aarch64/stack-check-alloca.h
@@ -1,4 +1,7 @@
-#include <alloca.h>
+
+/* Avoid inclusion of alloca.h, which is unavailable
+   on some systems.  */
+#define alloca __builtin_alloca
 
 __attribute__((noinline, noipa))
 void g (char* ptr, int y)
@@ -10,4 +13,4 @@ void f_caller (int y)
 {
   char* pStr = alloca(SIZE);
   g (pStr, y);
-}
\ No newline at end of file
+}
-- 
1.9.1

Reply via email to