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]

Re: wide-int, fortran



On 11/24/2013 05:50 AM, Tobias Burnus wrote:
Mike Stump wrote:
Richi has asked the we break the wide-int patch so that the individual port and front end maintainers can review their parts without have to go through the entire patch. This patch covers the fortran front end.

Nice clean up. The new class looks much cleaner as it avoids the LO/HI handling.


-      hi = TREE_INT_CST_HIGH (bound);
-      low = TREE_INT_CST_LOW (bound);
-      if (hi || low < 0
-      || ((!as || as->type != AS_ASSUMED_RANK)
-          && low >= GFC_TYPE_ARRAY_RANK (TREE_TYPE (desc)))
-      || low > GFC_MAX_DIMENSIONS)
+      if (((!as || as->type != AS_ASSUMED_RANK)
+       && wi::geu_p (bound, GFC_TYPE_ARRAY_RANK (TREE_TYPE (desc))))
+      || wi::gtu_p (bound, GFC_MAX_DIMENSIONS))
     gfc_error ("'dim' argument of %s intrinsic at %L is not a valid "
            "dimension index", upper ? "UBOUND" : "LBOUND",
            &expr->where);

I don't see what happened to the "low < 0" check. (Ditto for the next chunk in conv_intrinsic_cobound).

Otherwise, it looks okay to me.

Tobias

This is the magic of using the correct representation. All this code really wanted to check is that bound is a small positive integer.



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