Hi!
On 2016-05-20T18:09:26+0300, Alexander Monakov wrote:
> On Thu, 21 Apr 2016, Nathan Sidwell wrote:
>> On 04/20/16 12:59, Alexander Monakov wrote:
>> > This patch implements per-warp compiler-defined stacks under -msoft-stack
>> > option, and implements alloca on top of that.
> --- a/gcc/testsuite/lib/target-supports.exp
> +++ b/gcc/testsuite/lib/target-supports.exp
> proc check_effective_target_alloca {} {
> if { [istarget nvptx-*-*] } {
> - return 0
> + return [check_no_compiler_messages alloca assembly {
> + void f (void*);
> + void g (int n) { f (__builtin_alloca (n)); }
> + }]
> }
> return 1
> }
I wish to make this more explicit, and indeed we can easily use:
> --- a/gcc/config/nvptx/nvptx.h
> +++ b/gcc/config/nvptx/nvptx.h
> @@ -31,6 +31,8 @@
> builtin_assert ("machine=nvptx"); \
> builtin_assert ("cpu=nvptx"); \
> builtin_define ("__nvptx__"); \
> + if (TARGET_SOFT_STACK) \
> + builtin_define ("__nvptx_softstack__"); \
> } while (0)
Pushed to trunk branch commit 975638b2d76ce6f26965ac3160c5af8029e16c29
"nvptx: Add effective-target 'nvptx_softstack', use for effective-target
'alloca'",
see attached.
Grüße
Thomas
>From 975638b2d76ce6f26965ac3160c5af8029e16c29 Mon Sep 17 00:00:00 2001
From: Thomas Schwinge <[email protected]>
Date: Mon, 16 Dec 2024 11:48:11 +0100
Subject: [PATCH] nvptx: Add effective-target 'nvptx_softstack', use for
effective-target 'alloca'
..., and thereby making the check for effective-target 'alloca' more explicit.
As of commit 5012919d0bd344ac1888e8e531072f0ccbe24d2c (Subversion r242503)
"nvptx backend prerequisites for OpenMP offloading", the check for
effective-target 'alloca' did "use a compile test"; let's make this more
explicit: supported for '-msoft-stack', not supported otherwise.
gcc/testsuite/
* lib/target-supports.exp
(check_effective_target_nvptx_softstack): New.
(check_effective_target_alloca) [nvptx]: Use it.
gcc/
* doc/sourcebuild.texi (Effective-Target Keywords): Document
'nvptx_softstack'.
---
gcc/doc/sourcebuild.texi | 3 +++
gcc/testsuite/lib/target-supports.exp | 19 +++++++++++++++----
2 files changed, 18 insertions(+), 4 deletions(-)
diff --git a/gcc/doc/sourcebuild.texi b/gcc/doc/sourcebuild.texi
index f32f50b9c030..0e0a7c806ebc 100644
--- a/gcc/doc/sourcebuild.texi
+++ b/gcc/doc/sourcebuild.texi
@@ -2433,6 +2433,9 @@ nvptx code by default compiles for at least PTX ISA version 6.0.
@item nvptx_runtime_alias_ptx
The nvptx runtime environment supports the PTX ISA directive
@code{.alias}.
+
+@item nvptx_softstack
+nvptx @option{-msoft-stack} is enabled.
@end table
@subsubsection PowerPC-specific attributes
diff --git a/gcc/testsuite/lib/target-supports.exp b/gcc/testsuite/lib/target-supports.exp
index e6a876d9301a..d7d7217be058 100644
--- a/gcc/testsuite/lib/target-supports.exp
+++ b/gcc/testsuite/lib/target-supports.exp
@@ -1009,10 +1009,11 @@ proc check_effective_target_alloca {} {
return 0
}
if { [istarget nvptx-*-*] } {
- return [check_no_compiler_messages alloca assembly {
- void f (void*);
- void g (int n) { f (__builtin_alloca (n)); }
- }]
+ if { ![check_effective_target_nvptx_softstack] } {
+ return 0
+ } else {
+ return 1
+ }
}
return 1
}
@@ -14099,6 +14100,16 @@ proc check_effective_target_nvptx_default_ptx_isa_version_at_least_6_0 { } {
return [check_nvptx_default_ptx_isa_version_at_least 6 0]
}
+# Return 1 if nvptx '-msoft-stack' is enabled.
+
+proc check_effective_target_nvptx_softstack { } {
+ return [check_no_compiler_messages nvptx_softstack assembly {
+ #if !defined(__nvptx_softstack__)
+ #error !__nvptx_softstack__
+ #endif
+ }]
+}
+
# Return 1 if nvptx code with PTX ISA version major.minor or higher can be run.
proc check_nvptx_runtime_ptx_isa_version_at_least { major minor } {
--
2.34.1