(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-ssa/
builtin-sprintf-warn-28.c
       1  /* Verify that -Wformat-overflow uses context-sensitive ranges even
       2     at -O0 to avoid both false positives and negatives.
       3     { dg-do compile }
       4     { dg-options "-O0 -Wall" } */
       5  
       6  extern int sprintf (char*, const char*, ...);
       7  
       8  extern char a[4];
       9  
      10  void test_context_range (int c)
      11  {
      12    int i = 998;
      13  
      14    /* Prior to the switch to Ranger in GCC 12 -Wformat-overflow triggers
      15       for both calls because EVRP doesn't expose the accurate range of
      16       the argument.  */
      17    if (c)
      18      sprintf (a, "%i", i + 2);   // { dg-warning "writing a terminating nul past the end of the destination" }
      19    else
      20      sprintf (a, "%i", i + 1);   // { dg-bogus "-Wformat-overflow" }
      21  }