aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.9/gcc/testsuite/gcc.target/sparc/sparc-ret.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.9/gcc/testsuite/gcc.target/sparc/sparc-ret.c')
-rw-r--r--gcc-4.9/gcc/testsuite/gcc.target/sparc/sparc-ret.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/gcc.target/sparc/sparc-ret.c b/gcc-4.9/gcc/testsuite/gcc.target/sparc/sparc-ret.c
new file mode 100644
index 000000000..f58b059e5
--- /dev/null
+++ b/gcc-4.9/gcc/testsuite/gcc.target/sparc/sparc-ret.c
@@ -0,0 +1,24 @@
+/* { dg-do compile } */
+/* { dg-skip-if "no register windows" { *-*-* } { "-mflat" } { "" } } */
+/* { dg-require-effective-target ilp32 } */
+/* { dg-options "-mcpu=ultrasparc -O" } */
+
+/* Make sure that Ultrasparc return insn do not read below the stack. */
+
+int bar (int a, int b, int c, int d, int e, int f, int g, int h)
+{
+ int res;
+
+ toto (&res);
+ return h;
+}
+/* { dg-final { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*ld\[ \t\]*\\\[%sp\\+96\\\]" } } */
+
+int bar2 ()
+{
+ int res;
+
+ toto (&res);
+ return res;
+}
+/* { dg-final { scan-assembler "return\[ \t\]*%i7\\+8\n\[^\n\]*nop" } } */