1 /* { dg-do compile } */
2 /* { dg-options "-fcf-protection" } */
3 
4 int func (int) __attribute__ ((nocf_check));
5 int (*fptr) (int) __attribute__ ((nocf_check));
6 typedef void (*nocf_check_t) (void) __attribute__ ((nocf_check));
7 
8 int
foo1(int arg)9 foo1 (int arg)
10 {
11   return func (arg) + fptr (arg);
12 }
13 
14 void
foo2(void (* foo)(void))15 foo2 (void (*foo) (void))
16 {
17   void (*func) (void) __attribute__((nocf_check)) = foo; /* { dg-warning "incompatible pointer type" "" { target c } } */
18 							 /* { dg-error "invalid conversion" "" { target c++ } .-1 } */
19   func ();
20 }
21 
22 void
foo3(nocf_check_t foo)23 foo3 (nocf_check_t foo)
24 {
25   foo ();
26 }
27 
28 void
foo4(void (* foo)(void))29 foo4 (void (*foo) (void) __attribute__((nocf_check)))
30 {
31   foo ();
32 }
33