(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
cpp/
va-opt-7.c
       1  /* PR preprocessor/101488 */
       2  /* { dg-do preprocess } */
       3  /* { dg-options "-std=gnu99" { target c } } */
       4  /* { dg-options "-std=c++2a" { target c++ } } */
       5  
       6  #define f0() n
       7  #define f1(x,...) a ## __VA_OPT__ (a) ## a
       8  #define f2(x,...) a ## __VA_OPT__ () ## a
       9  #define f3(x,...) a ## __VA_OPT__ (x) ## a
      10  #define f4(x,...) a ## __VA_OPT__ (x##x) ## a
      11  #define f5(x,...) a ## __VA_OPT__ (x##x 1) ## a
      12  #define f6(x,...) a ## __VA_OPT__ (1 x##x) ## a
      13  #define f7(x,...) __VA_OPT__ (f0 x ## x ) ## 1
      14  #define f8(x,...) __VA_OPT__ (f0 x) ## 1
      15  #define f9(x,...) f0 ## __VA_OPT__ (x 1) ## 1
      16  #define f10(x,...) f0 ## __VA_OPT__ (x ## x 1) ## 1
      17  #define f11(x, ...) __VA_OPT__(a x ## x) ## b
      18  #define f12(x, ...) a ## __VA_OPT__(x ## x b)
      19  #define f13(x) x ## x b
      20  #define ab def
      21  #define bc ghi
      22  #define abc jkl
      23  #define f14(x, ...) a ## __VA_OPT__(x b x) ## c
      24  t1 f1(,);
      25  /* { dg-final { scan-file va-opt-7.i "t1 aa;" } } */
      26  t2 f1(,1);
      27  /* { dg-final { scan-file va-opt-7.i "t2 aaa;" } } */
      28  t3 f1(2,1);
      29  /* { dg-final { scan-file va-opt-7.i "t3 aaa;" } } */
      30  t4 f2(,);
      31  /* { dg-final { scan-file va-opt-7.i "t4 aa;" } } */
      32  t5 f2(,1);
      33  /* { dg-final { scan-file va-opt-7.i "t5 aa;" } } */
      34  t6 f2(2,1);
      35  /* { dg-final { scan-file va-opt-7.i "t6 aa;" } } */
      36  t7 f3(,);
      37  /* { dg-final { scan-file va-opt-7.i "t7 aa;" } } */
      38  t8 f3(,1);
      39  /* { dg-final { scan-file va-opt-7.i "t8 aa;" } } */
      40  t9 f3(2,1);
      41  /* { dg-final { scan-file va-opt-7.i "t9 a2a;" } } */
      42  t10 f4(,);
      43  /* { dg-final { scan-file va-opt-7.i "t10 aa;" } } */
      44  t11 f4(,1);
      45  /* { dg-final { scan-file va-opt-7.i "t11 aa;" } } */
      46  t12 f4(2,1);
      47  /* { dg-final { scan-file va-opt-7.i "t12 a22a;" } } */
      48  t13 f5(,);
      49  /* { dg-final { scan-file va-opt-7.i "t13 aa;" } } */
      50  t14 f5(,1);
      51  /* { dg-final { scan-file va-opt-7.i "t14 a 1a;" } } */
      52  t15 f5(2,1);
      53  /* { dg-final { scan-file va-opt-7.i "t15 a22 1a;" } } */
      54  t16 f6(,);
      55  /* { dg-final { scan-file va-opt-7.i "t16 aa;" } } */
      56  t17 f6(,1);
      57  /* { dg-final { scan-file va-opt-7.i "t17 a1 a;" } } */
      58  t18 f6(2,1);
      59  /* { dg-final { scan-file va-opt-7.i "t18 a1 22a;" } } */
      60  t19 f7(,);
      61  /* { dg-final { scan-file va-opt-7.i "t19 1;" } } */
      62  t20 f7(,1);
      63  /* { dg-final { scan-file va-opt-7.i "t20 f0 1;" } } */
      64  t21 f7(2,1);
      65  /* { dg-final { scan-file va-opt-7.i "t21 f0 221;" } } */
      66  t22 f8(,);
      67  /* { dg-final { scan-file va-opt-7.i "t22 1;" } } */
      68  t23 f8(,1);
      69  /* { dg-final { scan-file va-opt-7.i "t23 f0 1;" } } */
      70  t24 f8(2,1);
      71  /* { dg-final { scan-file va-opt-7.i "t24 f0 21;" } } */
      72  t25 f9(,);
      73  /* { dg-final { scan-file va-opt-7.i "t25 f01;" } } */
      74  t26 f9(,1);
      75  /* { dg-final { scan-file va-opt-7.i "t26 f0 11;" } } */
      76  t27 f9(2,1);
      77  /* { dg-final { scan-file va-opt-7.i "t27 f02 11;" } } */
      78  t28 f10(,);
      79  /* { dg-final { scan-file va-opt-7.i "t28 f01;" } } */
      80  t29 f10(,1);
      81  /* { dg-final { scan-file va-opt-7.i "t29 f0 11;" } } */
      82  t30 f10(2,1);
      83  /* { dg-final { scan-file va-opt-7.i "t30 f022 11;" } } */
      84  t31 f11(,);
      85  /* { dg-final { scan-file va-opt-7.i "t31 b;" } } */
      86  t32 f11(,1);
      87  /* { dg-final { scan-file va-opt-7.i "t32 a b;" } } */
      88  t33 f11(2,1);
      89  /* { dg-final { scan-file va-opt-7.i "t33 a 22b;" } } */
      90  t34 f12(,);
      91  /* { dg-final { scan-file va-opt-7.i "t34 a;" } } */
      92  t35 f12(,1);
      93  /* { dg-final { scan-file va-opt-7.i "t35 a b;" } } */
      94  t36 f12(2,1);
      95  /* { dg-final { scan-file va-opt-7.i "t36 a22 b;" } } */
      96  t37 f14(,);
      97  /* { dg-final { scan-file va-opt-7.i "t37 ac;" } } */
      98  t38 f14(,1);
      99  /* { dg-final { scan-file va-opt-7.i "t38 a b c;" } } */
     100  t39 f14(f13(),1);
     101  /* { dg-final { scan-file va-opt-7.i "t39 def b ghi;" } } */