(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
cpp/
digraphs.c
       1  /* Copyright (C) 2000 Free Software Foundation, Inc.  */
       2  
       3  /* { dg-do run } */
       4  /* { dg-options "-std=c99" } */
       5  
       6  /* Fully test the 6 digraphs under c99 assumptions.  Four are pasted,
       7     to check that digraph pasting works.  */
       8  
       9  extern int strcmp (const char *, const char *);
      10  extern void abort (void);
      11  #if DEBUG
      12  extern int puts (const char *);
      13  #else
      14  #define puts(X)
      15  #endif
      16  #define err(str) do { puts(str); abort(); } while (0)
      17  
      18  %:define glue(x, y) x %:%: y	/* #define glue(x, y) x ## y. */
      19  #ifndef glue
      20  #error glue not defined!
      21  #endif
      22  %:define str(x) %:x		/* #define str(x) #x */
      23  
      24  int main (int argc, char *argv<::>) /* argv[] */
      25  glue (<, %) /* { */
      26               /* di_str[] = */
      27    const char di_str glue(<, :)glue(:, >) = str(%:%:<::><%%>%:);
      28  
      29    /* Check the glue macro actually pastes, and that the spelling of
      30       all digraphs is preserved.  */
      31    if (glue(str, cmp) (di_str, "%:%:<::><%%>%:"))
      32      err ("Digraph spelling not preserved!");
      33  
      34    return 0;
      35  glue (%, >) /* } */