https://gcc.gnu.org/g:fb62d374442045583ea4d68f3c215fdc441da7cb
commit fb62d374442045583ea4d68f3c215fdc441da7cb Author: Thomas Schwinge <[email protected]> Date: Fri Dec 13 11:40:01 2024 +0100 nvptx: Add '__builtin_stack_address()' test case Documenting the status quo. gcc/testsuite/ * gcc.target/nvptx/__builtin_stack_address-1.c: New. (cherry picked from commit 91dec10f8b7502bdd333d75ab7a9e23a58c3f32d) Diff: --- gcc/testsuite/ChangeLog.omp | 5 +++ .../gcc.target/nvptx/__builtin_stack_address-1.c | 36 ++++++++++++++++++++++ 2 files changed, 41 insertions(+) diff --git a/gcc/testsuite/ChangeLog.omp b/gcc/testsuite/ChangeLog.omp index 4591c70519bf..bc3dfa8d0805 100644 --- a/gcc/testsuite/ChangeLog.omp +++ b/gcc/testsuite/ChangeLog.omp @@ -1,5 +1,10 @@ 2025-02-18 Thomas Schwinge <[email protected]> + Backported from trunk: + 2025-01-10 Thomas Schwinge <[email protected]> + + * gcc.target/nvptx/__builtin_stack_address-1.c: New. + Backported from trunk: 2025-01-08 Thomas Schwinge <[email protected]> diff --git a/gcc/testsuite/gcc.target/nvptx/__builtin_stack_address-1.c b/gcc/testsuite/gcc.target/nvptx/__builtin_stack_address-1.c new file mode 100644 index 000000000000..5e976dc384bc --- /dev/null +++ b/gcc/testsuite/gcc.target/nvptx/__builtin_stack_address-1.c @@ -0,0 +1,36 @@ +/* Document what we do for '__builtin_stack_address()'. */ + +/* { dg-do compile } + TODO We can't 'assemble' this -- it's invalid PTX code. */ +/* { dg-options -O3 } */ +/* { dg-additional-options -save-temps } */ +/* { dg-final { check-function-bodies {** } {} } } */ + +void sink(void *); + +void f(void) +{ + void *p; + p = __builtin_stack_address(); + sink(p); +} +/* +** f: +** \.visible \.func f +** { +** { +** \.param\.u64 %out_arg1; +** st\.param\.u64 \[%out_arg1\], %stack; +** call sink, \(%out_arg1\); +** } +** ret; +*/ + +/* The concept of a '%stack' pointer doesn't apply like this for + '-mno-soft-stack': PTX "native" stacks (TODO), and for '-msoft-stack' in + this form also constitutes invalid PTX code (TODO). + + { dg-final { scan-assembler-not {%stack} { xfail *-*-* } } } */ + +/* As this is an internal-use built-in function, we don't bother with + emitting proper error diagnostics. */
