diff --git a/gcc/c/ChangeLog b/gcc/c/ChangeLog index 80841af40ee..ee7c9bef05d 100644 --- a/gcc/c/ChangeLog +++ b/gcc/c/ChangeLog @@ -1,3 +1,9 @@ +2014-04-30 Marek Polacek + + PR c/60351 + * c-typeck.c (build_binary_op): Use location when warning about + shift count. + 2014-04-25 Marek Polacek PR c/18079 diff --git a/gcc/c/c-typeck.c b/gcc/c/c-typeck.c index 62c72dfdd70..e23c6dbbb0e 100644 --- a/gcc/c/c-typeck.c +++ b/gcc/c/c-typeck.c @@ -10402,7 +10402,7 @@ build_binary_op (location_t location, enum tree_code code, { int_const = false; if (c_inhibit_evaluation_warnings == 0) - warning (0, "right shift count is negative"); + warning_at (location, 0, "right shift count is negative"); } else { @@ -10413,7 +10413,8 @@ build_binary_op (location_t location, enum tree_code code, { int_const = false; if (c_inhibit_evaluation_warnings == 0) - warning (0, "right shift count >= width of type"); + warning_at (location, 0, "right shift count >= width " + "of type"); } } } @@ -10455,14 +10456,15 @@ build_binary_op (location_t location, enum tree_code code, { int_const = false; if (c_inhibit_evaluation_warnings == 0) - warning (0, "left shift count is negative"); + warning_at (location, 0, "left shift count is negative"); } else if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0) { int_const = false; if (c_inhibit_evaluation_warnings == 0) - warning (0, "left shift count >= width of type"); + warning_at (location, 0, "left shift count >= width of " + "type"); } } diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 01483561902..79238530e15 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2014-04-30 Marek Polacek + + PR c/60351 + * gcc.dg/pr60351.c: New test. + 2013-04-29 Alan Lawrence * gcc.target/arm/simd/simd.exp: New file. diff --git a/gcc/testsuite/gcc.dg/pr60351.c b/gcc/testsuite/gcc.dg/pr60351.c new file mode 100644 index 00000000000..29184d94872 --- /dev/null +++ b/gcc/testsuite/gcc.dg/pr60351.c @@ -0,0 +1,11 @@ +/* PR c/60351 */ +/* { dg-do compile } */ + +void +f (int i) +{ + i >> -1; /* { dg-warning "5:right shift count is negative" } */ + i >> 250; /* { dg-warning "5:right shift count >= width of type" } */ + i << -1; /* { dg-warning "5:left shift count is negative" } */ + i << 250; /* { dg-warning "5:left shift count >= width of type" } */ +}