testsuite: pru: Add clobber test
authorDimitar Dimitrov <dimitar@dinux.eu>
Fri, 22 Jun 2018 03:35:42 +0000 (06:35 +0300)
committerDimitar Dimitrov <dimitar@dinux.eu>
Tue, 5 May 2020 17:42:57 +0000 (20:42 +0300)
gcc/testsuite/ChangeLog:

2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>

* gcc.target/pru/clobber-sp.c: New test.

Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/pru/clobber-sp.c [new file with mode: 0644]

index 092eab6914418e02e46e51a0aeff015bf81b034d..97a1ad5078e4ff8efff32a354835de0a4b21a8e4 100644 (file)
@@ -1,3 +1,7 @@
+2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
+
+       * gcc.target/pru/clobber-sp.c: New test.
+
 2020-05-05  Dimitar Dimitrov  <dimitar@dinux.eu>
 
        * gcc.target/pru/lra-framepointer-fragmentation-1.c: Update test to
diff --git a/gcc/testsuite/gcc.target/pru/clobber-sp.c b/gcc/testsuite/gcc.target/pru/clobber-sp.c
new file mode 100644 (file)
index 0000000..3cc0a60
--- /dev/null
@@ -0,0 +1,24 @@
+/* Test inline ASM clobber for SP register */
+
+/* { dg-do compile } */
+/* { dg-options "-O1" } */
+
+/* -O1 in the options is significant.  */
+
+extern void abort (void);
+
+int
+test1 (void)
+{
+  int res;
+
+  /* { dg-warning "listing the stack pointer register 'sp' in a clobber list is deprecated" "" { target pru-*-* } .+2 } */
+  /* { dg-message "note: the value of the stack pointer after an 'asm' statement must be the same as it was before the statement" "" { target pru-*-* } .+1 } */
+  asm volatile(
+              "ldi     %[res], 101             \n\t"
+              : [res] "=r" (res)
+              :
+              : "sp");
+
+  return res;
+}