summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qtmetamacros.h
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@qt.io>2020-04-16 10:02:58 +0200
committerSimon Hausmann <simon.hausmann@qt.io>2020-04-30 19:39:32 +0200
commit818de32db28375dbe5d8bd93121fe751720911f2 (patch)
tree8d974a544b16a6d62c769c21850372f5ca249806 /src/corelib/kernel/qtmetamacros.h
parent3d7265db9075db7b22b241b659f23d392d62d804 (diff)
Attempt to squeeze unionized fake qproperty members even further
... by using the [[no_unique_address]] attribute, if available, instead of the union. Change-Id: Iab4db7039f1140a0005c7dd2fb6e08597ceec8f5 Reviewed-by: Fabian Kosmale <fabian.kosmale@qt.io> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
Diffstat (limited to 'src/corelib/kernel/qtmetamacros.h')
-rw-r--r--src/corelib/kernel/qtmetamacros.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/corelib/kernel/qtmetamacros.h b/src/corelib/kernel/qtmetamacros.h
index fb89722847..432fd8a49b 100644
--- a/src/corelib/kernel/qtmetamacros.h
+++ b/src/corelib/kernel/qtmetamacros.h
@@ -115,10 +115,17 @@ QT_BEGIN_NAMESPACE
QPropertyBinding<type> takeBinding(); \
}; \
void setter(const type &value);
+#if __has_cpp_attribute(no_unique_address)
+#define Q_PRIVATE_QPROPERTIES_BEGIN
+#define QT_PRIVATE_QPROPERTY_PREFIX [[no_unique_address]]
+#define Q_PRIVATE_QPROPERTIES_END
+#else
#define Q_PRIVATE_QPROPERTIES_BEGIN union {
-#define Q_PRIVATE_QPROPERTY_IMPL(name) \
- _qt_property_api_##name name;
+#define QT_PRIVATE_QPROPERTY_PREFIX
#define Q_PRIVATE_QPROPERTIES_END };
+#endif
+#define Q_PRIVATE_QPROPERTY_IMPL(name) \
+ QT_PRIVATE_QPROPERTY_PREFIX _qt_property_api_##name name;
#ifndef Q_REVISION
# define Q_REVISION(...)
#endif