[PATCH, GCC/ARM, 4/10] Clear GPR with CLRM
[official-gcc.git] / gcc / testsuite / gcc.target / arm / cmse / struct-1.c
blob90fdac18e30424edca60b6f884227adbf716899d
1 /* { dg-do run } */
2 /* { dg-options "--save-temps -mcmse -Wl,--section-start,.gnu.sgstubs=0x00400000" } */
4 typedef struct
6 unsigned char a;
7 unsigned short b;
8 } test_st;
10 test_st __attribute__ ((cmse_nonsecure_entry)) foo (void)
12 test_st t;
13 t.a = 255u;
14 t.b = 32767u;
15 return t;
18 int
19 main (void)
21 test_st t;
22 t = foo ();
23 if (t.a != 255u || t.b != 32767u)
24 __builtin_abort ();
25 return 0;
28 /* { dg-final { scan-assembler "vstr\tFPCXTNS, \\\[sp, #-4\\\]!" { target arm_cmse_clear_ok } } } */
29 /* { dg-final { scan-assembler "movs\tr1, #255" } } */
30 /* { dg-final { scan-assembler "movt\tr1, 65535" } } */
31 /* { dg-final { scan-assembler "ands\tr0(, r0)?, r1" } } */
32 /* { dg-final { scan-assembler "clrm\t\{r1, r2, r3, ip, APSR\}" { target arm_cmse_clear_ok } } } */
33 /* { dg-final { scan-assembler "vldr\tFPCXTNS, \\\[sp\\\], #4" { target arm_cmse_clear_ok } } } */
34 /* { dg-final { scan-assembler "bxns" } } */