Handle optional biases better in Neon/Cl FullyConnected workloads

Use armnn::Optional for optional bias TensorInfos, similar to how
it's already done in Convolution etc.

Fixes some test failures found using -fsanitize=undefined

Change-Id: I7b887e63e2ffab14aeab14415069be738d938ebb
Signed-off-by: Matthew Bentham <matthew.bentham@arm.com>
diff --git a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
index 39a5696..26c68b7 100644
--- a/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
+++ b/src/backends/neon/workloads/NeonFullyConnectedWorkload.cpp
@@ -24,7 +24,7 @@
 arm_compute::Status NeonFullyConnectedWorkloadValidate(const TensorInfo& input,
                                                        const TensorInfo& output,
                                                        const TensorInfo& weights,
-                                                       const TensorInfo& biases,
+                                                       const Optional<TensorInfo>& biases,
                                                        const FullyConnectedDescriptor& descriptor,
                                                        const ActivationDescriptor* activationDescriptor)
 {
@@ -36,7 +36,8 @@
     arm_compute::TensorInfo* optionalAclBiases = nullptr;
     if (descriptor.m_BiasEnabled)
     {
-        aclBiases = BuildArmComputeTensorInfo(biases);
+        ARMNN_ASSERT(biases.has_value());
+        aclBiases = BuildArmComputeTensorInfo(biases.value());
         optionalAclBiases = &aclBiases;
     }