------- Comment #3 from burnus at gcc dot gnu dot org 2007-03-31 22:51 ------- Created an attachment (id=13312) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=13312&action=view) Preliminary patch
> Valgrind gives no error related to uninitialized when compiling with gfortran. I think you are using: valgrind gfortran use_6.f90 this does not work as "gfortran" is only a wrapper program. You need to call valgrind /..../4.3.0/f951 use_6.f90 ... as the problem is in f951. The error is in the line: if (type == INTERFACE_USER_OP) new->operator = operator; of module.c's gfc_match_use as - contrary to my expectation - gfc_match_generic_spec does not initialize operator for type == INTERFACE_USER_OP. Attached: First draft of a patch, which fixes: a) Uninitialized variable b) Better error message for operator(.foo.) => operator(.gt.) (use-defined-operator shall not identify a generic-binding, C1111/R1111) c) Allow operator(.gt.) => operator(.foo.) (c) is not working and gives error messages such as: Operands of comparison operator '.gt.' at (1) are TYPE(bar)/TYPE(bar) (Could someone check whether I read C1111/R1111 (in Section 11.2.1 of the Fortran 2003 standard) correctly that .gt.=>.foo. is allowed and .foo. => .gt. forbidden? As both g95 and NAG f95 do not seem to support renaming of operators, I can not even check what other compilers are doing.) -- burnus at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- AssignedTo|jvdelisle at gcc dot gnu dot|burnus at gcc dot gnu dot |org |org http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31298