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:
Dirk Zoller 1999-09-30 06:15:53 +00:00 committed by Jeff Law
parent 061f7e4721
commit 1bdba2c09c
4 changed files with 21 additions and 0 deletions

View File

@ -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.

View File

@ -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;

View File

@ -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"))

View File

@ -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)