mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-04-11 13:11:23 +08:00
Fix c++/27975.
* c.opt (Wenum-compare): New warning option. * doc/invoke.texi (Warning Options): Document -Wenum-compare. cp/ * call.c (build_new_op): Make warning conditional on OPT_Wenum_compare. testsuite/ * g++.dg/warn/Wenum-compare.C: New testcase. * g++.dg/warn/Wenum-compare-no.C: Ditto. From-SVN: r136035
This commit is contained in:
parent
bd42a56bb4
commit
a32990968e
@ -1,3 +1,9 @@
|
||||
2008-05-27 Michael Matz <matz@suse.de>
|
||||
|
||||
PR c++/27975
|
||||
* c.opt (Wenum-compare): New warning option.
|
||||
* doc/invoke.texi (Warning Options): Document -Wenum-compare.
|
||||
|
||||
2008-05-27 Michael Matz <matz@suse.de>
|
||||
|
||||
PR middle-end/36326
|
||||
|
@ -195,6 +195,10 @@ Wendif-labels
|
||||
C ObjC C++ ObjC++ Warning
|
||||
Warn about stray tokens after #elif and #endif
|
||||
|
||||
Wenum-compare
|
||||
C++ ObjC++ Var(warn_enum_compare) Init(1) Warning
|
||||
Warn about comparison of different enum types
|
||||
|
||||
Werror
|
||||
C ObjC C++ ObjC++
|
||||
; Documented in common.opt
|
||||
|
@ -1,3 +1,9 @@
|
||||
2008-05-27 Michael Matz <matz@suse.de>
|
||||
|
||||
PR c++/27975
|
||||
* call.c (build_new_op): Make warning conditional on
|
||||
OPT_Wenum_compare.
|
||||
|
||||
2008-05-27 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
PR c++/35909
|
||||
|
@ -4004,7 +4004,8 @@ build_new_op (enum tree_code code, int flags, tree arg1, tree arg2, tree arg3,
|
||||
!= TYPE_MAIN_VARIANT (TREE_TYPE (arg2)))
|
||||
&& (complain & tf_warning))
|
||||
{
|
||||
warning (0, "comparison between %q#T and %q#T",
|
||||
warning (OPT_Wenum_compare,
|
||||
"comparison between %q#T and %q#T",
|
||||
TREE_TYPE (arg1), TREE_TYPE (arg2));
|
||||
}
|
||||
break;
|
||||
|
@ -232,7 +232,7 @@ Objective-C and Objective-C++ Dialects}.
|
||||
-Wchar-subscripts -Wclobbered -Wcomment @gol
|
||||
-Wconversion -Wcoverage-mismatch -Wno-deprecated @gol
|
||||
-Wno-deprecated-declarations -Wdisabled-optimization -Wno-div-by-zero @gol
|
||||
-Wempty-body -Wno-endif-labels @gol
|
||||
-Wempty-body -Wenum-compare -Wno-endif-labels @gol
|
||||
-Werror -Werror=* @gol
|
||||
-Wfatal-errors -Wfloat-equal -Wformat -Wformat=2 @gol
|
||||
-Wno-format-contains-nul -Wno-format-extra-args -Wformat-nonliteral @gol
|
||||
@ -3658,6 +3658,11 @@ while} statement. Additionally, in C++, warn when an empty body occurs
|
||||
in a @samp{while} or @samp{for} statement with no whitespacing before
|
||||
the semicolon. This warning is also enabled by @option{-Wextra}.
|
||||
|
||||
@item -Wenum-compare @r{(C++ and Objective-C++ only)}
|
||||
@opindex Wenum-compare
|
||||
@opindex Wno-enum-compare
|
||||
Warn about a comparison between values of different enum types.
|
||||
|
||||
@item -Wsign-compare
|
||||
@opindex Wsign-compare
|
||||
@opindex Wno-sign-compare
|
||||
|
@ -1,3 +1,9 @@
|
||||
2008-05-27 Michael Matz <matz@suse.de>
|
||||
|
||||
PR c++/27975
|
||||
* g++.dg/warn/Wenum-compare.C: New testcase.
|
||||
* g++.dg/warn/Wenum-compare-no.C: Ditto.
|
||||
|
||||
2008-05-27 Richard Guenther <rguenther@suse.de>
|
||||
|
||||
PR tree-optimization/36339
|
||||
|
10
gcc/testsuite/g++.dg/warn/Wenum-compare-no.C
Normal file
10
gcc/testsuite/g++.dg/warn/Wenum-compare-no.C
Normal file
@ -0,0 +1,10 @@
|
||||
/* Test disabling -Wenum-compare (on by default). See PR27975. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-Wno-enum-compare" } */
|
||||
enum E1 { a };
|
||||
enum E2 { b };
|
||||
|
||||
int foo (E1 e1, E2 e2)
|
||||
{
|
||||
return e1 == e2; /* { dg-bogus "comparison between" } */
|
||||
}
|
10
gcc/testsuite/g++.dg/warn/Wenum-compare.C
Normal file
10
gcc/testsuite/g++.dg/warn/Wenum-compare.C
Normal file
@ -0,0 +1,10 @@
|
||||
/* Test that we get the -Wenum-compare by default. See PR27975. */
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "" } */
|
||||
enum E1 { a };
|
||||
enum E2 { b };
|
||||
|
||||
int foo (E1 e1, E2 e2)
|
||||
{
|
||||
return e1 == e2; /* { dg-warning "comparison between" } */
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user