blob: 030e276698d105dd1ab1a7b775fb5fef48e02c59 [file] [log] [blame]
/* PR 79800 - wrong snprintf result range with precision in a narrow
negative-positive range
{ dg-do "run" { target c99_runtime } }
{ dg-options "-O2 -Wall" } */
#define FMT "%.*a"
char fmt[] = FMT;
volatile double x = 1.23456789;
void f (int p)
{
if (p < -1 || 0 < p)
p = -1;
char d[30];
int n1 = __builtin_sprintf (d, "%.*a", p, x);
const char *s = n1 < 20 ? "< 20" : ">= 20";
if (__builtin_strcmp (s, ">= 20"))
__builtin_abort ();
}
volatile int i = -1;
int main ()
{
f (i);
return 0;
}