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] |
Hi all, this patch fixes a wrong-code regression related to operators, by making sure that we look for typebound operators first, before looking for non-typebound ones. (Note: Each typebound operator is also added to the list of non-typebound ones, for reasons of diagnostics.) Regtested on x86_64-unknown-linux-gnu. Ok for trunk? 4.9/4.8? Cheers, Janus 2015-01-11 Janus Weil <janus@gcc.gnu.org> PR fortran/63733 * interface.c (gfc_extend_expr): Look for type-bound operators before non-typebound ones. 2015-01-11 Janus Weil <janus@gcc.gnu.org> PR fortran/63733 * gfortran.dg/typebound_operator_20.f90: New.
Attachment:
pr63733.diff
Description: Text document
! { dg-do run } ! ! PR 63733: [4.8/4.9/5 Regression] [OOP] wrong resolution for OPERATOR generics ! ! Original test case from Alberto F. MartÃn Huertas <amartin@cimne.upc.edu> ! Slightly modified by Salvatore Filippone <sfilippone@uniroma2.it> ! Further modified by Janus Weil <janus@gcc.gnu.org> module overwrite type parent contains procedure :: sum => sum_parent generic :: operator(+) => sum end type type, extends(parent) :: child contains procedure :: sum => sum_child end type contains integer function sum_parent(op1,op2) implicit none class(parent), intent(in) :: op1, op2 sum_parent = 0 end function integer function sum_child(op1,op2) implicit none class(child) , intent(in) :: op1 class(parent), intent(in) :: op2 sum_child = 1 end function end module program drive use overwrite implicit none type(parent) :: m1, m2 class(parent), pointer :: mres type(child) :: h1, h2 class(parent), pointer :: hres if (m1 + m2 /= 0) call abort() if (h1 + m2 /= 1) call abort() if (h1%sum(h2) /= 1) call abort() end
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |