COMPMID-1246: Fix bug in handling backends that can't be loaded in the Graph API

Change-Id: Iefd175af2f472179d86df5358a1527a79c5666ed
Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/145182
Reviewed-by: Georgios Pinitas <georgios.pinitas@arm.com>
Tested-by: Jenkins <bsgcomp@arm.com>
diff --git a/src/graph/Utils.cpp b/src/graph/Utils.cpp
index 75644a8..0a85a7f 100644
--- a/src/graph/Utils.cpp
+++ b/src/graph/Utils.cpp
@@ -101,7 +101,10 @@
 {
     for(const auto &backend : backends::BackendRegistry::get().backends())
     {
-        backend.second->release_backend_context(ctx);
+        if(backend.second->is_backend_supported())
+        {
+            backend.second->release_backend_context(ctx);
+        }
     }
 }
 
@@ -109,7 +112,10 @@
 {
     for(const auto &backend : backends::BackendRegistry::get().backends())
     {
-        backend.second->setup_backend_context(ctx);
+        if(backend.second->is_backend_supported())
+        {
+            backend.second->setup_backend_context(ctx);
+        }
     }
 }
 
@@ -172,11 +178,10 @@
 {
     if(tensor != nullptr && tensor->handle() == nullptr)
     {
-        Target target  = tensor->desc().target;
-        auto   backend = backends::BackendRegistry::get().find_backend(target);
-        ARM_COMPUTE_ERROR_ON_MSG(!backend, "Requested backend doesn't exist!");
-        auto handle = backend->create_tensor(*tensor);
-        ARM_COMPUTE_ERROR_ON_MSG(!backend, "Couldn't create backend handle!");
+        Target                         target  = tensor->desc().target;
+        backends::IDeviceBackend      &backend = backends::BackendRegistry::get().get_backend(target);
+        std::unique_ptr<ITensorHandle> handle  = backend.create_tensor(*tensor);
+        ARM_COMPUTE_ERROR_ON_MSG(!handle, "Couldn't create backend handle!");
         tensor->set_handle(std::move(handle));
     }
 }