This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
PATCH: test case for PR39839
- From: Sandra Loosemore <sandra at codesourcery dot com>
- To: gcc-patches at gcc dot gnu dot org
- Date: Tue, 13 Jul 2010 12:09:36 -0400
- Subject: PATCH: test case for PR39839
The code size regression reported in PR39839 appears to have been fixed by a
combination of r158189 (Carrot's patch for PR42601) and r162043 (the second part
of my patch for PR42505). It seems worthwhile to add the test case so we can
check that it doesn't regress and start generating unnecessary spills again. OK
to check in?
-Sandra
2010-07-13 Sandra Loosemore <sandra@codesourcery.com>
PR tree-optimization/39839
gcc/testsuite/
* gcc.target/arm/pr39839.c: New test case.
Index: gcc/testsuite/gcc.target/arm/pr39839.c
===================================================================
--- gcc/testsuite/gcc.target/arm/pr39839.c (revision 0)
+++ gcc/testsuite/gcc.target/arm/pr39839.c (revision 0)
@@ -0,0 +1,24 @@
+/* { dg-options "-mthumb -Os -march=armv5te -mthumb-interwork -fpic" } */
+/* { dg-require-effective-target arm_thumb1_ok } */
+/* { dg-final { scan-assembler-not "str\[\\t \]*r.,\[\\t \]*.sp," } } */
+
+struct S
+{
+ int count;
+ char *addr;
+};
+
+void func(const char*, const char*, int, const char*);
+
+/* This function should not need to spill to the stack. */
+void test(struct S *p)
+{
+ int off = p->count;
+ while (p->count >= 0)
+ {
+ const char *s = "xyz";
+ if (*p->addr) s = "pqr";
+ func("abcde", p->addr + off, off, s);
+ p->count--;
+ }
+}