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]

[Patch, fortran] PR60717 - Wrong code with recursive procedure with unlimited polymorphic dummy argument


Dear All,

This fix, of itself, is quite obvious.  The offset was being set to
zero for array segments, rather than that required for unity valued
lvalues.

I think that the fix could be used to clean up:

trans-expr.c(gfc_trans_alloc_subarray_assign)
trans-expr.c(gfc_trans_pointer_assign)
trans-expr.c(fncall_realloc_result)
trans-array.c(trans_associate_var)

each of which contains calculation of the offset. However, I do not
think that this is the stage to fix things that are not broken!

I propose to keep the PR open as a reminder to look into this.

Bootstrapped and regtested on X86_64/FC17 - OK for trunk and backporting to 4.8?

Paul

 2014-04-12  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/58771
    * trans.h : Add 'use_offset' bitfield to gfc_se.
    * trans-array.c (gfc_conv_expr_descriptor) : Use 'use_offset'
    as a trigger to unconditionally recalculate the offset.
    trans-expr.c (gfc_conv_intrinsic_to_class) : Use it.
    (gfc_conv_procedure_call) : Ditto.

2014-04-02  Paul Thomas  <pault@gcc.gnu.org>

    PR fortran/58771
    * gfortran.dg/unlimited_polymorphic_17.f90 : New test

Attachment: pr60717.diff
Description: Text document


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