/* { dg-do compile } */ /* { dg-options "-mcmse" } */ struct span { int a, b; }; extern int qux (void); void __attribute__ ((cmse_nonsecure_entry)) foo (void) {} static void __attribute__ ((cmse_nonsecure_entry)) bar (void) {} /* { dg-warning "has no effect on functions with static linkage" } */ int __attribute__ ((cmse_nonsecure_entry)) baz (void) { return qux (); } void __attribute__ ((cmse_nonsecure_call)) quux (void) {} /* { dg-warning "attribute only applies to base type of a function pointer" } */ int __attribute__ ((cmse_nonsecure_call)) norf; /* { dg-warning "attribute only applies to base type of a function pointer" } */ /* { dg-final { scan-assembler-times "bxns" 2 } } */ /* { dg-final { scan-assembler "foo:" } } */ /* { dg-final { scan-assembler "__acle_se_foo:" } } */ /* { dg-final { scan-assembler-not "__acle_se_bar:" } } */ /* { dg-final { scan-assembler "baz:" } } */ /* { dg-final { scan-assembler "__acle_se_baz:" } } */ /* { dg-final { scan-assembler-not "__acle_se_quux:" } } */ /* { dg-final { scan-assembler-not "__acle_se_norf:" } } */