(root)/
gcc-13.2.0/
gcc/
testsuite/
c-c++-common/
Wconversion-pr40752a.c
       1  /* { dg-do compile } */
       2  /* { dg-options "-Wconversion -Warith-conversion" } */
       3  #include <limits.h>
       4  void foo(char c, char c2)
       5  {
       6    c >>= c2;			/* { dg-warning "conversion" } */
       7    c >>= 1;
       8    c <<= 1;			/* { dg-warning "conversion" } */
       9    c <<= c2;			/* { dg-warning "conversion" } */
      10    c += 1;			/* { dg-warning "conversion" } */
      11    c += c2;			/* { dg-warning "conversion" } */
      12    c -= 1;			/* { dg-warning "conversion" } */
      13    c -= c2;			/* { dg-warning "conversion" } */
      14    c *= 2;			/* { dg-warning "conversion" } */
      15    c *= c2;			/* { dg-warning "conversion" } */
      16    c /= 2;
      17    /* If char is unsigned we avoid promoting to int.  */
      18    c /= c2;  /* { dg-warning "conversion" "" { target { ! unsigned_char } } } */
      19    c %= 2;
      20    c %= c2;  /* { dg-warning "conversion" "" { target { ! unsigned_char } } } */
      21    c = -c2;			/* { dg-warning "conversion" } */
      22    c = ~c2;			/* { dg-warning "conversion" } */
      23    c = c2++;
      24    c = ++c2;
      25    c = c2--;
      26    c = --c2;
      27  }
      28  
      29  void bar(char c, int c2)
      30  {
      31    c >>= c2; 			/* { dg-warning "conversion" } */
      32    c >>= (int)1;
      33    c <<= (int)1;			/* { dg-warning "conversion" } */
      34    c <<= c2;			/* { dg-warning "conversion" } */
      35    c += ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      36    c += c2; /* { dg-warning "conversion" } */
      37    c -= ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      38    c -= c2; /* { dg-warning "conversion" } */
      39    c *= ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      40    c *= c2; /* { dg-warning "conversion" } */
      41    c /= ((int)CHAR_MAX + CHAR_MAX); /* { dg-warning "conversion" } */
      42    c /= c2; /* { dg-warning "conversion" } */
      43    c %= ((int)CHAR_MAX + CHAR_MAX); /* { 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    c = --c2; /* { dg-warning "conversion" } */
      50  }