Thomas Koenig wrote:
the attached patch warns about comparisions for equality and inequality
of real and complex values if -Wcompare-reals is given. The new
compiler option is included in -Wall.

Regression-tested, tested with "make info" and "make dvi".
OK for trunk?

Thanks for the patch. It's okay, after fixing the nits below.

+         if (gfc_option.warn_compare_reals)
+           {
+             gfc_intrinsic_op op = e->value.op.op;
+       
+             if ((op1->ts.type == BT_REAL || op1->ts.type == BT_COMPLEX)
+                 && (op == INTRINSIC_EQ || op == INTRINSIC_EQ_OS
+                     || op == INTRINSIC_NE || op == INTRINSIC_NE_OS))
+               {
+                 bool equality;
+
+                 equality = op == INTRINSIC_EQ || op == INTRINSIC_EQ_OS;
+               
+                 /* Type conversion has made sure that the types
+                    of op1 and op2 agree.  */
+                 gfc_warning ("%s comparison for %s at %L",
+                              equality ? "Equality" : "Inequality",
+                              gfc_typename (&op1->ts), &op1->where);

Can you move up the comment before the "(op1->ts.type"? When reading the patch, I stumbled over that, before reading 8 lines later that checking op1 is sufficient.

Additionally, your gfc_warning is rather unfriendly to translators (try yourself to translate it, taking into account that the "Equality" string might be re-used elsewhere). I think it is better to have two separate strings, one for equality and one for inequality.

Tobias

Reply via email to