Merged revisions 195034,195219,195245,195357,195374,195428,195599,195673,195809 via...
[official-gcc.git] / main / gcc / testsuite / gcc.target / arm / thumb-find-work-register.c
blobf2c0225a4d2a91ad3cfc7e6ae66dac24963fb562
1 /* Wrong method to get number of arg reg will cause argument corruption. */
2 /* { dg-do run } */
3 /* { dg-require-effective-target arm_eabi } */
4 /* { dg-options "-mthumb -O1" } */
6 extern void abort (void);
8 int foo (int, int, int, int) __attribute__((noinline));
10 int
11 foo (int a, int b, int c, int d)
13 register int m asm ("r8");
15 m = a;
16 m += b;
17 m += c;
18 m += d;
20 asm ("" : "=r" (m) : "0" (m));
22 return m;
25 int
26 main ()
28 volatile int a = 10;
29 volatile int b = 20;
30 volatile int c = 30;
31 volatile int d = 40;
32 volatile int sum = 0;
34 sum = foo (a, b, c, d);
36 if (sum != 100)
37 abort ();
39 return 0;