b979bf17e8a1d077ada035cf294854f3d740492d
[platform/upstream/gcc48.git] / gcc / testsuite / gcc.target / arm / interrupt-2.c
1 /* Verify that prologue and epilogue are correct for functions with
2    __attribute__ ((interrupt)).  */
3 /* { dg-do compile } */
4 /* { dg-options "-O1" } */
5
6 /* This test is not valid when -mthum.  We just cheat.  */
7 #ifndef __thumb__
8 extern void bar (int);
9 extern void test (void) __attribute__((__interrupt__));
10
11 int foo;
12 void test()
13 {
14   funcptrs(foo);
15   foo = 0;
16 }
17 #else
18 void test ()
19 {
20   asm ("stmfd\tsp!, {r0, r1, r2, r3, r4, r5, ip, lr}");
21   asm ("ldmfd\tsp!, {r0, r1, r2, r3, r4, r5, ip, pc}^");
22 }
23 #endif
24
25 /* { dg-final { scan-assembler "stmfd\tsp!, {r0, r1, r2, r3, r4, r5, ip, lr}" } } */
26 /* { dg-final { scan-assembler "ldmfd\tsp!, {r0, r1, r2, r3, r4, r5, ip, pc}\\^" } } */