diff --git a/offload/include/OffloadPolicy.h b/offload/include/OffloadPolicy.h index 858d9c323b15a..800fefb224326 100644 --- a/offload/include/OffloadPolicy.h +++ b/offload/include/OffloadPolicy.h @@ -46,10 +46,15 @@ class OffloadPolicy { Kind = DISABLED; } return; - }; + } } public: + static bool isOffloadDisabled() { + return static_cast( + __kmpc_get_target_offload()) == tgt_disabled; + } + static const OffloadPolicy &get(PluginManager &PM) { static OffloadPolicy OP(PM); return OP; diff --git a/offload/libomptarget/PluginManager.cpp b/offload/libomptarget/PluginManager.cpp index 8b77852d13439..d6d529a207587 100644 --- a/offload/libomptarget/PluginManager.cpp +++ b/offload/libomptarget/PluginManager.cpp @@ -11,6 +11,7 @@ //===----------------------------------------------------------------------===// #include "PluginManager.h" +#include "OffloadPolicy.h" #include "Shared/Debug.h" #include "Shared/Profile.h" #include "device.h" @@ -30,6 +31,11 @@ PluginManager *PM = nullptr; void PluginManager::init() { TIMESCOPE(); + if (OffloadPolicy::isOffloadDisabled()) { + DP("Offload is disabled. Skipping plugin initialization\n"); + return; + } + DP("Loading RTLs...\n"); // Attempt to create an instance of each supported plugin.