[Patch, Fortran, OOP] PR 59414: Class array pointers: compile error on valid code (Different ranks in pointer assignment)

Janus Weil janus@gcc.gnu.org
Sat Dec 7 18:05:00 GMT 2013


Hi all,

here is a small patch to fix a problem with class-array-valued
functions, where the rank was not determined properly. Regtestes on
x86_64-unknown-linux-gnu. Ok for trunk?

[Note: This patch only fixes the rejects-valid problem of comment 0/1,
but not the ICE of comment 2/3, which is a completely separate issue.]

Cheers,
Janus



2013-12-07  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/59414
    * resolve.c (resolve_specific_f0): Handle CLASS-valued functions.

2013-12-07  Janus Weil  <janus@gcc.gnu.org>

    PR fortran/59414
    * gfortran.dg/class_result_2.f90: New.
-------------- next part --------------
Index: gcc/fortran/resolve.c
===================================================================
--- gcc/fortran/resolve.c	(revision 205782)
+++ gcc/fortran/resolve.c	(working copy)
@@ -2616,7 +2616,9 @@ found:
     expr->ts = sym->ts;
   expr->value.function.name = sym->name;
   expr->value.function.esym = sym;
-  if (sym->as != NULL)
+  if (sym->ts.type == BT_CLASS && CLASS_DATA (sym)->as)
+    expr->rank = CLASS_DATA (sym)->as->rank;
+  else if (sym->as != NULL)
     expr->rank = sym->as->rank;
 
   return MATCH_YES;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: class_result_2.f90
Type: text/x-fortran
Size: 426 bytes
Desc: not available
URL: <http://gcc.gnu.org/pipermail/fortran/attachments/20131207/26ec3f47/attachment.bin>


More information about the Fortran mailing list