blob: 7f92a4c28b3333e4c8fdc256211f3ed74a383cd4 [file] [log] [blame]
/* { dg-do compile } */
/* { dg-options "-mcmse" } */
struct span {
int a, b;
};
struct span2 {
float a, b, c, d;
};
union test_union
{
long long a;
int b;
struct span2 c;
} test_union;
void __attribute__ ((cmse_nonsecure_entry))
foo (long long a, int b, long long c) {} /* { dg-error "not available to functions with arguments passed on the stack" } */
void __attribute__ ((cmse_nonsecure_entry))
bar (long long a, int b, struct span c) {} /* { dg-error "not available to functions with arguments passed on the stack" } */
void __attribute__ ((cmse_nonsecure_entry))
baz (int a, ...) {} /* { dg-error "not available to functions with variable number of arguments" } */
struct span __attribute__ ((cmse_nonsecure_entry))
qux (void) { /* { dg-error "not available to functions that return value on the stack" } */
struct span ret = {0, 0};
return ret;
}
void __attribute__ ((cmse_nonsecure_entry))
norf (struct span2 a) {}
void __attribute__ ((cmse_nonsecure_entry))
foo2 (long long a, int b, union test_union c) {} /* { dg-error "not available to functions with arguments passed on the stack" } */
typedef void __attribute__ ((cmse_nonsecure_call)) bar2 (long long a, int b, long long c); /* { dg-error "not available to functions with arguments passed on the stack" } */
typedef void __attribute__ ((cmse_nonsecure_call)) baz2 (long long a, int b, struct span c); /* { dg-error "not available to functions with arguments passed on the stack" } */
typedef struct span __attribute__ ((cmse_nonsecure_call)) qux2 (void); /* { dg-error "not available to functions that return value on the stack" } */
typedef void __attribute__ ((cmse_nonsecure_call)) norf2 (int a, ...); /* { dg-error "not available to functions with variable number of arguments" } */