MLCE-121 Github: Build error on GCC 9

 * Fixed an error encountered when building on GCC 9
   error: moving a local object in a return statement prevents copy elision
 * Fixed failures in unit tests due to std::initializer_list handling in GCC 9

Change-Id: I4bfdd2113dfedcecd29479ee556e4ae22278755d
Signed-off-by: Mike Kelly <mike.kelly@arm.com>
diff --git a/src/backends/reference/test/RefCreateWorkloadTests.cpp b/src/backends/reference/test/RefCreateWorkloadTests.cpp
index a0fc728..ef8ff9e 100644
--- a/src/backends/reference/test/RefCreateWorkloadTests.cpp
+++ b/src/backends/reference/test/RefCreateWorkloadTests.cpp
@@ -270,10 +270,10 @@
     auto workload = CreateConvolution2dWorkloadTest<RefConvolution2dWorkload, DataType::Float32>
                     (factory, graph, dataLayout);
 
-    std::initializer_list<unsigned int> inputShape  = (dataLayout == DataLayout::NCHW) ?
-        std::initializer_list<unsigned int>({2, 3, 8, 16}) : std::initializer_list<unsigned int>({2, 8, 16, 3});
-    std::initializer_list<unsigned int> outputShape = (dataLayout == DataLayout::NCHW) ?
-        std::initializer_list<unsigned int>({2, 2, 2, 10}) : std::initializer_list<unsigned int>({2, 2, 10, 2});
+    TensorShape inputShape  = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({2, 3, 8, 16})
+                                                               : std::initializer_list<unsigned int>({2, 8, 16, 3});
+    TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({2, 2, 2, 10})
+                                                               : std::initializer_list<unsigned int>({2, 2, 10, 2});
 
     // Checks that outputs and inputs are as we expect them (see definition of CreateConvolution2dWorkloadTest).
     CheckInputOutput(std::move(workload),
@@ -298,12 +298,11 @@
     auto workload = CreateDepthwiseConvolution2dWorkloadTest<RefDepthwiseConvolution2dWorkload, DataType::Float32>
             (factory, graph, dataLayout);
 
-    std::initializer_list<unsigned int> inputShape  = (dataLayout == DataLayout::NCHW)
-                                                      ? std::initializer_list<unsigned int>({ 2, 2, 5, 5 })
-                                                      : std::initializer_list<unsigned int>({ 2, 5, 5, 2 });
-    std::initializer_list<unsigned int> outputShape = (dataLayout == DataLayout::NCHW)
-                                                      ? std::initializer_list<unsigned int>({ 2, 2, 5, 5 })
-                                                      : std::initializer_list<unsigned int>({ 2, 5, 5, 2 });
+    TensorShape inputShape  = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({ 2, 2, 5, 5 })
+                                                               : std::initializer_list<unsigned int>({ 2, 5, 5, 2 });
+    TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list<unsigned int>({ 2, 2, 5, 5 })
+                                                               : std::initializer_list<unsigned int>({ 2, 5, 5, 2 });
+
     // Checks that inputs/outputs are as we expect them (see definition of CreateDepthwiseConvolution2dWorkloadTest).
     CheckInputOutput(std::move(workload),
                      TensorInfo(inputShape, DataType::Float32),