[fortran, patch] PR17711 - wrong operator name in error message

Jerry DeLisle jvdelisle@verizon.net
Sun Jul 8 19:29:00 GMT 2007


Daniel Franke wrote:
> Due to different operator styles as defined by FORTRAN 77 and Fortran 90, 
> e. '.eq.' vs. '==', error messages do sometimes not match the operator 
> specifed in the source. 
> 
> Attached patch is based on previous work done by Tobias Schlüter [1].
> 
> Not related to PR17711, but also fixed in this patch: duplicate/mismatching 
> definitions of intrinsic operators where not detected:
> 
>   INTERFACE OPERATOR (.AND.)
>     MODULE PROCEDURE my_and
>   END INTERFACE
> 
>   INTERFACE OPERATOR (.AND.)
>     MODULE PROCEDURE my_and       ! already present
>   END INTERFACE
> 
>   INTERFACE OPERATOR (.AND.)
>     MODULE PROCEDURE my_or        ! ambiguous
>   END INTERFACE
> 
> User defined operators where already checked correctly.
> 
> 
> :ADDPATCH fortran:
> 
> gcc/fortran:
> 2007-06-30  Daniel Franke  <franke.daniel@gmail.com>
>             Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>
> 
> 	PR fortran/17711
> 	* gfortran.h (gfc_intrinsic_op): Added INTRINSIC_EQ_OS, 
> 	INTRINSIC_NE_OS, INTRINSIC_GT_OS, INTRINSIC_GE_OS, 
> 	INTRINSIC_LT_OS and INTRINSIC_LE_OS.
> 	* arith.c (eval_intrinsic, eval_type_intrinsic0): Likewise.
> 	* arith.h (gfc_eq, gfc_ne, gfc_gt, gfc_ge, gfc_lt, gfc_le):
> 	Added gfc_intrinsic_op as third argument type.
> 	* dump-parse-tree.c (gfc_show_expr): Account for new enum
>         values.
>         * expr.c (simplify_intrinsic_op, check_intrinsic_op): Likewise.
>         * interface.c (check_operator_interface): Likewise.
> 	(gfc_check_interfaces): Added cross-checks for FORTRAN 77 and 
> 	Fortran 90 style operators using new enum values.
> 	(gfc_extend_expr): Likewise.
> 	(gfc_add_interface): Likewise.
>         * match.c (intrinsic_operators): Distinguish FORTRAN 77 style
>         operators from Fortran 90 style operators using new enum values.
>         * matchexp.c (match_level_4):  Account for new enum values.
>         * module.c (mio_expr): Likewise.
>         * resolve.c (resolve_operator): Deal with new enum values, fix
>         inconsistent error messages.
>         * trans-expr.c (gfc_conv_expr_op):  Account for new enum
>         values.
> 
> gcc/testsuite:
> 2007-06-30  Daniel Franke  <franke.daniel@gmail.com>
> 
> 	PR fortran/17711
> 	* gfortran.dg/operator_4.f90: New test.
> 	* gfortran.dg/operator_5.f90: New test.
> 	* gfortran.dg/module_md5_1.f90: Adjusted MD5 sum due to 
> 	increased number of operators in module files.
> 
> 
> Bootstrapped and regression tested on i686-pc-linux-gnu. 
> Ok for trunk?
> 
Yes, OK for trunk.  Good job!  Please make sure module_md5_1.f90 and 
logical_comp.f90 are fixed as discussed on IRC.

Thanks,

Jerry



More information about the Fortran mailing list