1  /* { dg-do compile } */
       2  /* { dg-options "-O2 -mstv" } */
       3  
       4  #define max(a,b) (((a) > (b))? (a) : (b))
       5  #define min(a,b) (((a) < (b))? (a) : (b))
       6  
       7  int ssi[1024];
       8  unsigned int usi[1024];
       9  long long sdi[1024];
      10  unsigned long long udi[1024];
      11  
      12  #define CHECK(FN, VARIANT) \
      13  void \
      14  FN ## VARIANT (void) \
      15  { \
      16    for (int i = 1; i < 1024; ++i) \
      17      VARIANT[i] = FN(VARIANT[i-1], VARIANT[i]); \
      18  }
      19  
      20  CHECK(max, ssi);
      21  CHECK(min, ssi);
      22  CHECK(max, usi);
      23  CHECK(min, usi);
      24  CHECK(max, sdi);
      25  CHECK(min, sdi);
      26  CHECK(max, udi);
      27  CHECK(min, udi);