(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
compare1.c
       1  /* Test for a bogus warning on comparison between signed and unsigned.
       2     This was inspired by code in gcc.  This testcase is identical to
       3     compare9.c except that we use -fno-short-enums here and expect a
       4     warning from case 4.  */
       5  
       6  /* { dg-do compile } */
       7  /* { dg-options "-fno-short-enums -Wsign-compare" } */
       8  
       9  int tf = 1;
      10  
      11  /* This enumeration has an explicit negative value and is therefore signed.  */
      12  enum mm1 
      13  {
      14    VOID, SI, DI, MAX = -1
      15  };
      16  
      17  /* This enumeration fits entirely in a signed int, but is unsigned anyway.  */
      18  enum mm2
      19  {
      20    VOID2, SI2, DI2, MAX2
      21  };
      22  
      23  int f(enum mm1 x)
      24  {
      25    return x == (tf?DI:SI); /* { dg-bogus "changes signedness" "case 1" } */
      26  }
      27  
      28  int g(enum mm1 x)
      29  {
      30    return x == (tf?DI:-1); /* { dg-bogus "changes signedness" "case 2" } */
      31  }
      32  
      33  int h(enum mm2 x)
      34  {
      35    return x == (tf?DI2:SI2); /* { dg-bogus "changes signedness" "case 3" } */
      36  }
      37  
      38  int i(enum mm2 x)
      39  {
      40    return x == (tf?DI2:-1); /* { dg-warning "different signedness" "case 4" } */
      41  }