This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Fortran, patch] PR33001 - Point to -fno-range-check


:ADDPATCH fortran:

Currently, we have in primary.c:
  if (gfc_range_check (e) != ARITH_OK)
    {
      gfc_error ("Integer too big for its kind at %C. This check can be "
                 "disabled with the option -fno-range-check");

As the same problem can also occur with BOZ in DATA statements, I would
suggested to apply the following patch.

Test case:

      INTEGER LARGE(2)
      DATA LARGE(1), LARGE(2) / Z'FFFFFFFF', Z'7FEFFFFF' /
                                          1
Error: Arithmetic overflow converting INTEGER(16) to INTEGER(4) at (1)


The error is correct, however, if the overflow is intended, then
-fno-bounds-check has to be used. As it is not obvious that such an
option exists, I think one should point to that flag in the error
message. Hopeful this will reduce the number of such bug reports and
help increase with user satisfaction.

The following patch was build & regression tested on x86_64. Ok for the
trunk?

Tobias

Index: gcc/fortran/arith.c
===================================================================
--- gcc/fortran/arith.c (Revision 127246)
+++ gcc/fortran/arith.c (Arbeitskopie)
@@ -1981,7 +1981,8 @@ arith_error (arith rc, gfc_typespec *fro
                 gfc_typename (from), gfc_typename (to), where);
       break;
     case ARITH_OVERFLOW:
-      gfc_error ("Arithmetic overflow converting %s to %s at %L",
+      gfc_error ("Arithmetic overflow converting %s to %s at %L. This check "
+                "can be disabled with the option -fno-range-check",
                 gfc_typename (from), gfc_typename (to), where);
       break;
     case ARITH_UNDERFLOW:


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]