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