From db48288f54ad441f34108cf270ed3089d3a465ea Mon Sep 17 00:00:00 2001 From: Mike Kelly Date: Fri, 14 Jun 2019 12:35:24 +0100 Subject: 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 --- src/armnn/test/CreateWorkload.hpp | 4 +- src/backends/cl/test/ClCreateWorkloadTests.cpp | 64 ++++++++++------------ src/backends/neon/test/NeonCreateWorkloadTests.cpp | 10 ++-- .../reference/test/RefCreateWorkloadTests.cpp | 19 +++---- 4 files changed, 45 insertions(+), 52 deletions(-) diff --git a/src/armnn/test/CreateWorkload.hpp b/src/armnn/test/CreateWorkload.hpp index c4b191a29f..8863fecce3 100644 --- a/src/armnn/test/CreateWorkload.hpp +++ b/src/armnn/test/CreateWorkload.hpp @@ -1119,7 +1119,7 @@ std::unique_ptr CreateConcatWorkloadTest(armnn::IWorkloadFactory auto workloadConcat = MakeAndCheckWorkload(*concat, graph, factory); BOOST_TEST_CHECKPOINT("created concat workload"); - return std::move(workloadConcat); + return workloadConcat; } template @@ -1277,7 +1277,7 @@ std::unique_ptr CreateConstantWorkloadTest(armnn::IWorkloadFac auto workloadConstant = MakeAndCheckWorkload(*constant, graph, factory); BOOST_TEST_CHECKPOINT("created Constant workload"); - return std::move(workloadConstant); + return workloadConstant; } } diff --git a/src/backends/cl/test/ClCreateWorkloadTests.cpp b/src/backends/cl/test/ClCreateWorkloadTests.cpp index dc884e01b1..d401701dda 100644 --- a/src/backends/cl/test/ClCreateWorkloadTests.cpp +++ b/src/backends/cl/test/ClCreateWorkloadTests.cpp @@ -243,17 +243,17 @@ static void ClConvolution2dWorkloadTest(DataLayout dataLayout) graph, dataLayout); - std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) ? - std::initializer_list({2, 3, 8, 16}) : std::initializer_list({2, 8, 16, 3}); - std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) ? - std::initializer_list({2, 2, 2, 10}) : std::initializer_list({2, 2, 10, 2}); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({2, 3, 8, 16}) + : std::initializer_list({2, 8, 16, 3}); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({2, 2, 2, 10}) + : std::initializer_list({2, 2, 10, 2}); // Checks that outputs and inputs are as we expect them (see definition of CreateConvolution2dWorkloadTest). Convolution2dQueueDescriptor queueDescriptor = workload->GetData(); auto inputHandle = boost::polymorphic_downcast(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast(queueDescriptor.m_Outputs[0]); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, inputShape)); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, outputShape)); + BOOST_TEST((inputHandle->GetShape() == inputShape)); + BOOST_TEST((outputHandle->GetShape() == outputShape)); } BOOST_AUTO_TEST_CASE(CreateConvolution2dFloatNchwWorkload) @@ -291,15 +291,13 @@ static void ClDepthwiseConvolutionWorkloadTest(DataLayout dataLayout) auto inputHandle = boost::polymorphic_downcast(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast(queueDescriptor.m_Outputs[0]); - std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) - ? std::initializer_list({ 2, 2, 5, 5 }) - : std::initializer_list({ 2, 5, 5, 2 }); - std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) - ? std::initializer_list({ 2, 2, 5, 5 }) - : std::initializer_list({ 2, 5, 5, 2 }); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({ 2, 2, 5, 5 }) + : std::initializer_list({ 2, 5, 5, 2 }); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({ 2, 2, 5, 5 }) + : std::initializer_list({ 2, 5, 5, 2 }); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, inputShape)); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, outputShape)); + BOOST_TEST((inputHandle->GetShape() == inputShape)); + BOOST_TEST((outputHandle->GetShape() == outputShape)); } BOOST_AUTO_TEST_CASE(CreateDepthwiseConvolutionFloat32NhwcWorkload) @@ -382,13 +380,13 @@ static void ClNormalizationWorkloadTest(DataLayout dataLayout) auto inputHandle = boost::polymorphic_downcast(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast(queueDescriptor.m_Outputs[0]); - std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) ? - std::initializer_list({3, 5, 5, 1}) : std::initializer_list({3, 1, 5, 5}); - std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) ? - std::initializer_list({3, 5, 5, 1}) : std::initializer_list({3, 1, 5, 5}); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({3, 5, 5, 1}) + : std::initializer_list({3, 1, 5, 5}); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({3, 5, 5, 1}) + : std::initializer_list({3, 1, 5, 5}); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, inputShape)); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, outputShape)); + BOOST_TEST((inputHandle->GetShape() == inputShape)); + BOOST_TEST((outputHandle->GetShape() == outputShape)); } BOOST_AUTO_TEST_CASE(CreateNormalizationFloat32NchwWorkload) @@ -420,18 +418,18 @@ static void ClPooling2dWorkloadTest(DataLayout dataLayout) auto workload = CreatePooling2dWorkloadTest(factory, graph, dataLayout); - std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) ? - std::initializer_list({3, 2, 5, 5}) : std::initializer_list({3, 5, 5, 2}); - std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) ? - std::initializer_list({3, 2, 2, 4}) : std::initializer_list({3, 2, 4, 2}); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({3, 2, 5, 5}) + : std::initializer_list({3, 5, 5, 2}); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({3, 2, 2, 4}) + : std::initializer_list({3, 2, 4, 2}); // Check that inputs/outputs are as we expect them (see definition of CreatePooling2dWorkloadTest). Pooling2dQueueDescriptor queueDescriptor = workload->GetData(); auto inputHandle = boost::polymorphic_downcast(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast(queueDescriptor.m_Outputs[0]); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, inputShape)); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, outputShape)); + BOOST_TEST((inputHandle->GetShape() == inputShape)); + BOOST_TEST((outputHandle->GetShape() == outputShape)); } BOOST_AUTO_TEST_CASE(CreatePooling2dFloatNchwWorkload) @@ -668,15 +666,13 @@ static void ClL2NormalizationWorkloadTest(DataLayout dataLayout) auto inputHandle = boost::polymorphic_downcast(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast(queueDescriptor.m_Outputs[0]); - std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) - ? std::initializer_list({ 5, 20, 50, 67 }) - : std::initializer_list({ 5, 50, 67, 20 }); - std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) - ? std::initializer_list({ 5, 20, 50, 67 }) - : std::initializer_list({ 5, 50, 67, 20 }); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({ 5, 20, 50, 67 }) + : std::initializer_list({ 5, 50, 67, 20 }); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({ 5, 20, 50, 67 }) + : std::initializer_list({ 5, 50, 67, 20 }); - BOOST_TEST(CompareIClTensorHandleShape(inputHandle, inputShape)); - BOOST_TEST(CompareIClTensorHandleShape(outputHandle, outputShape)); + BOOST_TEST((inputHandle->GetShape() == inputShape)); + BOOST_TEST((outputHandle->GetShape() == outputShape)); } BOOST_AUTO_TEST_CASE(CreateL2NormalizationFloatNchwWorkload) diff --git a/src/backends/neon/test/NeonCreateWorkloadTests.cpp b/src/backends/neon/test/NeonCreateWorkloadTests.cpp index 83823659b0..523588c50a 100644 --- a/src/backends/neon/test/NeonCreateWorkloadTests.cpp +++ b/src/backends/neon/test/NeonCreateWorkloadTests.cpp @@ -275,12 +275,10 @@ static void NeonCreateDepthWiseConvolutionWorkloadTest(DataLayout dataLayout) auto inputHandle = boost::polymorphic_downcast(queueDescriptor.m_Inputs[0]); auto outputHandle = boost::polymorphic_downcast(queueDescriptor.m_Outputs[0]); - std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) - ? std::initializer_list({ 2, 2, 5, 5 }) - : std::initializer_list({ 2, 5, 5, 2 }); - std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) - ? std::initializer_list({ 2, 2, 5, 5 }) - : std::initializer_list({ 2, 5, 5, 2 }); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({ 2, 2, 5, 5 }) + : std::initializer_list({ 2, 5, 5, 2 }); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({ 2, 2, 5, 5 }) + : std::initializer_list({ 2, 5, 5, 2 }); BOOST_TEST(TestNeonTensorHandleInfo(inputHandle, TensorInfo(inputShape, DataType))); BOOST_TEST(TestNeonTensorHandleInfo(outputHandle, TensorInfo(outputShape, DataType))); diff --git a/src/backends/reference/test/RefCreateWorkloadTests.cpp b/src/backends/reference/test/RefCreateWorkloadTests.cpp index a0fc7286a9..ef8ff9e6a0 100644 --- a/src/backends/reference/test/RefCreateWorkloadTests.cpp +++ b/src/backends/reference/test/RefCreateWorkloadTests.cpp @@ -270,10 +270,10 @@ static void RefCreateConvolution2dWorkloadTest(DataLayout dataLayout = DataLayou auto workload = CreateConvolution2dWorkloadTest (factory, graph, dataLayout); - std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) ? - std::initializer_list({2, 3, 8, 16}) : std::initializer_list({2, 8, 16, 3}); - std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) ? - std::initializer_list({2, 2, 2, 10}) : std::initializer_list({2, 2, 10, 2}); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({2, 3, 8, 16}) + : std::initializer_list({2, 8, 16, 3}); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({2, 2, 2, 10}) + : std::initializer_list({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 @@ static void RefCreateDepthwiseConvolutionWorkloadTest(DataLayout dataLayout) auto workload = CreateDepthwiseConvolution2dWorkloadTest (factory, graph, dataLayout); - std::initializer_list inputShape = (dataLayout == DataLayout::NCHW) - ? std::initializer_list({ 2, 2, 5, 5 }) - : std::initializer_list({ 2, 5, 5, 2 }); - std::initializer_list outputShape = (dataLayout == DataLayout::NCHW) - ? std::initializer_list({ 2, 2, 5, 5 }) - : std::initializer_list({ 2, 5, 5, 2 }); + TensorShape inputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({ 2, 2, 5, 5 }) + : std::initializer_list({ 2, 5, 5, 2 }); + TensorShape outputShape = (dataLayout == DataLayout::NCHW) ? std::initializer_list({ 2, 2, 5, 5 }) + : std::initializer_list({ 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), -- cgit v1.2.1