mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-03-21 17:21:03 +08:00
cp-tree.h (warn_float_equal): Declare.
* cp-tree.h (warn_float_equal): Declare. * decl2.c (warn_float_equal): Define. (lang_decode_option): Recognize -W[no-]float-equal. * typeck.c (build_binary_op_nodefault): Conditionally warn about equality tests of floating point types. From-SVN: r29721
This commit is contained in:
parent
061f7e4721
commit
1bdba2c09c
@ -1,3 +1,11 @@
|
||||
Thu Sep 30 00:13:27 1999 Dirk Zoller <duz@rtsffm.com>
|
||||
|
||||
* cp-tree.h (warn_float_equal): Declare.
|
||||
* decl2.c (warn_float_equal): Define.
|
||||
(lang_decode_option): Recognize -W[no-]float-equal.
|
||||
* typeck.c (build_binary_op_nodefault): Conditionally warn
|
||||
about equality tests of floating point types.
|
||||
|
||||
1999-09-29 Jason Merrill <jason@yorick.cygnus.com>
|
||||
|
||||
Support normal type_info-based EH mechanisms with -fno-rtti.
|
||||
|
@ -893,6 +893,10 @@ extern int warn_missing_braces;
|
||||
|
||||
extern int warn_sign_compare;
|
||||
|
||||
/* Warn about testing equality of floating point numbers. */
|
||||
|
||||
extern int warn_float_equal;
|
||||
|
||||
/* Warn about a subscript that has type char. */
|
||||
|
||||
extern int warn_char_subscripts;
|
||||
|
@ -277,6 +277,10 @@ int warn_missing_braces;
|
||||
|
||||
int warn_sign_compare;
|
||||
|
||||
/* Warn about testing equality of floating point numbers. */
|
||||
|
||||
int warn_float_equal = 0;
|
||||
|
||||
/* Warn about *printf or *scanf format/argument anomalies. */
|
||||
|
||||
int warn_format;
|
||||
@ -689,6 +693,8 @@ lang_decode_option (argc, argv)
|
||||
warn_missing_braces = setting;
|
||||
else if (!strcmp (p, "sign-compare"))
|
||||
warn_sign_compare = setting;
|
||||
else if (!strcmp (p, "float-equal"))
|
||||
warn_float_equal = setting;
|
||||
else if (!strcmp (p, "format"))
|
||||
warn_format = setting;
|
||||
else if (!strcmp (p, "conversion"))
|
||||
|
@ -3574,6 +3574,9 @@ build_binary_op_nodefault (code, orig_op0, orig_op1, error_code)
|
||||
|
||||
case EQ_EXPR:
|
||||
case NE_EXPR:
|
||||
if (warn_float_equal && (code0 == REAL_TYPE || code1 == REAL_TYPE))
|
||||
warning ("comparing floating point with == or != is unsafe");
|
||||
|
||||
build_type = boolean_type_node;
|
||||
if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE
|
||||
|| code0 == COMPLEX_TYPE)
|
||||
|
Loading…
x
Reference in New Issue
Block a user