summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gcc.dg
diff options
context:
space:
mode:
authorxguo <xguo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-30 08:11:30 +0000
committerxguo <xguo@138bc75d-0d04-0410-961f-82ee72b054a4>2013-05-30 08:11:30 +0000
commit0686440e2329897c3290940d119b4b7c219179bf (patch)
tree7d5df32b06814b7ade77dd32dec02366031c6158 /gcc/testsuite/gcc.dg
parentcf94bbe6e0dcd866d07eed4da6f5b48313cb2a36 (diff)
downloadgcc-0686440e2329897c3290940d119b4b7c219179bf.tar.gz
gcc/ChangeLog:
2013-05-30 Bernd Schmidt <bernds@codesourcery.com> Zhenqiang Chen <zhenqiang.chen@linaro.org> * config/arm/arm-protos.h: Add and update function protos. * config/arm/arm.c (use_simple_return_p): New added. (thumb2_expand_return): Check simple_return flag. * config/arm/arm.md: Add simple_return and conditional simple_return. * config/arm/iterators.md: Add iterator for return and simple_return. gcc/testsuite/ChangeLog: 2013-05-30 Zhenqiang Chen <zhenqiang.chen@linaro.org> * gcc.dg/shrink-wrap-alloca.c: New added. * gcc.dg/shrink-wrap-pretend.c: New added. * gcc.dg/shrink-wrap-sibcall.c: New added. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@199439 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/testsuite/gcc.dg')
-rw-r--r--gcc/testsuite/gcc.dg/shrink-wrap-alloca.c13
-rw-r--r--gcc/testsuite/gcc.dg/shrink-wrap-pretend.c36
-rw-r--r--gcc/testsuite/gcc.dg/shrink-wrap-sibcall.c26
3 files changed, 75 insertions, 0 deletions
diff --git a/gcc/testsuite/gcc.dg/shrink-wrap-alloca.c b/gcc/testsuite/gcc.dg/shrink-wrap-alloca.c
new file mode 100644
index 00000000000..9e69ca16645
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/shrink-wrap-alloca.c
@@ -0,0 +1,13 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+
+extern int * alloca (int);
+
+int *p;
+
+void
+test (int a)
+{
+ if (a > 0)
+ p = alloca (4);
+}
diff --git a/gcc/testsuite/gcc.dg/shrink-wrap-pretend.c b/gcc/testsuite/gcc.dg/shrink-wrap-pretend.c
new file mode 100644
index 00000000000..6e20ca12e98
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/shrink-wrap-pretend.c
@@ -0,0 +1,36 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <stdarg.h>
+
+#define DEBUG_BUFFER_SIZE 80
+int unifi_debug = 5;
+
+void
+unifi_trace (void* ospriv, int level, const char *fmt, ...)
+{
+ static char s[DEBUG_BUFFER_SIZE];
+ va_list args;
+ unsigned int len;
+
+ if (!ospriv)
+ return;
+
+ if (unifi_debug >= level)
+ {
+ va_start (args, fmt);
+ len = vsnprintf (&(s)[0], (DEBUG_BUFFER_SIZE), fmt, args);
+ va_end (args);
+
+ if (len >= DEBUG_BUFFER_SIZE)
+ {
+ (s)[DEBUG_BUFFER_SIZE - 2] = '\n';
+ (s)[DEBUG_BUFFER_SIZE - 1] = 0;
+ }
+
+ printf ("%s", s);
+ }
+}
+
diff --git a/gcc/testsuite/gcc.dg/shrink-wrap-sibcall.c b/gcc/testsuite/gcc.dg/shrink-wrap-sibcall.c
new file mode 100644
index 00000000000..193bec2ce69
--- /dev/null
+++ b/gcc/testsuite/gcc.dg/shrink-wrap-sibcall.c
@@ -0,0 +1,26 @@
+/* { dg-do compile } */
+/* { dg-options "-O2 -g" } */
+
+unsigned char a, b, d, f, g;
+
+int test (void);
+
+int
+baz (int c)
+{
+ if (c == 0) return test ();
+ if (b & 1)
+ {
+ g = 0;
+ int e = (a & 0x0f) - (g & 0x0f);
+
+ if (!a) b |= 0x80;
+ a = e + test ();
+ f = g/5 + a*3879 + b *2985;
+ }
+ else
+ {
+ f = g + a*39879 + b *25;
+ }
+ return test ();
+}