summaryrefslogtreecommitdiffstats
path: root/src/corelib/global/qnumeric.h
diff options
context:
space:
mode:
authorMarc Mutz <marc.mutz@qt.io>2022-09-08 16:46:13 +0200
committerMarc Mutz <marc.mutz@qt.io>2022-09-12 12:37:42 +0200
commit4b5b87c27b803c5bf0fed96c381c5e343b28d419 (patch)
tree8682e5b16666a716e59d8352824b9e9ddac2f412 /src/corelib/global/qnumeric.h
parent542f837fa2bc5d6009e966c7fa9d7909cef22d2d (diff)
Specialize qMulOverflow<2>(n) as qAddOverflow(n, n)
Addition is always more efficient than multiplication. Pick-to: 6.4 Task-number: QTBUG-104972 Change-Id: Ib945e7df88562a2f4aea00aa319ff837191b8df2 Reviewed-by: Thiago Macieira <thiago.macieira@intel.com> Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
Diffstat (limited to 'src/corelib/global/qnumeric.h')
-rw-r--r--src/corelib/global/qnumeric.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/src/corelib/global/qnumeric.h b/src/corelib/global/qnumeric.h
index 9ecbbc712a..7779c03515 100644
--- a/src/corelib/global/qnumeric.h
+++ b/src/corelib/global/qnumeric.h
@@ -317,6 +317,8 @@ template <typename T, T V2> bool qMulOverflow(T v1, std::integral_constant<T, V2
template <auto V2, typename T> bool qMulOverflow(T v1, T *r)
{
+ if constexpr (V2 == 2)
+ return qAddOverflow(v1, v1, r);
return qMulOverflow(v1, std::integral_constant<T, V2>{}, r);
}