aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--SConstruct2
-rw-r--r--arm_compute/core/TensorShape.h13
2 files changed, 14 insertions, 1 deletions
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<const Dimensions &>(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 */