Commit 1bdba2c0 by Dirk Zoller Committed by Jeff Law

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
parent 061f7e47
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> 1999-09-29 Jason Merrill <jason@yorick.cygnus.com>
Support normal type_info-based EH mechanisms with -fno-rtti. Support normal type_info-based EH mechanisms with -fno-rtti.
......
...@@ -893,6 +893,10 @@ extern int warn_missing_braces; ...@@ -893,6 +893,10 @@ extern int warn_missing_braces;
extern int warn_sign_compare; 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. */ /* Warn about a subscript that has type char. */
extern int warn_char_subscripts; extern int warn_char_subscripts;
......
...@@ -277,6 +277,10 @@ int warn_missing_braces; ...@@ -277,6 +277,10 @@ int warn_missing_braces;
int warn_sign_compare; 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. */ /* Warn about *printf or *scanf format/argument anomalies. */
int warn_format; int warn_format;
...@@ -689,6 +693,8 @@ lang_decode_option (argc, argv) ...@@ -689,6 +693,8 @@ lang_decode_option (argc, argv)
warn_missing_braces = setting; warn_missing_braces = setting;
else if (!strcmp (p, "sign-compare")) else if (!strcmp (p, "sign-compare"))
warn_sign_compare = setting; warn_sign_compare = setting;
else if (!strcmp (p, "float-equal"))
warn_float_equal = setting;
else if (!strcmp (p, "format")) else if (!strcmp (p, "format"))
warn_format = setting; warn_format = setting;
else if (!strcmp (p, "conversion")) else if (!strcmp (p, "conversion"))
......
...@@ -3574,6 +3574,9 @@ build_binary_op_nodefault (code, orig_op0, orig_op1, error_code) ...@@ -3574,6 +3574,9 @@ build_binary_op_nodefault (code, orig_op0, orig_op1, error_code)
case EQ_EXPR: case EQ_EXPR:
case NE_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; build_type = boolean_type_node;
if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE if ((code0 == INTEGER_TYPE || code0 == REAL_TYPE
|| code0 == COMPLEX_TYPE) || code0 == COMPLEX_TYPE)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment