This patch adds support for using unified memory in the case of regular maps that happen when a target region is offloaded to the device.
For cases where only a single version of the data is required then the host address can be used. When variables need to be privatized in any way or globalized, then the copy to the device is still required for correctness.
Why do we need to handle this in the plugin? As I said in my previous comment, such things can be handled in the generic part of libomptarget.