[Patch, fortran] PR91726 - [7/8/9/10 Regression] ICE in gfc_conv_array_ref, at fortran/trans-array.c:3612

classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

[Patch, fortran] PR91726 - [7/8/9/10 Regression] ICE in gfc_conv_array_ref, at fortran/trans-array.c:3612

Paul Richard Thomas
Fixing the original problem in the module took a few minutes. Making
the module do something useful took rather longer! The testcase in the
patch compiles with 6-branch but segfaults in runtime.

Bootstrapped and regtested on FC30/x86_64 - OK to commit and go
steadily back through the branches over some weeks?

Regards

Paul

2019-09-22  Paul Thomas  <[hidden email]>

    PR fortran/91726
    * resolve.c (gfc_expr_to_initialize): Bail out with a copy of
    the original expression if the array ref is a scalar and the
    array_spec has corank.
    * trans-array.c (gfc_conv_array_ref): Such expressions are OK
    even if the array ref codimen is zero.
    * trans-expr.c (gfc_get_class_from_expr): New function taken
    from gfc_get_vptr_from_expr.
    (gfc_get_vptr_from_expr): Call new function.
    * trans-stmt.c (trans_associate_var): If one of these is a
    target expression, extract the class expression from the target
    and copy its fields to a new target variable.
    * trans.h : Add prototype for gfc_get_class_from_expr.

2019-09-22  Paul Thomas  <[hidden email]>

    PR fortran/91726
    * gfortran.dg/coarray_poly_9.f90 : New test.

submit.diff (8K) Download Attachment