aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorThomas Schwinge <tschwinge@baylibre.com>2024-12-13 11:40:01 +0100
committerThomas Schwinge <tschwinge@baylibre.com>2025-01-10 11:33:11 +0100
commit91dec10f8b7502bdd333d75ab7a9e23a58c3f32d (patch)
tree6a92a9af50ad146099a0215904c409974c156a01 /gcc
parentf447c3c0dff4c24acc4c3130925b95ff401cb1ec (diff)
downloadgcc-91dec10f8b7502bdd333d75ab7a9e23a58c3f32d.zip
gcc-91dec10f8b7502bdd333d75ab7a9e23a58c3f32d.tar.gz
gcc-91dec10f8b7502bdd333d75ab7a9e23a58c3f32d.tar.bz2
nvptx: Add '__builtin_stack_address()' test case
Documenting the status quo. gcc/testsuite/ * gcc.target/nvptx/__builtin_stack_address-1.c: New.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.target/nvptx/__builtin_stack_address-1.c36
1 files changed, 36 insertions, 0 deletions
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 0000000..5e976dc
--- /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. */