conversion.c revision f2370c9b4aade940e2253b5b33262ba507d1d71f
1a5728872c7702ddd09537c95bc3cbd20e1f2fb09Daniel Dunbar// RUN: %clang_cc1 -fsyntax-only -verify -Wconversion -triple x86_64-apple-darwin %s 2d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 3d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall#define BIG 0x7f7f7f7f7f7f7f7fL 4d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 5d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test0(char c, short s, int i, long l, long long ll) { 6d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = c; 7d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = s; // expected-warning {{implicit cast loses integer precision}} 8d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = i; // expected-warning {{implicit cast loses integer precision}} 9d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = l; // expected-warning {{implicit cast loses integer precision}} 10d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = c; 11d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = s; 12d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = i; // expected-warning {{implicit cast loses integer precision}} 13d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = l; // expected-warning {{implicit cast loses integer precision}} 14d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = c; 15d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = s; 16d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = i; 17d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = l; // expected-warning {{implicit cast loses integer precision}} 18d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = c; 19d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = s; 20d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = i; 21d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = l; 22d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 23d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (char) 0; 24d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (short) 0; 25d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (int) 0; 26d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (long) 0; 27d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = (char) 0; 28d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = (short) 0; 29d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = (int) 0; 30d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = (long) 0; 31d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = (char) 0; 32d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = (short) 0; 33d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = (int) 0; 34d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = (long) 0; 35d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = (char) 0; 36d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = (short) 0; 37d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = (int) 0; 38d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = (long) 0; 39d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 40d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (char) BIG; 41d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (short) BIG; // expected-warning {{implicit cast loses integer precision}} 42d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (int) BIG; // expected-warning {{implicit cast loses integer precision}} 43d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (long) BIG; // expected-warning {{implicit cast loses integer precision}} 44d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = (char) BIG; 45d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = (short) BIG; 46d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = (int) BIG; // expected-warning {{implicit cast loses integer precision}} 47d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall s = (long) BIG; // expected-warning {{implicit cast loses integer precision}} 48d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = (char) BIG; 49d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = (short) BIG; 50d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = (int) BIG; 51d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall i = (long) BIG; // expected-warning {{implicit cast loses integer precision}} 52d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = (char) BIG; 53d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = (short) BIG; 54d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = (int) BIG; 55d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall l = (long) BIG; 56d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 57d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 58d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallchar test1(long long ll) { 59d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) ll; // expected-warning {{implicit cast loses integer precision}} 60d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) ll; // expected-warning {{implicit cast loses integer precision}} 61d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) ll; // expected-warning {{implicit cast loses integer precision}} 62d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) ll; // expected-warning {{implicit cast loses integer precision}} 63d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) ll; 64d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) BIG; // expected-warning {{implicit cast loses integer precision}} 65d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) BIG; // expected-warning {{implicit cast loses integer precision}} 66d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) BIG; // expected-warning {{implicit cast loses integer precision}} 67d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) BIG; // expected-warning {{implicit cast loses integer precision}} 68d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) BIG; 69d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 70d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 71d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallshort test2(long long ll) { 72d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) ll; // expected-warning {{implicit cast loses integer precision}} 73d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) ll; // expected-warning {{implicit cast loses integer precision}} 74d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) ll; // expected-warning {{implicit cast loses integer precision}} 75d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) ll; 76d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) ll; 77d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) BIG; // expected-warning {{implicit cast loses integer precision}} 78d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) BIG; // expected-warning {{implicit cast loses integer precision}} 79d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) BIG; // expected-warning {{implicit cast loses integer precision}} 80d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) BIG; 81d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) BIG; 82d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 83d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 84d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallint test3(long long ll) { 85d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) ll; // expected-warning {{implicit cast loses integer precision}} 86d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) ll; // expected-warning {{implicit cast loses integer precision}} 87d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) ll; 88d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) ll; 89d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) ll; 90d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) BIG; // expected-warning {{implicit cast loses integer precision}} 91d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) BIG; // expected-warning {{implicit cast loses integer precision}} 92d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) BIG; 93d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) BIG; 94d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) BIG; 95d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 96d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 97d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCalllong test4(long long ll) { 98d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) ll; 99d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) ll; 100d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) ll; 101d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) ll; 102d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) ll; 103d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) BIG; 104d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) BIG; 105d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) BIG; 106d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) BIG; 107d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) BIG; 108d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 109d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 110d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCalllong long test5(long long ll) { 111d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) ll; 112d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) ll; 113d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) ll; 114d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) ll; 115d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) ll; 116d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long long) BIG; 117d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (long) BIG; 118d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (int) BIG; 119d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (short) BIG; 120d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall return (char) BIG; 121d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 122d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 123d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid takes_char(char); 124d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid takes_short(short); 125d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid takes_int(int); 126d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid takes_long(long); 127d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid takes_longlong(long long); 128d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid takes_float(float); 129d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid takes_double(double); 130d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid takes_longdouble(long double); 131d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 132d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test6(char v) { 133d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_char(v); 134d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_short(v); 135d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_int(v); 136d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_long(v); 137d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longlong(v); 138d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_float(v); 139d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_double(v); 140d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longdouble(v); 141d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 142d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 143d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test7(short v) { 144d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_char(v); // expected-warning {{implicit cast loses integer precision}} 145d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_short(v); 146d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_int(v); 147d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_long(v); 148d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longlong(v); 149d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_float(v); 150d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_double(v); 151d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longdouble(v); 152d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 153d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 154d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test8(int v) { 155d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_char(v); // expected-warning {{implicit cast loses integer precision}} 156d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_short(v); // expected-warning {{implicit cast loses integer precision}} 157d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_int(v); 158d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_long(v); 159d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longlong(v); 160d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_float(v); 161d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_double(v); 162d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longdouble(v); 163d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 164d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 165d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test9(long v) { 166d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_char(v); // expected-warning {{implicit cast loses integer precision}} 167d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_short(v); // expected-warning {{implicit cast loses integer precision}} 168d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_int(v); // expected-warning {{implicit cast loses integer precision}} 169d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_long(v); 170d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longlong(v); 171d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_float(v); 172d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_double(v); 173d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longdouble(v); 174d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 175d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 176d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test10(long long v) { 177d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_char(v); // expected-warning {{implicit cast loses integer precision}} 178d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_short(v); // expected-warning {{implicit cast loses integer precision}} 179d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_int(v); // expected-warning {{implicit cast loses integer precision}} 180d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_long(v); 181d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longlong(v); 182d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_float(v); 183d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_double(v); 184d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longdouble(v); 185d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 186d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 187d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test11(float v) { 188d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_char(v); // expected-warning {{implicit cast turns floating-point number into integer}} 189d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_short(v); // expected-warning {{implicit cast turns floating-point number into integer}} 190d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_int(v); // expected-warning {{implicit cast turns floating-point number into integer}} 191d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_long(v); // expected-warning {{implicit cast turns floating-point number into integer}} 192d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longlong(v); // expected-warning {{implicit cast turns floating-point number into integer}} 193d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_float(v); 194d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_double(v); 195d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longdouble(v); 196d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 197d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 198d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test12(double v) { 199d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_char(v); // expected-warning {{implicit cast turns floating-point number into integer}} 200d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_short(v); // expected-warning {{implicit cast turns floating-point number into integer}} 201d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_int(v); // expected-warning {{implicit cast turns floating-point number into integer}} 202d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_long(v); // expected-warning {{implicit cast turns floating-point number into integer}} 203d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longlong(v); // expected-warning {{implicit cast turns floating-point number into integer}} 204d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_float(v); // expected-warning {{implicit cast loses floating-point precision}} 205d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_double(v); 206d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longdouble(v); 207d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 208d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 209d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test13(long double v) { 210d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_char(v); // expected-warning {{implicit cast turns floating-point number into integer}} 211d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_short(v); // expected-warning {{implicit cast turns floating-point number into integer}} 212d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_int(v); // expected-warning {{implicit cast turns floating-point number into integer}} 213d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_long(v); // expected-warning {{implicit cast turns floating-point number into integer}} 214d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longlong(v); // expected-warning {{implicit cast turns floating-point number into integer}} 215d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_float(v); // expected-warning {{implicit cast loses floating-point precision}} 216d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_double(v); // expected-warning {{implicit cast loses floating-point precision}} 217d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall takes_longdouble(v); 218d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 219d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall 220d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCallvoid test14(long l) { 221d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall // Fine because of the boolean whitelist. 222d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall char c; 223d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = (l == 4); 224d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = ((l <= 4) && (l >= 0)); 225d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall c = ((l <= 4) && (l >= 0)) || (l > 20); 226d5c376e4a034233a8efee81404041e33d8f0df5aJohn McCall} 227e8babd198c28bf1a443ef6a989dd2fe0ab58cc08John McCall 228e8babd198c28bf1a443ef6a989dd2fe0ab58cc08John McCallvoid test15(char c) { 229e8babd198c28bf1a443ef6a989dd2fe0ab58cc08John McCall c = c + 1 + c * 2; 230e8babd198c28bf1a443ef6a989dd2fe0ab58cc08John McCall c = (short) c + 1 + c * 2; // expected-warning {{implicit cast loses integer precision}} 231e8babd198c28bf1a443ef6a989dd2fe0ab58cc08John McCall} 2328406aedf4782771e520614ee379594dc0a4f7d5fJohn McCall 2338406aedf4782771e520614ee379594dc0a4f7d5fJohn McCall// PR 5422 2348406aedf4782771e520614ee379594dc0a4f7d5fJohn McCallextern void *test16_external; 2358406aedf4782771e520614ee379594dc0a4f7d5fJohn McCallvoid test16(void) { 2368406aedf4782771e520614ee379594dc0a4f7d5fJohn McCall int a = (unsigned long) &test16_external; // expected-warning {{implicit cast loses integer precision}} 2378406aedf4782771e520614ee379594dc0a4f7d5fJohn McCall} 238f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall 239f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall// PR 5938 240f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCallvoid test17() { 241f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall union { 242f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall unsigned long long a : 8; 243f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall unsigned long long b : 32; 244f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall unsigned long long c; 245f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall } U; 246f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall 247f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall unsigned int x; 248f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall x = U.a; 249f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall x = U.b; 250f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall x = U.c; // expected-warning {{implicit cast loses integer precision}} 251f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall} 252f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall 253f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall// PR 5939 254f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCallvoid test18() { 255f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall union { 256f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall unsigned long long a : 1; 257f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall unsigned long long b; 258f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall } U; 259f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall 260f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall int x; 261f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall x = (U.a ? 0 : 1); 262f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall x = (U.b ? 0 : 1); 263f2370c9b4aade940e2253b5b33262ba507d1d71fJohn McCall} 264