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;
// 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) {
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) {
--- /dev/null
+// RUN: %libomptarget-compile-run-and-check-aarch64-unknown-linux-gnu
+// RUN: %libomptarget-compile-run-and-check-powerpc64-ibm-linux-gnu
+// RUN: %libomptarget-compile-run-and-check-powerpc64le-ibm-linux-gnu
+// RUN: %libomptarget-compile-run-and-check-x86_64-pc-linux-gnu
+
+#include <omp.h>
+#include <stdio.h>
+
+static int test_omp_get_num_devices_with_empty_target() {
+ /* checks that omp_get_num_devices() > 0 */
+ return omp_get_num_devices() > 0;
+}
+
+int main() {
+ int failed = 0;
+
+ if (!test_omp_get_num_devices_with_empty_target()) {
+ ++failed;
+ }
+
+ if (failed) {
+ printf("FAIL\n");
+ } else {
+ printf("PASS\n");
+ }
+
+ return failed;
+}
+
+// CHECK: PASS