Index: openmp/libomptarget/src/omptarget.cpp =================================================================== --- openmp/libomptarget/src/omptarget.cpp +++ openmp/libomptarget/src/omptarget.cpp @@ -72,6 +72,11 @@ ii = HostEntriesBeginToTransTable.begin(); ii != HostEntriesBeginToTransTable.end(); ++ii) { TranslationTable *TransTable = &ii->second; + if (TransTable->HostTable.EntriesBegin == + TransTable->HostTable.EntriesEnd) { + // No host entry so no need to proceed + continue; + } if (TransTable->TargetsTable[device_id] != 0) { // Library entries have already been processed continue; Index: openmp/libomptarget/src/rtl.cpp =================================================================== --- openmp/libomptarget/src/rtl.cpp +++ openmp/libomptarget/src/rtl.cpp @@ -234,8 +234,6 @@ // Attempt to load all plugins available in the system. std::call_once(initFlag, &RTLsTy::LoadRTLs, this); - if (desc->HostEntriesBegin == desc->HostEntriesEnd) - return; RTLsMtx.lock(); // Register the images with the RTLs that understand them, if any. for (int32_t i = 0; i < desc->NumDeviceImages; ++i) { @@ -322,8 +320,6 @@ void RTLsTy::UnregisterLib(__tgt_bin_desc *desc) { DP("Unloading target library!\n"); - if (desc->HostEntriesBegin == desc->HostEntriesEnd) - return; RTLsMtx.lock(); // Find which RTL understands each image, if any. for (int32_t i = 0; i < desc->NumDeviceImages; ++i) { Index: openmp/libomptarget/test/api/omp_get_num_devices.c =================================================================== --- openmp/libomptarget/test/api/omp_get_num_devices.c +++ openmp/libomptarget/test/api/omp_get_num_devices.c @@ -12,9 +12,6 @@ int num_devices = omp_get_num_devices(); printf("num_devices = %d\n", num_devices); - #pragma omp target - {} - return (num_devices > 0); }