1 /* Test for diagnostics for implicit conversions between integer types
2 These tests come from gcc/testsuite/gcc.dg/overflow-warn-2.c */
4 /* { dg-do compile } */
5 /* { dg-options "-std=c99 -fsigned-char -Wconversion -Wno-sign-conversion" } */
9 void fsc (signed char sc
);
10 void fuc (unsigned char uc
);
11 unsigned fui (unsigned int ui
);
12 void fsi (signed int ui
);
21 uc
= ui
; /* { dg-warning "conversion" } */
22 uc
= si
; /* { dg-warning "conversion" } */
23 sc
= ui
; /* { dg-warning "conversion" } */
24 sc
= si
; /* { dg-warning "conversion" } */
25 fuc (ui
); /* { dg-warning "conversion" } */
26 fuc (si
); /* { dg-warning "conversion" } */
27 fsc (ui
); /* { dg-warning "conversion" } */
28 fsc (si
); /* { dg-warning "conversion" } */
43 uc
= x
? 1U : -1; /* { dg-warning "conversion" } */
44 uc
= x
? SCHAR_MIN
: 1U; /* { dg-warning "conversion" } */
45 uc
= x
? 1 : -1; /* Warned by -Wsign-conversion. */
46 uc
= x
? SCHAR_MIN
: 1; /* Warned by -Wsign-conversion. */
47 ui
= x
? 1U : -1; /* Warned by -Wsign-conversion. */
48 ui
= x
? INT_MIN
: 1U; /* Warned by -Wsign-conversion. */
49 ui
= ui
? SCHAR_MIN
: 1U; /* Warned by -Wsign-conversion. */
50 ui
= 1U * -1; /* Warned by -Wsign-conversion. */
51 ui
= ui
+ INT_MIN
; /* Warned by -Wsign-conversion. */
52 ui
= x
? 1 : -1; /* Warned by -Wsign-conversion. */
53 ui
= ui
? SCHAR_MIN
: 1; /* Warned by -Wsign-conversion. */
55 fuc (-1); /* Warned by -Wsign-conversion. */
56 uc
= -1; /* Warned by -Wsign-conversion. */
57 fui (-1); /* Warned by -Wsign-conversion. */
58 ui
= -1; /* Warned by -Wsign-conversion. */
59 fuc ('\xa0'); /* Warned by -Wsign-conversion. */
60 uc
= '\xa0'; /* Warned by -Wsign-conversion. */
61 fui ('\xa0'); /* Warned by -Wsign-conversion. */
62 ui
= '\xa0'; /* Warned by -Wsign-conversion. */
63 fsi ((unsigned) INT_MAX
+ 1U); /* Warned by -Wsign-conversion. */
64 si
= (unsigned) INT_MAX
+ 1U; /* Warned by -Wsign-conversion. */
67 fsi (UINT_MAX
- 1); /* Warned by -Wsign-conversion. */
68 si
= UINT_MAX
- 1; /* Warned by -Wsign-conversion. */
69 fsi (UINT_MAX
- 1U); /* Warned by -Wsign-conversion. */
70 si
= UINT_MAX
- 1U; /* Warned by -Wsign-conversion. */
78 uc
= (unsigned char) -1;
82 fsc (uc
); /* Warned by -Wsign-conversion. */
83 sc
= uc
; /* Warned by -Wsign-conversion. */
84 fuc (sc
); /* Warned by -Wsign-conversion. */
85 uc
= sc
; /* Warned by -Wsign-conversion. */
86 fsi (ui
); /* Warned by -Wsign-conversion. */
87 si
= ui
; /* Warned by -Wsign-conversion. */
88 fui (si
); /* Warned by -Wsign-conversion. */
89 ui
= si
; /* Warned by -Wsign-conversion. */
90 fui (sc
); /* Warned by -Wsign-conversion. */
91 ui
= sc
; /* Warned by -Wsign-conversion. */
94 unsigned fui (unsigned a
) { return a
+ -1; } /* Warned by -Wsign-conversion. */