c-tree.h (warn_float_equal): Declare.

* c-tree.h (warn_float_equal): Declare.
        * c-decl.c (warn_float_equal): Define.
        (c_decode_option): Recognize -W[no-]float-equal.
        * c-typeck.c (build_binary_op): Conditionally warn
        about equality tests of floating point types.
        * toplev.c (documented_lan_options): Add -W[no-]float-equal.

From-SVN: r29722
This commit is contained in:
Dirk Zoller 1999-09-30 06:19:54 +00:00 committed by Jeff Law
parent 1bdba2c09c
commit b843d2101e
5 changed files with 25 additions and 0 deletions

View File

@ -1,3 +1,12 @@
Thu Sep 30 00:13:27 1999 Dirk Zoller <duz@rtsffm.com>
* c-tree.h (warn_float_equal): Declare.
* c-decl.c (warn_float_equal): Define.
(c_decode_option): Recognize -W[no-]float-equal.
* c-typeck.c (build_binary_op): Conditionally warn
about equality tests of floating point types.
* toplev.c (documented_lan_options): Add -W[no-]float-equal.
Wed Sep 29 23:43:39 1999 Jeffrey A Law (law@cygnus.com)
* cse.c (struct set): Delete inner_dest_loc field.

View File

@ -446,6 +446,10 @@ int warn_unknown_pragmas = 0; /* Tri state variable. */
int warn_sign_compare = -1;
/* Warn about testing equality of floating point numbers. */
int warn_float_equal = 0;
/* Nonzero means warn about use of multicharacter literals. */
int warn_multichar = 1;
@ -724,6 +728,10 @@ c_decode_option (argc, argv)
warn_sign_compare = 1;
else if (!strcmp (p, "-Wno-sign-compare"))
warn_sign_compare = 0;
else if (!strcmp (p, "-Wfloat-equal"))
warn_float_equal = 1;
else if (!strcmp (p, "-Wno-float-equal"))
warn_float_equal = 0;
else if (!strcmp (p, "-Wmultichar"))
warn_multichar = 1;
else if (!strcmp (p, "-Wno-multichar"))

View File

@ -422,6 +422,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 multicharacter constants. */
extern int warn_multichar;

View File

@ -2099,6 +2099,8 @@ build_binary_op (code, orig_op0, orig_op1, convert_p)
case EQ_EXPR:
case NE_EXPR:
if (warn_float_equal && (code0 == REAL_TYPE || code1 == REAL_TYPE))
warning ("comparing floating point with == or != is unsafe");
/* Result of comparison is always int,
but don't convert the args to int! */
build_type = integer_type_node;

View File

@ -1100,6 +1100,8 @@ documented_lang_options[] =
{ "-Wno-redundant-decls", "" },
{ "-Wsign-compare", "Warn about signed/unsigned comparisons" },
{ "-Wno-sign-compare", "" },
{ "-Wfloat-equal", "Warn about testing equality of floating point numbers" },
{ "-Wno-float-equal", "" },
{ "-Wunknown-pragmas", "Warn about unrecognised pragmas" },
{ "-Wno-unknown-pragmas", "" },
{ "-Wstrict-prototypes", "Warn about non-prototyped function decls" },