OSDN Git Service

gcc/:
authorrwild <rwild@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Feb 2008 06:17:46 +0000 (06:17 +0000)
committerrwild <rwild@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 22 Feb 2008 06:17:46 +0000 (06:17 +0000)
PR c/19999
* c-typeck.c (build_binary_op): Warn about floating point
comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.

gcc/cp/:
* typeck.c (build_binary_op): Warn about floating point
comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.

gcc/testsuite/:
* gcc.dg/Wfloat-equal-1.c: New.
* g++.dg/warn/Wfloat-equal-1.C: New.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132540 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/c-typeck.c
gcc/cp/ChangeLog
gcc/cp/typeck.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C [new file with mode: 0644]
gcc/testsuite/gcc.dg/Wfloat-equal-1.c [new file with mode: 0644]

index 93b1e07..a7253f9 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       PR c/19999
+       * c-typeck.c (build_binary_op): Warn about floating point
+       comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
+
 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
 
        PR target/34526
 2008-02-21  Janis Johnson  <janis187@us.ibm.com>
 
        PR target/34526
index 60b0b02..55b4b23 100644 (file)
@@ -8138,7 +8138,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
 
     case EQ_EXPR:
     case NE_EXPR:
 
     case EQ_EXPR:
     case NE_EXPR:
-      if (code0 == REAL_TYPE || code1 == REAL_TYPE)
+      if (FLOAT_TYPE_P (type0) || FLOAT_TYPE_P (type1))
        warning (OPT_Wfloat_equal,
                 "comparing floating point with == or != is unsafe");
       /* Result of comparison is always int,
        warning (OPT_Wfloat_equal,
                 "comparing floating point with == or != is unsafe");
       /* Result of comparison is always int,
index 81a243a..b300db0 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       PR c/19999
+       * typeck.c (build_binary_op): Warn about floating point
+       comparisons if FLOAT_TYPE_P, not only for REAL_TYPE.
+
 2008-02-19  Jason Merrill  <jason@redhat.com>
 
        PR c++/34950
 2008-02-19  Jason Merrill  <jason@redhat.com>
 
        PR c++/34950
index 9764ed3..eef6914 100644 (file)
@@ -3359,7 +3359,7 @@ build_binary_op (enum tree_code code, tree orig_op0, tree orig_op1,
 
     case EQ_EXPR:
     case NE_EXPR:
 
     case EQ_EXPR:
     case NE_EXPR:
-      if (code0 == REAL_TYPE || code1 == REAL_TYPE)
+      if (FLOAT_TYPE_P (type0) || FLOAT_TYPE_P (type1))
        warning (OPT_Wfloat_equal,
                 "comparing floating point with == or != is unsafe");
       if ((TREE_CODE (orig_op0) == STRING_CST && !integer_zerop (op1))
        warning (OPT_Wfloat_equal,
                 "comparing floating point with == or != is unsafe");
       if ((TREE_CODE (orig_op0) == STRING_CST && !integer_zerop (op1))
index 259bfbe..493effc 100644 (file)
@@ -1,3 +1,9 @@
+2008-02-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
+
+       PR c/19999
+       * gcc.dg/Wfloat-equal-1.c: New.
+       * g++.dg/warn/Wfloat-equal-1.C: New.
+
 2008-02-21  Michael Matz  <matz@suse.de>
 
        PR target/35264
 2008-02-21  Michael Matz  <matz@suse.de>
 
        PR target/35264
diff --git a/gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C b/gcc/testsuite/g++.dg/warn/Wfloat-equal-1.C
new file mode 100644 (file)
index 0000000..36b3fa5
--- /dev/null
@@ -0,0 +1,10 @@
+/* PR c/19999 */
+/* { dg-do compile } */
+/* { dg-options "-Wfloat-equal" } */
+
+double a, b;
+_Complex double c, d;
+int f(void) { return a == b; } /* { dg-warning "comparing floating point" } */
+int g(void) { return c == d; } /* { dg-warning "comparing floating point" } */
+int h(void) { return a != b; } /* { dg-warning "comparing floating point" } */
+int i(void) { return c != d; } /* { dg-warning "comparing floating point" } */
diff --git a/gcc/testsuite/gcc.dg/Wfloat-equal-1.c b/gcc/testsuite/gcc.dg/Wfloat-equal-1.c
new file mode 100644 (file)
index 0000000..36b3fa5
--- /dev/null
@@ -0,0 +1,10 @@
+/* PR c/19999 */
+/* { dg-do compile } */
+/* { dg-options "-Wfloat-equal" } */
+
+double a, b;
+_Complex double c, d;
+int f(void) { return a == b; } /* { dg-warning "comparing floating point" } */
+int g(void) { return c == d; } /* { dg-warning "comparing floating point" } */
+int h(void) { return a != b; } /* { dg-warning "comparing floating point" } */
+int i(void) { return c != d; } /* { dg-warning "comparing floating point" } */