This is the mail archive of the 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]

Re: [Patch, fortran] PR31213 , PR33888 and PR33998 - formal actual mapping problems

Paul Richard Thomas wrote:
> The attached patch builds upon Richard Sandiford's interface mapping
> mechanism

!             /* If the iterator appears in a specification exxpression in
!                an interface mapping, we need to make a temp for the loop

s/exxpression/expression/ as Dominique already noted.

+         if (expr->ts.type == BT_CHARACTER
+               && expr->>length->expr_type != EXPR_CONSTANT)

Indention looks wrong.

+          character(0) h4(1:minval([(1,i=1,0)],1))

As written, this gives a huge array size. As Dominique remarked:

> The original pr33998 had the line:
>         character(0) sv1(size(x,1):size(h4)) 

+       /* TODO These implementations of lbound and ubound do not limit
if the
+          size < 0, according to 13.14.53 and 13.14.113.  */

You should mention which Fortran standard you quote (F95 or F2003; it is
F95). At least when there is also F2008 it will get a bit confusing.

+    case GFC_ISYM_LBOUND:
+    case GFC_ISYM_UBOUND:
+      if (arg2 && arg2->expr_type == EXPR_CONSTANT)
+       d = mpz_get_si (arg2->value.integer) - 1;
+      else
+       d = 0;
+      if (expr->value.function.isym->id == GFC_ISYM_LBOUND)
+       new_expr = gfc_copy_expr (sym->as->lower[d]);

I do not understand the arg2 == NULL case; arg2 is the dimension, but
why is new_expr equal to dimension 1 and not an array with the ubounds
of all dimensions? Probably I just have not yet fully understood the patch.

Otherwise the patch looks ok and as far as I tested fixes all test cases
from the PRs.


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