From patchwork Tue Jul 13 16:09:36 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: PATCH: test case for PR39839 Date: Tue, 13 Jul 2010 06:09:36 -0000 From: Sandra Loosemore X-Patchwork-Id: 58801 Message-Id: <4C3C8FC0.3040205@codesourcery.com> To: gcc-patches@gcc.gnu.org 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 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--; + } +}