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)9foo1 (int arg) 10 { 11 return func (arg) + fptr (arg); 12 } 13 14 void foo2(void (* foo)(void))15foo2 (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)23foo3 (nocf_check_t foo) 24 { 25 foo (); 26 } 27 28 void foo4(void (* foo)(void))29foo4 (void (*foo) (void) __attribute__((nocf_check))) 30 { 31 foo (); 32 } 33