Fix segfault in IsLayerSupportedTests

DummyLayer<> was not implemented for QLstmLayer, so the default
implementation was getting called. This caused null weights
to be dereferenced in WorkloadFactory during IsLayerSupportedTests.
While this would often not cause a crash, it could be reliably
detected by running the UnitTests with Undefined Behavior Sanitizer.

Change-Id: I7a49b18b8292632436b0aae52d6607e28fdd1839
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp
index 61ad209..dc70e6a 100644
--- a/src/backends/backendsCommon/WorkloadFactory.cpp
+++ b/src/backends/backendsCommon/WorkloadFactory.cpp
@@ -834,6 +834,9 @@
             LstmInputParamsInfo paramsInfo;
 
             // Basic parameters
+            ARMNN_ASSERT(cLayer->m_BasicParameters.m_InputToForgetWeights.get() != nullptr);
+            ARMNN_ASSERT(cLayer->m_BasicParameters.m_InputToCellWeights.get() != nullptr);
+            ARMNN_ASSERT(cLayer->m_BasicParameters.m_InputToOutputWeights.get() != nullptr);
             paramsInfo.m_InputToForgetWeights = &cLayer->m_BasicParameters.m_InputToForgetWeights->GetTensorInfo();
             paramsInfo.m_InputToCellWeights   = &cLayer->m_BasicParameters.m_InputToCellWeights->GetTensorInfo();
             paramsInfo.m_InputToOutputWeights = &cLayer->m_BasicParameters.m_InputToOutputWeights->GetTensorInfo();
diff --git a/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp b/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp
index adc7bc4..ddd6eac 100644
--- a/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp
+++ b/src/backends/backendsCommon/test/IsLayerSupportedTestImpl.hpp
@@ -300,7 +300,7 @@
         typename LstmLayerType::DescriptorType desc;
         desc.m_CifgEnabled = false;
 
-        m_Layer = dummyGraph.AddLayer<LstmLayerType>(armnn::LstmDescriptor(), "");
+        m_Layer = dummyGraph.AddLayer<LstmLayerType>(desc, "");
         m_Layer->m_BasicParameters.m_InputToForgetWeights     = std::make_unique<armnn::ScopedTensorHandle>(
                 armnn::TensorInfo(armnn::TensorShape({1,1,1,1}), armnn::DataType::Float32));
         m_Layer->m_BasicParameters.m_InputToCellWeights       = std::make_unique<armnn::ScopedTensorHandle>(
@@ -342,18 +342,18 @@
 {
 };
 
-template <typename QLstmLayerType>
-struct DummyQLstmLayer
+template<>
+struct DummyLayer<armnn::QLstmLayer>
 {
-    DummyQLstmLayer()
+    DummyLayer()
     {
-        typename QLstmLayerType::DescriptorType desc;
+        armnn::QLstmLayer::DescriptorType desc;
         desc.m_CifgEnabled = false;
         desc.m_PeepholeEnabled = true;
         desc.m_ProjectionEnabled = true;
         desc.m_LayerNormEnabled = true;
 
-        m_Layer = dummyGraph.AddLayer<QLstmLayerType>(armnn::QLstmDescriptor(), "qLstm");
+        m_Layer = dummyGraph.AddLayer<armnn::QLstmLayer>(desc, "qLstm");
 
         // Basic params
         m_Layer->m_BasicParameters.m_InputToForgetWeights     = std::make_unique<armnn::ScopedTensorHandle>(
@@ -410,7 +410,7 @@
                 armnn::TensorInfo(armnn::TensorShape({1,1,1,1}), armnn::DataType::QSymmS16));
     }
 
-    ~DummyQLstmLayer()
+    ~DummyLayer()
     {
         dummyGraph.EraseLayer(m_Layer);
     }