For omp parallel shared(array_desc_var) the shared-variable is passed to the generated function as argument - and replaced by a DECL_VALUE_EXPR inside the parallel region. If inside the parallel region, a omp target data has_device_addr(array_descr_var) is used, the latter generates a omp_arr->array_descr_var = &array_descr_var.data; ... tmp_desc = array_descr_var tmp_desc.data = omp_o->array_descr_var that is: 'tmp_desc' gets assigned the original descriptor and only the data components is updated. However, if that's inside the parallel region, not 'array_descr_var' has to be used – but the value expression ('omp_i->array_descr_var'). Fixed by searching the variable used in use_device_{addr,ptr} in the outer OpenMP context – and then checking for a DECL_VALUE_EXPR. OK? Tobias ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht München, HRB 106955