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