}
break;
+ case GOMP_MAP_DECLARE_DEALLOCATE:
+ {
+ bool deallocate_pointer
+ = i + 1 < mapnum && (kinds[i + 1] & 0xff) == GOMP_MAP_TO_PSET;
+ gomp_mutex_unlock (&acc_dev->lock);
+ gomp_acc_declare_allocate (false, deallocate_pointer,
+ &hostaddrs[i], &sizes[i], &kinds[i]);
+ gomp_mutex_lock (&acc_dev->lock);
+ if (deallocate_pointer)
+ {
+ i++;
+ while (i + 1 < mapnum
+ && (kinds[i + 1] & 0xff) == GOMP_MAP_POINTER)
+ i++;
+ }
+ }
+ break;
+
+ case GOMP_MAP_STRUCT:
+ /* Skip the 'GOMP_MAP_STRUCT' itself, and use the regular processing
+ for all its entries. This special handling exists for GCC 10.1
+ compatibility; afterwards, we're not generating these no-op
+ 'GOMP_MAP_STRUCT's anymore. */
+ break;
+
default:
gomp_fatal (">>>> goacc_exit_data_internal UNHANDLED kind 0x%.2x",
kind);