(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
format/
c2x-printf-1.c
       1  /* Test for printf formats.  Formats using C2X features.  */
       2  /* { dg-do compile } */
       3  /* { dg-options "-std=c2x -pedantic -Wformat" } */
       4  
       5  #include "format.h"
       6  
       7  void
       8  foo (unsigned int u, unsigned short us, unsigned char uc, unsigned long ul,
       9       unsigned long long ull, uintmax_t uj, size_t z, unsigned_ptrdiff_t ut,
      10       int_least8_t i8, int_least16_t i16, int_least32_t i32, int_least64_t i64,
      11       uint_least8_t u8, uint_least16_t u16, uint_least32_t u32,
      12       uint_least64_t u64, int_fast8_t if8, int_fast16_t if16, int_fast32_t if32,
      13       int_fast64_t if64, uint_fast8_t uf8, uint_fast16_t uf16,
      14       uint_fast32_t uf32, uint_fast64_t uf64)
      15  {
      16    /* Use of %b with each length modifier and other valid features.  */
      17    printf ("%b %hb %hhb %lb %llb %jb %zb %tb\n", u, us, uc, ul, ull, uj, z, ut);
      18    printf ("%*.*llb\n", 1, 2, ull);
      19    printf ("%-b\n", u);
      20    printf ("%#b\n", u);
      21    printf ("%08b\n", u);
      22    /* Flags valid on signed conversions only.  */
      23    printf ("%+b\n", u); /* { dg-warning "flag" } */
      24    printf ("% b\n", u); /* { dg-warning "flag" } */
      25    /* Flags ignored in certain combinations.  */
      26    printf ("%-08b\n", u); /* { dg-warning "ignored" } */
      27    printf ("%08.5b\n", u); /* { dg-warning "ignored" } */
      28    /* Use of 'L' and 'q' for long long is an extension.  */
      29    printf ("%Lb", ull); /* { dg-warning "does not support" } */
      30    printf ("%qb", ull); /* { dg-warning "does not support" } */
      31    /* Use of %wN and %wfN with each valid conversion specifier.  */
      32    printf ("%w8d %w16d %w32d %w64d %wf8d %wf16d %wf32d %wf64d",
      33  	  i8, i16, i32, i64, if8, if16, if32, if64);
      34    printf ("%w8i %w16i %w32i %w64i %wf8i %wf16i %wf32i %wf64i",
      35  	  i8, i16, i32, i64, if8, if16, if32, if64);
      36    printf ("%w8b %w16b %w32b %w64b %wf8b %wf16b %wf32b %wf64b",
      37  	  u8, u16, u32, u64, uf8, uf16, uf32, uf64);
      38    printf ("%w8o %w16o %w32o %w64o %wf8o %wf16o %wf32o %wf64o",
      39  	  u8, u16, u32, u64, uf8, uf16, uf32, uf64);
      40    printf ("%w8u %w16u %w32u %w64u %wf8u %wf16u %wf32u %wf64u",
      41  	  u8, u16, u32, u64, uf8, uf16, uf32, uf64);
      42    printf ("%w8x %w16x %w32x %w64x %wf8x %wf16x %wf32x %wf64x",
      43  	  u8, u16, u32, u64, uf8, uf16, uf32, uf64);
      44    printf ("%w8X %w16X %w32X %w64X %wf8X %wf16X %wf32X %wf64X",
      45  	  u8, u16, u32, u64, uf8, uf16, uf32, uf64);
      46    printf ("%w8n %w16n %w32n %w64n %wf8n %wf16n %wf32n %wf64n",
      47  	  &i8, &i16, &i32, &i64, &if8, &if16, &if32, &if64);
      48    /* Use of %wN and %wfN with bad conversion specifiers.  */
      49    printf ("%w8a", i8); /* { dg-warning "length modifier" } */
      50    printf ("%w16a", i16); /* { dg-warning "length modifier" } */
      51    printf ("%w32a", i32); /* { dg-warning "length modifier" } */
      52    printf ("%w64a", i64); /* { dg-warning "length modifier" } */
      53    printf ("%wf8a", if8); /* { dg-warning "length modifier" } */
      54    printf ("%wf16a", if16); /* { dg-warning "length modifier" } */
      55    printf ("%wf32a", if32); /* { dg-warning "length modifier" } */
      56    printf ("%wf64a", if64); /* { dg-warning "length modifier" } */
      57    printf ("%w8A", i8); /* { dg-warning "length modifier" } */
      58    printf ("%w16A", i16); /* { dg-warning "length modifier" } */
      59    printf ("%w32A", i32); /* { dg-warning "length modifier" } */
      60    printf ("%w64A", i64); /* { dg-warning "length modifier" } */
      61    printf ("%wf8A", if8); /* { dg-warning "length modifier" } */
      62    printf ("%wf16A", if16); /* { dg-warning "length modifier" } */
      63    printf ("%wf32A", if32); /* { dg-warning "length modifier" } */
      64    printf ("%wf64A", if64); /* { dg-warning "length modifier" } */
      65    printf ("%w8c", i8); /* { dg-warning "length modifier" } */
      66    printf ("%w16c", i16); /* { dg-warning "length modifier" } */
      67    printf ("%w32c", i32); /* { dg-warning "length modifier" } */
      68    printf ("%w64c", i64); /* { dg-warning "length modifier" } */
      69    printf ("%wf8c", if8); /* { dg-warning "length modifier" } */
      70    printf ("%wf16c", if16); /* { dg-warning "length modifier" } */
      71    printf ("%wf32c", if32); /* { dg-warning "length modifier" } */
      72    printf ("%wf64c", if64); /* { dg-warning "length modifier" } */
      73    printf ("%w8e", i8); /* { dg-warning "length modifier" } */
      74    printf ("%w16e", i16); /* { dg-warning "length modifier" } */
      75    printf ("%w32e", i32); /* { dg-warning "length modifier" } */
      76    printf ("%w64e", i64); /* { dg-warning "length modifier" } */
      77    printf ("%wf8e", if8); /* { dg-warning "length modifier" } */
      78    printf ("%wf16e", if16); /* { dg-warning "length modifier" } */
      79    printf ("%wf32e", if32); /* { dg-warning "length modifier" } */
      80    printf ("%wf64e", if64); /* { dg-warning "length modifier" } */
      81    printf ("%w8E", i8); /* { dg-warning "length modifier" } */
      82    printf ("%w16E", i16); /* { dg-warning "length modifier" } */
      83    printf ("%w32E", i32); /* { dg-warning "length modifier" } */
      84    printf ("%w64E", i64); /* { dg-warning "length modifier" } */
      85    printf ("%wf8E", if8); /* { dg-warning "length modifier" } */
      86    printf ("%wf16E", if16); /* { dg-warning "length modifier" } */
      87    printf ("%wf32E", if32); /* { dg-warning "length modifier" } */
      88    printf ("%wf64E", if64); /* { dg-warning "length modifier" } */
      89    printf ("%w8f", i8); /* { dg-warning "length modifier" } */
      90    printf ("%w16f", i16); /* { dg-warning "length modifier" } */
      91    printf ("%w32f", i32); /* { dg-warning "length modifier" } */
      92    printf ("%w64f", i64); /* { dg-warning "length modifier" } */
      93    printf ("%wf8f", if8); /* { dg-warning "length modifier" } */
      94    printf ("%wf16f", if16); /* { dg-warning "length modifier" } */
      95    printf ("%wf32f", if32); /* { dg-warning "length modifier" } */
      96    printf ("%wf64f", if64); /* { dg-warning "length modifier" } */
      97    printf ("%w8F", i8); /* { dg-warning "length modifier" } */
      98    printf ("%w16F", i16); /* { dg-warning "length modifier" } */
      99    printf ("%w32F", i32); /* { dg-warning "length modifier" } */
     100    printf ("%w64F", i64); /* { dg-warning "length modifier" } */
     101    printf ("%wf8F", if8); /* { dg-warning "length modifier" } */
     102    printf ("%wf16F", if16); /* { dg-warning "length modifier" } */
     103    printf ("%wf32F", if32); /* { dg-warning "length modifier" } */
     104    printf ("%wf64F", if64); /* { dg-warning "length modifier" } */
     105    printf ("%w8g", i8); /* { dg-warning "length modifier" } */
     106    printf ("%w16g", i16); /* { dg-warning "length modifier" } */
     107    printf ("%w32g", i32); /* { dg-warning "length modifier" } */
     108    printf ("%w64g", i64); /* { dg-warning "length modifier" } */
     109    printf ("%wf8g", if8); /* { dg-warning "length modifier" } */
     110    printf ("%wf16g", if16); /* { dg-warning "length modifier" } */
     111    printf ("%wf32g", if32); /* { dg-warning "length modifier" } */
     112    printf ("%wf64g", if64); /* { dg-warning "length modifier" } */
     113    printf ("%w8G", i8); /* { dg-warning "length modifier" } */
     114    printf ("%w16G", i16); /* { dg-warning "length modifier" } */
     115    printf ("%w32G", i32); /* { dg-warning "length modifier" } */
     116    printf ("%w64G", i64); /* { dg-warning "length modifier" } */
     117    printf ("%wf8G", if8); /* { dg-warning "length modifier" } */
     118    printf ("%wf16G", if16); /* { dg-warning "length modifier" } */
     119    printf ("%wf32G", if32); /* { dg-warning "length modifier" } */
     120    printf ("%wf64G", if64); /* { dg-warning "length modifier" } */
     121    printf ("%w8p", i8); /* { dg-warning "length modifier" } */
     122    printf ("%w16p", i16); /* { dg-warning "length modifier" } */
     123    printf ("%w32p", i32); /* { dg-warning "length modifier" } */
     124    printf ("%w64p", i64); /* { dg-warning "length modifier" } */
     125    printf ("%wf8p", if8); /* { dg-warning "length modifier" } */
     126    printf ("%wf16p", if16); /* { dg-warning "length modifier" } */
     127    printf ("%wf32p", if32); /* { dg-warning "length modifier" } */
     128    printf ("%wf64p", if64); /* { dg-warning "length modifier" } */
     129    printf ("%w8s", i8); /* { dg-warning "length modifier" } */
     130    printf ("%w16s", i16); /* { dg-warning "length modifier" } */
     131    printf ("%w32s", i32); /* { dg-warning "length modifier" } */
     132    printf ("%w64s", i64); /* { dg-warning "length modifier" } */
     133    printf ("%wf8s", if8); /* { dg-warning "length modifier" } */
     134    printf ("%wf16s", if16); /* { dg-warning "length modifier" } */
     135    printf ("%wf32s", if32); /* { dg-warning "length modifier" } */
     136    printf ("%wf64s", if64); /* { dg-warning "length modifier" } */
     137  }