This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

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--;
+    }
+}

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]