IVGCVSW-4449 Add missing QLstm nullptr checks

* Adds missing nullptr checks for peephole bias for
  QLstm.

Signed-off-by: James Conroy <james.conroy@arm.com>
Change-Id: Ib04c8352141977cc7ea11a4859f1b11d46472722
diff --git a/src/armnn/Network.cpp b/src/armnn/Network.cpp
index c2bf27a..a047297 100644
--- a/src/armnn/Network.cpp
+++ b/src/armnn/Network.cpp
@@ -1874,15 +1874,16 @@
             throw InvalidArgumentException("AddQLstmLayer: Projection Weights cannot be NULL");
         }
 
-        if(params.m_ProjectionBias == nullptr)
-        {
-            throw InvalidArgumentException("AddQLstmLayer: Projection Biases cannot be NULL");
-        }
-
         layer->m_ProjectionParameters.m_ProjectionWeights =
                 std::make_unique<ScopedCpuTensorHandle>(*(params.m_ProjectionWeights));
-        layer->m_ProjectionParameters.m_ProjectionBias =
-                std::make_unique<ScopedCpuTensorHandle>(*(params.m_ProjectionBias));
+
+        // Projection bias is optional even if projection is enabled
+        if(params.m_ProjectionWeights != nullptr)
+        {
+            layer->m_ProjectionParameters.m_ProjectionBias =
+                    std::make_unique<ScopedCpuTensorHandle>(*(params.m_ProjectionBias));
+        }
+
     }
 
     // QLstm Peephole params
diff --git a/src/armnn/layers/QLstmLayer.cpp b/src/armnn/layers/QLstmLayer.cpp
index 9b940c1..7e61548 100644
--- a/src/armnn/layers/QLstmLayer.cpp
+++ b/src/armnn/layers/QLstmLayer.cpp
@@ -232,8 +232,6 @@
     {
         ARMNN_ASSERT_MSG(m_ProjectionParameters.m_ProjectionWeights != nullptr,
                          "QLstmLayer: m_ProjectionParameters.m_ProjectionWeights should not be null.");
-        ARMNN_ASSERT_MSG(m_ProjectionParameters.m_ProjectionBias != nullptr,
-                         "QLstmLayer: m_ProjectionParameters.m_ProjectionBias should not be null.");
     }
 
     if (m_Param.m_PeepholeEnabled)
diff --git a/src/backends/backendsCommon/WorkloadFactory.cpp b/src/backends/backendsCommon/WorkloadFactory.cpp
index c55c70a..34bfd7c 100644
--- a/src/backends/backendsCommon/WorkloadFactory.cpp
+++ b/src/backends/backendsCommon/WorkloadFactory.cpp
@@ -795,7 +795,12 @@
             if(descriptor.m_ProjectionEnabled)
             {
                 paramsInfo.m_ProjectionWeights = &cLayer->m_ProjectionParameters.m_ProjectionWeights->GetTensorInfo();
-                paramsInfo.m_ProjectionBias = &cLayer->m_ProjectionParameters.m_ProjectionBias->GetTensorInfo();
+
+                // Projection bias is optional even if projection is enabled
+                if (cLayer->m_ProjectionParameters.m_ProjectionBias != nullptr)
+                {
+                    paramsInfo.m_ProjectionBias = &cLayer->m_ProjectionParameters.m_ProjectionBias->GetTensorInfo();
+                }
             }
 
             if(descriptor.m_PeepholeEnabled)