/* PR tree-optimization/86274 - SEGFAULT when logging std::to_string(NAN) { dg-do run } { dg-options "-O2 -Wall" } { dg-additional-options "-Wl,-u,_printf_float" { target newlib_nano_io } } */ #define X "0xdeadbeef" #define nan(x) __builtin_nan (x) volatile double nan_0 = nan ("0"); volatile double nan_x = nan (X); int main (void) { char buf[80]; /* Verify that folded results match those of the library calls. */ int cst_n_0 = __builtin_sprintf (buf, "%g", nan ("0")); int cst_n_x = __builtin_sprintf (buf, "%g", nan (X)); int var_n_0 = __builtin_sprintf (buf, "%g", nan_0); int var_n_x = __builtin_sprintf (buf, "%g", nan_x); if (cst_n_0 != var_n_0) __builtin_abort (); if (cst_n_x != var_n_x) __builtin_abort (); return 0; }