This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[Fortran, patch] PR33001 - Point to -fno-range-check
- From: Tobias Burnus <burnus at net-b dot de>
- To: "'fortran at gcc dot gnu dot org'" <fortran at gcc dot gnu dot org>, gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Mon, 06 Aug 2007 20:16:31 +0200
- Subject: [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: