/* Test for format attributes: test use of __attribute__
   in prefix attributes.  */
/* Origin: Joseph Myers <jsm28@cam.ac.uk> */
/* { dg-do compile { target { *-*-mingw* } } } */
/* { dg-options "-std=gnu99 -Wformat" } */

#define USE_SYSTEM_FORMATS
#include "format.h"

extern __attribute__((format(ms_printf, 1, 2))) void tformatprintf0 (const char *, ...);
extern void __attribute__((format(ms_printf, 1, 2))) tformatprintf1 (const char *, ...);
extern void foo (void), __attribute__((format(ms_printf, 1, 2))) tformatprintf2 (const char *, ...);
extern __attribute__((noreturn)) void bar (void), __attribute__((format(ms_printf, 1, 2))) tformatprintf3 (const char *, ...);

void
baz (int i, int *ip, double d)
{
  tformatprintf0 ("%d", i);
  tformatprintf0 ("%"); /* { dg-warning "format" "attribute format printf case 0" } */
  tformatprintf1 ("%d", i);
  tformatprintf1 ("%"); /* { dg-warning "format" "attribute format printf case 1" } */
  tformatprintf2 ("%d", i);
  tformatprintf2 ("%"); /* { dg-warning "format" "attribute format printf case 2" } */
  tformatprintf3 ("%d", i);
  tformatprintf3 ("%"); /* { dg-warning "format" "attribute format printf case 3" } */
}
