diff options
author | Georgios Pinitas <georgios.pinitas@arm.com> | 2020-10-21 18:33:36 +0100 |
---|---|---|
committer | Georgios Pinitas <georgios.pinitas@arm.com> | 2020-12-15 18:07:31 +0000 |
commit | 4d9687e70e2d71097cd43929d5f63377c3c44523 (patch) | |
tree | 09b5b89fd51d7b44613f21b889669939bc2c6bb3 /src/graph/backends | |
parent | aa51a5ba9a3f05be08b94859b53c398edee5d2e3 (diff) | |
download | ComputeLibrary-4d9687e70e2d71097cd43929d5f63377c3c44523.tar.gz |
Address RVO issue on some compilers
Suppresses pessimizing-move during clang compilation as for some gcc
toolchains RVO is not ensured until C++17 thus an explicit call to
std::move might be required to avoid compilation error for non-copyable
ojects (e.g. std::unique_ptr)
Resolves: COMPMID-3599
Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com>
Change-Id: Ie3fa44fb0cf631655aecbeb6c82021a68f500a33
Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/4230
Reviewed-by: Giorgio Arena <giorgio.arena@arm.com>
Reviewed-by: Michalis Spyrou <michalis.spyrou@arm.com>
Comments-Addressed: Arm Jenkins <bsgcomp@arm.com>
Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'src/graph/backends')
-rw-r--r-- | src/graph/backends/CL/CLFunctionsFactory.cpp | 4 | ||||
-rw-r--r-- | src/graph/backends/GLES/GCFunctionsFactory.cpp | 6 | ||||
-rw-r--r-- | src/graph/backends/NEON/NEFunctionFactory.cpp | 3 |
3 files changed, 6 insertions, 7 deletions
diff --git a/src/graph/backends/CL/CLFunctionsFactory.cpp b/src/graph/backends/CL/CLFunctionsFactory.cpp index 619641804b..5c98ce3b85 100644 --- a/src/graph/backends/CL/CLFunctionsFactory.cpp +++ b/src/graph/backends/CL/CLFunctionsFactory.cpp @@ -167,7 +167,7 @@ std::unique_ptr<IFunction> create_detection_output_layer<CPPDetectionOutputLayer wrap_function->register_tensor(input2); wrap_function->register_tensor(output); - return RETURN_UNIQUE_PTR(wrap_function); + return std::move(wrap_function); } template <> std::unique_ptr<IFunction> create_detection_post_process_layer<CPPDetectionPostProcessLayer, CLTargetInfo>(DetectionPostProcessLayerNode &node) @@ -223,7 +223,7 @@ std::unique_ptr<IFunction> create_detection_post_process_layer<CPPDetectionPostP wrap_function->register_tensor(output2); wrap_function->register_tensor(output3); - return RETURN_UNIQUE_PTR(wrap_function); + return std::move(wrap_function); } } // namespace detail diff --git a/src/graph/backends/GLES/GCFunctionsFactory.cpp b/src/graph/backends/GLES/GCFunctionsFactory.cpp index 7d9d388ebe..ac14425ad4 100644 --- a/src/graph/backends/GLES/GCFunctionsFactory.cpp +++ b/src/graph/backends/GLES/GCFunctionsFactory.cpp @@ -120,7 +120,7 @@ std::unique_ptr<IFunction> create_convolution_layer<GCConvolutionLayerFunctions, << " Output shape: " << output->info()->tensor_shape() << (fused_act.enabled() ? " " + to_string(fused_act.activation()) : "") << std::endl); - return func; + return std::move(func); } template <> @@ -172,7 +172,7 @@ std::unique_ptr<IFunction> create_depthwise_convolution_layer<GCDepthwiseConvolu << " Depth multiplier: " << depth_multiplier << (fused_act.enabled() ? " " + to_string(fused_act.activation()) : "") << std::endl); - return func; + return std::move(func); } template <> @@ -226,7 +226,7 @@ std::unique_ptr<IFunction> create_eltwise_layer<GCEltwiseFunctions, GCTargetInfo << " Shape: " << input1->info()->tensor_shape() << std::endl); - return func; + return std::move(func); } } //namespace detail diff --git a/src/graph/backends/NEON/NEFunctionFactory.cpp b/src/graph/backends/NEON/NEFunctionFactory.cpp index b2bd87070c..6a96f0a5b9 100644 --- a/src/graph/backends/NEON/NEFunctionFactory.cpp +++ b/src/graph/backends/NEON/NEFunctionFactory.cpp @@ -32,7 +32,6 @@ #include "arm_compute/graph/nodes/Nodes.h" #include "arm_compute/runtime/CPP/CPPFunctions.h" #include "arm_compute/runtime/NEON/NEFunctions.h" -#include "src/core/NEON/NEKernels.h" #include "support/Cast.h" #include "support/ToolchainSupport.h" @@ -116,7 +115,7 @@ std::unique_ptr<IFunction> create_normalization_layer<NENormalizationLayer, NETa << " Normalization info: " << norm_info.type() << std::endl); - return RETURN_UNIQUE_PTR(func); + return std::move(func); } } // namespace detail |