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