invoke.texi ([-Wshift-count-negative, [...]): Add.
2014-11-10 Paolo Carlini <paolo.carlini@oracle.com> * doc/invoke.texi ([-Wshift-count-negative, -Wshift-count-overflow]): Add. /c-family 2014-11-10 Paolo Carlini <paolo.carlini@oracle.com> * c.opt ([Wshift-count-negative, Wshift-count-overflow]): Add. /cp 2014-11-10 Paolo Carlini <paolo.carlini@oracle.com> * typeck.c (cp_build_binary_op): Use OPT_Wshift_count_negative and OPT_Wshift_count_overflow in the warnings. /c 2014-11-10 Paolo Carlini <paolo.carlini@oracle.com> * c-typeck.c (build_binary_op): Use OPT_Wshift_count_negative and OPT_Wshift_count_overflow in the warnings. /testsuite 2014-11-10 Paolo Carlini <paolo.carlini@oracle.com> * c-c++-common/Wshift-count-overflow-1.c: New. * c-c++-common/Wshift-count-overflow-2.c: Likewise. * c-c++-common/Wshift-count-negative-1.c: Likewise. * c-c++-common/Wshift-count-negative-2.c: Likewise. From-SVN: r217313
This commit is contained in:
parent
de2b09ec2f
commit
13c216556d
@ -1,3 +1,8 @@
|
|||||||
|
2014-11-10 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
* doc/invoke.texi ([-Wshift-count-negative, -Wshift-count-overflow]):
|
||||||
|
Add.
|
||||||
|
|
||||||
2014-11-10 Richard Sandiford <richard.sandiford@arm.com>
|
2014-11-10 Richard Sandiford <richard.sandiford@arm.com>
|
||||||
|
|
||||||
* config/frv/frv.c (frv_io_handle_use_1): Delete.
|
* config/frv/frv.c (frv_io_handle_use_1): Delete.
|
||||||
|
@ -1,3 +1,7 @@
|
|||||||
|
2014-11-10 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
* c.opt ([Wshift-count-negative, Wshift-count-overflow]): Add.
|
||||||
|
|
||||||
2014-11-10 Edward Smith-Rowland <3dw4rd@verizon.net>
|
2014-11-10 Edward Smith-Rowland <3dw4rd@verizon.net>
|
||||||
|
|
||||||
* c-cppbuiltin.c (__has_attribute, __has_cpp_attribute): New macros;
|
* c-cppbuiltin.c (__has_attribute, __has_cpp_attribute): New macros;
|
||||||
|
@ -760,13 +760,21 @@ Wselector
|
|||||||
ObjC ObjC++ Var(warn_selector) Warning
|
ObjC ObjC++ Var(warn_selector) Warning
|
||||||
Warn if a selector has multiple methods
|
Warn if a selector has multiple methods
|
||||||
|
|
||||||
|
Wsequence-point
|
||||||
|
C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
|
||||||
|
Warn about possible violations of sequence point rules
|
||||||
|
|
||||||
Wshadow-ivar
|
Wshadow-ivar
|
||||||
ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
|
ObjC ObjC++ Var(warn_shadow_ivar) EnabledBy(Wshadow) Init(1) Warning
|
||||||
Warn if a local declaration hides an instance variable
|
Warn if a local declaration hides an instance variable
|
||||||
|
|
||||||
Wsequence-point
|
Wshift-count-negative
|
||||||
C ObjC C++ ObjC++ Var(warn_sequence_point) Warning LangEnabledBy(C ObjC C++ ObjC++,Wall)
|
C ObjC C++ ObjC++ Var(warn_shift_count_negative) Init(1) Warning
|
||||||
Warn about possible violations of sequence point rules
|
Warn if shift count is negative
|
||||||
|
|
||||||
|
Wshift-count-overflow
|
||||||
|
C ObjC C++ ObjC++ Var(warn_shift_count_overflow) Init(1) Warning
|
||||||
|
Warn if shift count >= width of type
|
||||||
|
|
||||||
Wsign-compare
|
Wsign-compare
|
||||||
C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
|
C ObjC C++ ObjC++ Var(warn_sign_compare) Warning LangEnabledBy(C++ ObjC++,Wall)
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2014-11-10 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
* c-typeck.c (build_binary_op): Use OPT_Wshift_count_negative and
|
||||||
|
OPT_Wshift_count_overflow in the warnings.
|
||||||
|
|
||||||
2014-10-30 Marek Polacek <polacek@redhat.com>
|
2014-10-30 Marek Polacek <polacek@redhat.com>
|
||||||
|
|
||||||
* c-objc-common.c (c_tree_printer) <case 'T'>: For a typedef name,
|
* c-objc-common.c (c_tree_printer) <case 'T'>: For a typedef name,
|
||||||
|
@ -10491,7 +10491,8 @@ build_binary_op (location_t location, enum tree_code code,
|
|||||||
{
|
{
|
||||||
int_const = false;
|
int_const = false;
|
||||||
if (c_inhibit_evaluation_warnings == 0)
|
if (c_inhibit_evaluation_warnings == 0)
|
||||||
warning_at (location, 0, "right shift count is negative");
|
warning_at (location, OPT_Wshift_count_negative,
|
||||||
|
"right shift count is negative");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -10502,8 +10503,8 @@ build_binary_op (location_t location, enum tree_code code,
|
|||||||
{
|
{
|
||||||
int_const = false;
|
int_const = false;
|
||||||
if (c_inhibit_evaluation_warnings == 0)
|
if (c_inhibit_evaluation_warnings == 0)
|
||||||
warning_at (location, 0, "right shift count >= width "
|
warning_at (location, OPT_Wshift_count_overflow,
|
||||||
"of type");
|
"right shift count >= width of type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -10545,15 +10546,16 @@ build_binary_op (location_t location, enum tree_code code,
|
|||||||
{
|
{
|
||||||
int_const = false;
|
int_const = false;
|
||||||
if (c_inhibit_evaluation_warnings == 0)
|
if (c_inhibit_evaluation_warnings == 0)
|
||||||
warning_at (location, 0, "left shift count is negative");
|
warning_at (location, OPT_Wshift_count_negative,
|
||||||
|
"left shift count is negative");
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0)
|
else if (compare_tree_int (op1, TYPE_PRECISION (type0)) >= 0)
|
||||||
{
|
{
|
||||||
int_const = false;
|
int_const = false;
|
||||||
if (c_inhibit_evaluation_warnings == 0)
|
if (c_inhibit_evaluation_warnings == 0)
|
||||||
warning_at (location, 0, "left shift count >= width of "
|
warning_at (location, OPT_Wshift_count_overflow,
|
||||||
"type");
|
"left shift count >= width of type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,8 @@
|
|||||||
|
2014-11-10 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
* typeck.c (cp_build_binary_op): Use OPT_Wshift_count_negative and
|
||||||
|
OPT_Wshift_count_overflow in the warnings.
|
||||||
|
|
||||||
2014-11-09 Jason Merrill <jason@redhat.com>
|
2014-11-09 Jason Merrill <jason@redhat.com>
|
||||||
|
|
||||||
DR 799
|
DR 799
|
||||||
|
@ -4280,14 +4280,16 @@ cp_build_binary_op (location_t location,
|
|||||||
{
|
{
|
||||||
if ((complain & tf_warning)
|
if ((complain & tf_warning)
|
||||||
&& c_inhibit_evaluation_warnings == 0)
|
&& c_inhibit_evaluation_warnings == 0)
|
||||||
warning (0, "right shift count is negative");
|
warning (OPT_Wshift_count_negative,
|
||||||
|
"right shift count is negative");
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (compare_tree_int (const_op1, TYPE_PRECISION (type0)) >= 0
|
if (compare_tree_int (const_op1, TYPE_PRECISION (type0)) >= 0
|
||||||
&& (complain & tf_warning)
|
&& (complain & tf_warning)
|
||||||
&& c_inhibit_evaluation_warnings == 0)
|
&& c_inhibit_evaluation_warnings == 0)
|
||||||
warning (0, "right shift count >= width of type");
|
warning (OPT_Wshift_count_overflow,
|
||||||
|
"right shift count >= width of type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Convert the shift-count to an integer, regardless of
|
/* Convert the shift-count to an integer, regardless of
|
||||||
@ -4328,14 +4330,16 @@ cp_build_binary_op (location_t location,
|
|||||||
{
|
{
|
||||||
if ((complain & tf_warning)
|
if ((complain & tf_warning)
|
||||||
&& c_inhibit_evaluation_warnings == 0)
|
&& c_inhibit_evaluation_warnings == 0)
|
||||||
warning (0, "left shift count is negative");
|
warning (OPT_Wshift_count_negative,
|
||||||
|
"left shift count is negative");
|
||||||
}
|
}
|
||||||
else if (compare_tree_int (const_op1,
|
else if (compare_tree_int (const_op1,
|
||||||
TYPE_PRECISION (type0)) >= 0)
|
TYPE_PRECISION (type0)) >= 0)
|
||||||
{
|
{
|
||||||
if ((complain & tf_warning)
|
if ((complain & tf_warning)
|
||||||
&& c_inhibit_evaluation_warnings == 0)
|
&& c_inhibit_evaluation_warnings == 0)
|
||||||
warning (0, "left shift count >= width of type");
|
warning (OPT_Wshift_count_overflow,
|
||||||
|
"left shift count >= width of type");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* Convert the shift-count to an integer, regardless of
|
/* Convert the shift-count to an integer, regardless of
|
||||||
|
@ -269,6 +269,7 @@ Objective-C and Objective-C++ Dialects}.
|
|||||||
-Wpointer-arith -Wno-pointer-to-int-cast @gol
|
-Wpointer-arith -Wno-pointer-to-int-cast @gol
|
||||||
-Wredundant-decls -Wno-return-local-addr @gol
|
-Wredundant-decls -Wno-return-local-addr @gol
|
||||||
-Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
|
-Wreturn-type -Wsequence-point -Wshadow -Wno-shadow-ivar @gol
|
||||||
|
-Wshift-count-negative -Wshift-count-overflow @gol
|
||||||
-Wsign-compare -Wsign-conversion -Wfloat-conversion @gol
|
-Wsign-compare -Wsign-conversion -Wfloat-conversion @gol
|
||||||
-Wsizeof-pointer-memaccess -Wsizeof-array-argument @gol
|
-Wsizeof-pointer-memaccess -Wsizeof-array-argument @gol
|
||||||
-Wstack-protector -Wstack-usage=@var{len} -Wstrict-aliasing @gol
|
-Wstack-protector -Wstack-usage=@var{len} -Wstrict-aliasing @gol
|
||||||
@ -3825,6 +3826,16 @@ exceptions are @samp{main} and functions defined in system headers.
|
|||||||
|
|
||||||
This warning is enabled by @option{-Wall}.
|
This warning is enabled by @option{-Wall}.
|
||||||
|
|
||||||
|
@item -Wshift-count-negative
|
||||||
|
@opindex Wshift-count-negative
|
||||||
|
@opindex Wno-shift-count-negative
|
||||||
|
Warn if shift count is negative. This warning is enabled by default.
|
||||||
|
|
||||||
|
@item -Wshift-count-overflow
|
||||||
|
@opindex Wshift-count-overflow
|
||||||
|
@opindex Wno-shift-count-overflow
|
||||||
|
Warn if shift count >= width of type. This warning is enabled by default.
|
||||||
|
|
||||||
@item -Wswitch
|
@item -Wswitch
|
||||||
@opindex Wswitch
|
@opindex Wswitch
|
||||||
@opindex Wno-switch
|
@opindex Wno-switch
|
||||||
|
@ -1,3 +1,10 @@
|
|||||||
|
2014-11-10 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
* c-c++-common/Wshift-count-overflow-1.c: New.
|
||||||
|
* c-c++-common/Wshift-count-overflow-2.c: Likewise.
|
||||||
|
* c-c++-common/Wshift-count-negative-1.c: Likewise.
|
||||||
|
* c-c++-common/Wshift-count-negative-2.c: Likewise.
|
||||||
|
|
||||||
2014-11-10 Andreas Tobler <andreast@gcc.gnu.org>
|
2014-11-10 Andreas Tobler <andreast@gcc.gnu.org>
|
||||||
|
|
||||||
* gcc.dg/fshort-wchar.c: Use arm_eabi instead of arm*-*-*eabi*.
|
* gcc.dg/fshort-wchar.c: Use arm_eabi instead of arm*-*-*eabi*.
|
||||||
|
8
gcc/testsuite/c-c++-common/Wshift-count-negative-1.c
Normal file
8
gcc/testsuite/c-c++-common/Wshift-count-negative-1.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-Wshift-count-negative" } */
|
||||||
|
|
||||||
|
void foo()
|
||||||
|
{
|
||||||
|
unsigned i1 = 1U << -1; /* { dg-warning "left shift count is negative" } */
|
||||||
|
unsigned i2 = 1U >> -1; /* { dg-warning "right shift count is negative" } */
|
||||||
|
}
|
8
gcc/testsuite/c-c++-common/Wshift-count-negative-2.c
Normal file
8
gcc/testsuite/c-c++-common/Wshift-count-negative-2.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-Wno-shift-count-negative" } */
|
||||||
|
|
||||||
|
void foo()
|
||||||
|
{
|
||||||
|
unsigned i1 = 1U << -1;
|
||||||
|
unsigned i2 = 1U >> -1;
|
||||||
|
}
|
8
gcc/testsuite/c-c++-common/Wshift-count-overflow-1.c
Normal file
8
gcc/testsuite/c-c++-common/Wshift-count-overflow-1.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-Wshift-count-overflow" } */
|
||||||
|
|
||||||
|
void foo()
|
||||||
|
{
|
||||||
|
unsigned i1 = 1U << (sizeof(unsigned) * __CHAR_BIT__); /* { dg-warning "left shift count >= width of type" } */
|
||||||
|
unsigned i2 = 1U >> (sizeof(unsigned) * __CHAR_BIT__); /* { dg-warning "right shift count >= width of type" } */
|
||||||
|
}
|
8
gcc/testsuite/c-c++-common/Wshift-count-overflow-2.c
Normal file
8
gcc/testsuite/c-c++-common/Wshift-count-overflow-2.c
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
/* { dg-do compile } */
|
||||||
|
/* { dg-options "-Wno-shift-count-overflow" } */
|
||||||
|
|
||||||
|
void foo()
|
||||||
|
{
|
||||||
|
unsigned i1 = 1U << (sizeof(unsigned) * __CHAR_BIT__);
|
||||||
|
unsigned i2 = 1U >> (sizeof(unsigned) * __CHAR_BIT__);
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user