On 07/12/2016 02:26 PM, Kagamin wrote:
On Monday, 11 July 2016 at 13:54:49 UTC, ag0aep6g wrote:
If I got that right: Sure. But the compiler can't know if a shared
variable is volatile or not, so it has to assume that it is. If the
programmer knows that it's not volatile, they can cast shared away and
use a normal load.
If you cast shared away, an unshared postblit will be called instead of
shared one.
True. One would have to watch out for that, and maybe work around
correspondingly. The cast would be a greppable indicator that special
care is needed. In contrast, unsafe reading/writing of shared data that
looks like just another assignment is similarly problematic and harder
to spot.
If reading/writing shared directly would be disallowed completely
(always have to use core.atomic or cast), then shared postblits wouldn't
make sense anymore, I guess.