From e7254a09c54f09413ac3b23d4997089ebdbc4387 Mon Sep 17 00:00:00 2001 From: Giorgio Arena Date: Wed, 24 Feb 2021 12:46:35 +0000 Subject: Avoid -O3 optimizations on TensorShape's copy for linux armv7a in release mode Resolve COMPMID-4286 Signed-off-by: Giorgio Arena Change-Id: I2f658f1b366c6bccada9b81de1f310602c41a161 Reviewed-on: https://review.mlplatform.org/c/ml/ComputeLibrary/+/5176 Tested-by: Arm Jenkins Reviewed-by: Michele Di Giorgio Reviewed-by: Georgios Pinitas Comments-Addressed: Arm Jenkins --- SConstruct | 2 ++ arm_compute/core/TensorShape.h | 13 ++++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/SConstruct b/SConstruct index ad9a3aca1d..48b01c9a06 100644 --- a/SConstruct +++ b/SConstruct @@ -336,6 +336,8 @@ elif env['os'] == 'bare_metal': env.Append(CPPDEFINES = ['BARE_METAL']) if env['os'] == 'linux' and env['arch'] == 'armv7a': env.Append(CXXFLAGS = [ '-Wno-psabi' ]) + if not env['debug']: + env.Append(CPPDEFINES = ['LINUX_V7_RELEASE']) if env['specs_file'] != "": env.Append(LINKFLAGS = ['-specs='+env['specs_file']]) diff --git a/arm_compute/core/TensorShape.h b/arm_compute/core/TensorShape.h index 7c5ea8d1b7..9f6cf773e4 100644 --- a/arm_compute/core/TensorShape.h +++ b/arm_compute/core/TensorShape.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2016-2020 Arm Limited. + * Copyright (c) 2016-2021 Arm Limited. * * SPDX-License-Identifier: MIT * @@ -57,7 +57,18 @@ public: apply_dimension_correction(); } /** Allow instances of this class to be copy constructed */ + // Avoid -O3 aggressive optimization for the copy constructor when building in release mode for armv7a +#if defined(LINUX_V7_RELEASE) +#pragma GCC push_options +#pragma GCC optimize("O2") + TensorShape(const TensorShape &other) + : Dimensions(static_cast(other)) + { + } +#pragma GCC pop_options +#else // defined(LINUX_V7_RELEASE) TensorShape(const TensorShape &) = default; +#endif // defined(LINUX_V7_RELEASE) /** Allow instances of this class to be copied */ TensorShape &operator=(const TensorShape &) = default; /** Allow instances of this class to be move constructed */ -- cgit v1.2.1