/* { dg-do compile } */ | |
/* { dg-options "-O1" } */ | |
char temp[16]; | |
extern int foo1 (void); | |
void foo (void) | |
{ | |
int i; | |
int len; | |
while (1) | |
{ | |
len = foo1 (); | |
register int a asm ("r0") = 5; | |
register char *b asm ("r1") = temp; | |
register int c asm ("r2") = len; | |
asm volatile ("mov %[r0], %[r0]\n mov %[r1], %[r1]\n mov %[r2], %[r2]\n" | |
: "+m"(*b) | |
: [r0]"r"(a), [r1]"r"(b), [r2]"r"(c)); | |
for (i = 0; i < len; i++) | |
{ | |
if (temp[i] == 10) | |
return; | |
} | |
} | |
} | |
/* { dg-final { scan-assembler "\[\\t \]+mov\ r1,\ r1" } } */ |