* gcc.dg/arm-mmx-1.c: Use asm to clobber registers.
From-SVN: r83189
This commit is contained in:
parent
0792ab197b
commit
844f5ccfbb
|
@ -1,3 +1,7 @@
|
||||||
|
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 @@
|
||||||
/* { 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;
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue