1 /* { dg-do compile } */
2 /* { dg-options "-O1" } */
3
4 char temp[16];
5 extern int foo1 (void);
6
7 void foo (void)
8 {
9 int i;
10 int len;
11
12 while (1)
13 {
14 len = foo1 ();
15 register int a asm ("r0") = 5;
16 register char *b asm ("r1") = temp;
17 register int c asm ("r2") = len;
18 asm volatile ("mov %[r0], %[r0]\n mov %[r1], %[r1]\n mov %[r2], %[r2]\n"
19 : "+m"(*b)
20 : [r0]"r"(a), [r1]"r"(b), [r2]"r"(c));
21
22 for (i = 0; i < len; i++)
23 {
24 if (temp[i] == 10)
25 return;
26 }
27 }
28 }
29
30 /* { dg-final { scan-assembler "\[\\t \]+mov\ r1,\ r1" } } */