[Fortran-dev, patch] Use only lbound/extent/sm in the array descriptor

Thomas Koenig tkoenig@netcologne.de
Sun Mar 11 17:35:00 GMT 2012


Hi Tobias,

> with that patch, the array descriptor on the fortran-dev branch uses now
> the dimension triplet as defined in TS29113. This patch removes
> ubound/stride and updates all calls.

Great!


> There are still 227 test-suite failures ("FAIL" lines) affecting 27
> test-suite files. That's slightly down from the 269 lines the branch
> currently has. (Some issues can be fixed by modifying the tree dump
> patterns, but most seem to be "real" problems.)
>
> Build and regtested on x86-64-linux.
> OK for the branch?

The library parts look OK to me.

There is just one point of efficiency.

+#define GFC_DESCRIPTOR_STRIDE(desc,i) \
+  (GFC_DESCRIPTOR_SM(desc,i) / GFC_DESCRIPTOR_SIZE(desc))

In most generated files, GFC_DESCRIPTOR_SIZE is a constant known
at compile-time (and usually a power of two), which means that the
division can be done in a simple shift.  If we get the size from the 
descriptor, we actually have to divide, which is expensive.

I would commit the patch now, adding
>
> TODO:
> - Fixing the regressions.
> - Cleanup of the library and the front end
> - Switching also from ubound -> extent for nondescriptor arrays?
> - Properly implement subpointers

- Avoid division for GFC_DESCRIPTOR_STRIDE where possible.

	Thomas



More information about the Gcc-patches mailing list