2018-03-15 Steven G. Kargl <kargl@gcc.gnu.org>
[official-gcc.git] / gcc / testsuite / gcc.target / arc / interrupt-8.c
blob60fd87b43951d36304f1c89cb730d3d13fa6643d
1 /* { dg-do compile } */
2 /* { dg-skip-if "Not available for ARCv1" { arc700 || arc6xx } } */
3 /* { dg-options "-O2 -mirq-ctrl-saved=r0-r17" } */
5 /* Check if the registers R0-R17 are automatically saved. GP is saved
6 by the compiler. */
8 int a;
10 void __attribute__ ((interrupt("ilink")))
11 foo(void)
13 __asm__ volatile ( "" : : : "r0","r1","r2","r3");
14 __asm__ volatile ( "" : : : "r13","r14","r15","r16");
15 a++;
17 /* { dg-final { scan-assembler-not "st.*r13,\\\[sp" } } */
18 /* { dg-final { scan-assembler-not "st.*r14,\\\[sp" } } */
19 /* { dg-final { scan-assembler-not "st.*r15,\\\[sp" } } */
20 /* { dg-final { scan-assembler-not "st.*r16,\\\[sp" } } */
21 /* { dg-final { scan-assembler "st.*gp,\\\[sp,-4\\\]" } } */
22 /* { dg-final { scan-assembler "ld.*gp,\\\[sp\\\]" } } */
23 /* { dg-final { scan-assembler-not "st.*r0,\\\[sp" } } */
24 /* { dg-final { scan-assembler-not "st.*r1,\\\[sp" } } */
25 /* { dg-final { scan-assembler-not "st.*r2,\\\[sp" } } */
26 /* { dg-final { scan-assembler-not "st.*r3,\\\[sp" } } */
27 /* { dg-final { scan-assembler "rtie" } } */