On 11/09/15 09:46, Nathan Sidwell wrote: > I'm going to try and get clarification, but I think the intent is to initialize > with the value seen on the device. Consider: > My thinking is that the intent of the firstprivate is to initialize with the > value known on the device (and behave as-if copyin, if it's not there). Not the > value most recently seen on the host -- the update clause could change that, and > may well be being used as a debugging aide, so it seems bizarre that it can > change program semantics in such a way. We believe my example is well formed. The data clauses transfer liveness of the data from host to device (and vice versa). It is ill formed to manipulate the data on the non-live system. firstprivate's intial value is taken from the (statically determined) live location. Unless I'm misunderstanding something about GOMP_MAP_FIRSTPRIVATE, using regular target mapping is the right thing. Here's an updated patch with the other two issues you noted fixed. nathan