diff options
author | Thomas Schwinge <tschwinge@baylibre.com> | 2024-12-16 11:48:11 +0100 |
---|---|---|
committer | Thomas Schwinge <tschwinge@baylibre.com> | 2025-01-08 23:16:35 +0100 |
commit | 975638b2d76ce6f26965ac3160c5af8029e16c29 (patch) | |
tree | bf10c33b6df04f90ab0e73ddf58a7d2511000a3a | |
parent | e5180fbcbcc356c71154413588288cbd30e5198d (diff) | |
download | gcc-975638b2d76ce6f26965ac3160c5af8029e16c29.zip gcc-975638b2d76ce6f26965ac3160c5af8029e16c29.tar.gz gcc-975638b2d76ce6f26965ac3160c5af8029e16c29.tar.bz2 |
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'.
-rw-r--r-- | gcc/doc/sourcebuild.texi | 3 | ||||
-rw-r--r-- | 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 f32f50b..0e0a7c8 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 e6a876d..d7d7217 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 } { |