1/* Test warnings for missing format attributes on function pointers. */ 2/* Origin: Kaveh Ghazi <ghazi@caip.rutgers.edu> */ 3/* { dg-do compile { target { *-*-mingw* } } } */ 4/* { dg-options "-std=gnu99 -Wmissing-format-attribute" } */ 5 6#define USE_SYSTEM_FORMATS 7#include "format.h" 8 9typedef void (*noattr_t) (const char *, ...); 10typedef noattr_t __attribute__ ((__format__(__ms_printf__, 1, 2))) attr_t; 11 12typedef void (*vnoattr_t) (const char *, va_list); 13typedef vnoattr_t __attribute__ ((__format__(__ms_printf__, 1, 0))) vattr_t; 14 15extern void foo1 (noattr_t); 16extern void foo2 (attr_t); 17extern void foo3 (vnoattr_t); 18extern void foo4 (vattr_t); 19 20void 21foo (noattr_t na, attr_t a, vnoattr_t vna, vattr_t va) 22{ 23 foo1 (na); 24 foo1 (a); /* { dg-warning "candidate" "parameter passing warning" } */ 25 foo2 (na); 26 foo2 (a); 27 28 foo3 (vna); 29 foo3 (va); /* { dg-warning "candidate" "parameter passing warning" } */ 30 foo4 (vna); 31 foo4 (va); 32} 33