mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-29 08:20:27 +08:00
* 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>
|
||||
|
||||
PR c++/15967
|
||||
|
@ -5,22 +5,15 @@
|
||||
/* { 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,
|
||||
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
|
||||
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
|
||||
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;
|
||||
for (i = *a; i < *b; i += *c)
|
||||
for (j = *a; j < *b; j += *d)
|
||||
for (k = *a; k < *c; k += *d)
|
||||
for (l = *b; k < *c; k += *d)
|
||||
for (m = *d; k < *c; k += *b)
|
||||
*tot += i + j + k + l + m;
|
||||
return *tot;
|
||||
void
|
||||
foo(void)
|
||||
{
|
||||
__asm volatile ("" : : :
|
||||
"r4", "r5", "r6", "r7", "r8", "r9", "sl", "fp", "lr");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user