(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
tree-ssa/
builtin-sprintf-warn-17.c
       1  /* PR tree-optimization/80497 - ICE at -O1 and above on valid code on
       2     x86_64-linux-gnu in "tree_to_uhwi"
       3     { dg-do compile }
       4     { dg-options "-O2 -Wall -Wformat-overflow" }
       5     { dg-require-effective-target int128 } */
       6  
       7  extern char buf[];
       8  
       9  const __int128_t sint128_max
      10    = (__int128_t)1 << (sizeof sint128_max * __CHAR_BIT__ - 2);
      11  
      12  void fn0 (void)
      13  {
      14    __int128_t si128 = 0;
      15  
      16    __builtin_sprintf (buf, "%*i", si128, 0);
      17  
      18    __builtin_sprintf (buf, "%.*i", si128, 0);
      19  
      20    __builtin_sprintf (buf, "%i", si128);
      21  
      22    __builtin_sprintf (buf, "%2$*1$i", si128, 0);
      23  
      24    __builtin_sprintf (buf, "%2$.*1$i", si128, 0);
      25  }
      26  
      27  void fn1 (void)
      28  {
      29    __int128_t si128 = sint128_max;
      30  
      31    __builtin_sprintf (buf, "%*i", si128, 0);
      32  
      33    __builtin_sprintf (buf, "%.*i", si128, 0);
      34  
      35    __builtin_sprintf (buf, "%i", si128);
      36  
      37    __builtin_sprintf (buf, "%2$*1$i", si128, 0);
      38  
      39    __builtin_sprintf (buf, "%2$.*1$i", si128, 0);
      40  }
      41  
      42  /* { dg-prune-output "expects argument of type .int." } */