1 /* { dg-do compile } */
2 /* { dg-options "-Wconversion -Warith-conversion" } */
4 void foo(char c
, char c2
)
6 c
>>= c2
; /* { dg-warning "conversion" } */
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" } */
17 /* If char is unsigned we avoid promoting to int. */
18 c
/= c2
; /* { dg-warning "conversion" "" { target { ! unsigned_char } } } */
20 c
%= c2
; /* { dg-warning "conversion" "" { target { ! unsigned_char } } } */
21 c
= -c2
; /* { dg-warning "conversion" } */
22 c
= ~c2
; /* { dg-warning "conversion" } */
29 void bar(char c
, int c2
)
31 c
>>= c2
; /* { dg-warning "conversion" } */
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" } */