Fix binding of reference to null pointer in RefFullyConnectedWorkload

As the bias decoder is optional, pass it as a pointer to the FullyConnected
function instead of by reference.

Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
Change-Id: I0bd2e601015e7fa1ae21b50f6c3dd7eac4176554
diff --git a/src/backends/reference/workloads/FullyConnected.cpp b/src/backends/reference/workloads/FullyConnected.cpp
index 9ec9ea6..47968f4 100644
--- a/src/backends/reference/workloads/FullyConnected.cpp
+++ b/src/backends/reference/workloads/FullyConnected.cpp
@@ -5,6 +5,8 @@
 
 #include "FullyConnected.hpp"
 
+#include <armnn/utility/Assert.hpp>
+
 #include "RefWorkloadUtils.hpp"
 
 namespace armnn
@@ -16,7 +18,7 @@
                     Encoder<float>& rOutputEncoder,
                     const TensorShape& rWeightsShape,
                     Decoder<float>& rWeightDecoder,
-                    Decoder<float>& rBiasDecoder,
+                    Decoder<float>* pBiasDecoder,
                     const bool biasEnabled,
                     const unsigned int K,
                     const bool transposeWeights)
@@ -28,7 +30,9 @@
     const std::vector<float> decodedWeights = rWeightDecoder.DecodeTensor(rWeightsShape);
 
     const TensorShape biasShape{outputSize};
-    const std::vector<float> decodedBiases = biasEnabled ? rBiasDecoder.DecodeTensor(biasShape) : std::vector<float>();
+
+    ARMNN_ASSERT(!biasEnabled || pBiasDecoder != nullptr);
+    const std::vector<float> decodedBiases = biasEnabled ? pBiasDecoder->DecodeTensor(biasShape) : std::vector<float>();
 
 
     for (unsigned int n = 0; n < rInputShape[0]; n++)
diff --git a/src/backends/reference/workloads/FullyConnected.hpp b/src/backends/reference/workloads/FullyConnected.hpp
index e330606..d7881f0 100644
--- a/src/backends/reference/workloads/FullyConnected.hpp
+++ b/src/backends/reference/workloads/FullyConnected.hpp
@@ -21,7 +21,7 @@
                     Encoder<float>& rOutputEncoder,
                     const TensorShape& rWeightsShape,
                     Decoder<float>& rWeightDecoder,
-                    Decoder<float>& rBiasDecoder,
+                    Decoder<float>* rBiasDecoder,
                     bool biasEnabled,
                     unsigned int K,
                     bool transposeWeights);
diff --git a/src/backends/reference/workloads/RefFullyConnectedWorkload.cpp b/src/backends/reference/workloads/RefFullyConnectedWorkload.cpp
index 3e63afa..99e3eab 100644
--- a/src/backends/reference/workloads/RefFullyConnectedWorkload.cpp
+++ b/src/backends/reference/workloads/RefFullyConnectedWorkload.cpp
@@ -102,7 +102,7 @@
                    *OutputEncoder,
                    m_WeightShape,
                    *m_WeightDecoder,
-                   *m_BiasDecoder,
+                   m_BiasDecoder.get(),
                    m_Data.m_Parameters.m_BiasEnabled,
                    m_NumActivations,
                    m_Data.m_Parameters.m_TransposeWeightMatrix);