/* Test to verify that parameters of qualified narrow char pointer type are accepted for attribute format printf, but others are rejected. { dg-do compile } { dg-options "-std=gnu99 -Wformat" } */ #define DONT_GNU_PROTOTYPE #include "format.h" #define FORMAT(archetype, arg1, arg2) \ __attribute__ ((format (archetype, arg1, arg2))) FORMAT (gnu_attr_printf, 1, 2) void fpc_1_2 (char *, ...); FORMAT (gnu_attr_printf, 1, 2) void fpcc_1_2 (const char *, ...); FORMAT (gnu_attr_printf, 1, 2) void frpc_1_2 (char * restrict, ...); FORMAT (gnu_attr_printf, 1, 2) void fpvc_1_2 (volatile char *, ...); FORMAT (gnu_attr_printf, 1, 2) void fpcvc_1_2 (const volatile char *, ...); FORMAT (gnu_attr_printf, 1, 2) void fpv_1_2 (void *, ...); /* { dg-error ".format. attribute argument 2 value .1. refers to parameter type .void \\\*." } */ FORMAT (gnu_attr_printf, 1, 2) void fppc_1_2 (char **, ...); /* { dg-error ".format. attribute argument 2 value .1. refers to parameter type .char \\\*\\\*." } */ FORMAT (gnu_attr_printf, 1, 2) void fpwc_1_2 (wchar_t *, ...); /* { dg-error ".format. attribute argument 2 value .1. refers to parameter type .wchar_t \\\*." } */