(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
Wconversion-pr40752.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-Wconversion" } */
       3  #include <limits.h>
       4  void foo(char c, char c2)
       5  {
       6    c >>= c2;
       7    c >>= 1;
       8    c <<= 1;
       9    c <<= c2;
      10    c += 1;
      11    c += c2;
      12    c -= 1;
      13    c -= c2;
      14    c *= 2;
      15    c *= c2;
      16    c /= 2;
      17    c /= c2;
      18    c %= 2;
      19    c %= c2;
      20    c = -c2;
      21    c = ~c2;
      22    c = c2++;
      23    c = ++c2;
      24    c = c2--;
      25    c = --c2;
      26  }
      27  
      28  void bar(char c, int c2)
      29  {
      30    c >>= c2; 
      31    c >>= (int)1;
      32    c <<= (int)1;
      33    c <<= c2;
      34    c += ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      35    c += c2; /* { dg-warning "conversion" } */
      36    c -= ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      37    c -= c2; /* { dg-warning "conversion" } */
      38    c *= ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      39    c *= c2; /* { dg-warning "conversion" } */
      40    c /= ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      41    c /= c2; /* { dg-warning "conversion" } */
      42    c %= ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      43    c %= c2; /* { dg-warning "conversion" } */
      44    c = ~c2; /* { dg-warning "conversion" } */
      45    c = c2++; /* { dg-warning "conversion" } */
      46    c = ++c2; /* { dg-warning "conversion" } */
      47    c = c2--; /* { dg-warning "conversion" } */
      48    c = --c2; /* { dg-warning "conversion" } */
      49  }