(j3.2006) (SC22WG5.3715) [ukfortran] Atomic stuff
Wed Dec 3 13:36:29 EST 2008
j3-bounces at j3-fortran.org wrote on 12/03/2008 01:14:52 PM:
> >Now I take another look at the atomic stuff we worked out in Tokyo, I
> >think there is an issue we didn't address: alignment. Consider on a
> >system we have atomic_integer_kind being 4 bytes, and the processor
> >supports 2 byte integers, then the following declarations
> > integer(2) x(3)
> > integer(ATOMIC_INTEGER_KIND) y, z
> > equivalence (y, x(2))
> > equivalence (z, x)
> >Now either y or z is out of natural alignment. This will certainly
> >implementation problems on atomic operations on y and z. We have to
> >disallow this to happen.
> Already done for that example - see Note 5.42 in 126.96.36.199.
Nick, I don't see how that note (5.42) covers my example.
> that we make the appropriate changes to avoid that. Then it is clobbered
> constraint C589, C590, C591 and 188.8.131.52.
> The problem has been there since time immemorial in the case of systems
> where unaligned access is not supported (especially for DOUBLE
> Yes, I know that the IBM System/360 (sic) Fortran library trapped the
> interrupts and fixed up the alignment, but that was a performance
> not all compilers did and some still don't. But, curiously, I can't find
> where that that one is locked out.
Atomic loads and stores on mis-aligned variables are nearly impossible on
many hardwares (The solution to fix up the mis-alignment by either
hardware or OS causes the operation become non-atomic, let along the
Three places I think will likely cause this mis-alignment: EQUIVELENCE,
COMMON BLOCK and structure component level. The one that is relevant to
coarrays is structure component. The other two will apply to local
objects only. We need to think how to fix that.
RL Fortran Compiler Test
IBM Toronto Lab at 8200 Warden Ave, Markham, On, L6G 1C7
Phone (905) 413-3444 Tie-line 313-3444
email: jimxia at ca.ibm.com
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the J3