Commit 844f5ccf by Paul Brook Committed by Paul Brook

* gcc.dg/arm-mmx-1.c: Use asm to clobber registers.

From-SVN: r83189
parent 0792ab19
2004-06-15 Paul Brook <paul@codesourcery.com>
* gcc.dg/arm-mmx-1.c: Use asm to clobber registers.
2004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org> 2004-06-14 Giovanni Bajo <giovannibajo@gcc.gnu.org>
PR c++/15967 PR c++/15967
......
...@@ -5,22 +5,15 @@ ...@@ -5,22 +5,15 @@
/* { dg-final { global compiler_flags; if ![string match "*-mthumb *" $compiler_flags] { scan-assembler "ldmfd\[ ]sp!.*ip,\[ ]*pc" } } } */ /* { dg-final { global compiler_flags; if ![string match "*-mthumb *" $compiler_flags] { scan-assembler "ldmfd\[ ]sp!.*ip,\[ ]*pc" } } } */
/* This function uses all the call-saved registers, namely r4, r5, r6, /* This function uses all the call-saved registers, namely r4, r5, r6,
r7, r8, r9, sl, fp. Since we also save pc, that leaves an odd r7, r8, r9, sl, fp. Since we also save lr, that leaves an odd
number of registers, and the compiler will push ip to align the number of registers, and the compiler will push ip to align the
stack. Make sure that we restore ip into ip, not into sp as is stack. Make sure that we restore ip into ip, not into sp as is
done when using a frame pointer. The -mno-apcs-frame option done when using a frame pointer. The -mno-apcs-frame option
permits the frame pointer to be used as an ordinary register. */ permits the frame pointer to be used as an ordinary register. */
int
foo(int *a, int *b, int *c, int *d, int *tot)
{
int i, j, k, l, m, n, o;
*tot = 0; void
for (i = *a; i < *b; i += *c) foo(void)
for (j = *a; j < *b; j += *d) {
for (k = *a; k < *c; k += *d) __asm volatile ("" : : :
for (l = *b; k < *c; k += *d) "r4", "r5", "r6", "r7", "r8", "r9", "sl", "fp", "lr");
for (m = *d; k < *c; k += *b)
*tot += i + j + k + l + m;
return *tot;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment