77namespace std {
88namespace __lldb {
99
10+ #if __has_cpp_attribute(msvc::no_unique_address)
11+ #define _LLDB_NO_UNIQUE_ADDRESS [[msvc::no_unique_address]]
12+ #elif __has_cpp_attribute(no_unique_address)
13+ #define _LLDB_NO_UNIQUE_ADDRESS [[__no_unique_address__]]
14+ #endif
15+
1016#if COMPRESSED_PAIR_REV == 0 // Post-c88580c layout
1117struct __value_init_tag {};
1218struct __default_init_tag {};
@@ -55,7 +61,7 @@ class __compressed_pair : private __compressed_pair_elem<_T1, 0>,
5561#elif COMPRESSED_PAIR_REV == 1
5662// From libc++ datasizeof.h
5763template <class _Tp > struct _FirstPaddingByte {
58- [[no_unique_address]] _Tp __v_;
64+ _LLDB_NO_UNIQUE_ADDRESS _Tp __v_;
5965 char __first_padding_byte_;
6066};
6167
@@ -75,29 +81,30 @@ template <class _ToPad> class __compressed_pair_padding {
7581};
7682
7783#define _LLDB_COMPRESSED_PAIR (T1, Initializer1, T2, Initializer2 ) \
78- [[__gnu__::__aligned__(alignof (T2))]] [[no_unique_address]] T1 Initializer1; \
79- [[no_unique_address]] __compressed_pair_padding<T1> __padding1_; \
80- [[no_unique_address]] T2 Initializer2; \
81- [[no_unique_address]] __compressed_pair_padding<T2> __padding2_;
84+ [[__gnu__::__aligned__( \
85+ alignof (T2))]] _LLDB_NO_UNIQUE_ADDRESS T1 Initializer1; \
86+ _LLDB_NO_UNIQUE_ADDRESS __compressed_pair_padding<T1> __padding1_; \
87+ _LLDB_NO_UNIQUE_ADDRESS T2 Initializer2; \
88+ _LLDB_NO_UNIQUE_ADDRESS __compressed_pair_padding<T2> __padding2_;
8289
8390#define _LLDB_COMPRESSED_TRIPLE (T1, Initializer1, T2, Initializer2, T3, \
8491 Initializer3) \
8592 [[using __gnu__: __aligned__(alignof (T2)), \
86- __aligned__ (alignof (T3))]] [[no_unique_address]] T1 Initializer1; \
87- [[no_unique_address]] __compressed_pair_padding<T1> __padding1_; \
88- [[no_unique_address]] T2 Initializer2; \
89- [[no_unique_address]] __compressed_pair_padding<T2> __padding2_; \
90- [[no_unique_address]] T3 Initializer3; \
91- [[no_unique_address]] __compressed_pair_padding<T3> __padding3_;
93+ __aligned__ (alignof (T3))]] _LLDB_NO_UNIQUE_ADDRESS T1 Initializer1; \
94+ _LLDB_NO_UNIQUE_ADDRESS __compressed_pair_padding<T1> __padding1_; \
95+ _LLDB_NO_UNIQUE_ADDRESS T2 Initializer2; \
96+ _LLDB_NO_UNIQUE_ADDRESS __compressed_pair_padding<T2> __padding2_; \
97+ _LLDB_NO_UNIQUE_ADDRESS T3 Initializer3; \
98+ _LLDB_NO_UNIQUE_ADDRESS __compressed_pair_padding<T3> __padding3_;
9299#elif COMPRESSED_PAIR_REV == 2
93100#define _LLDB_COMPRESSED_PAIR (T1, Name1, T2, Name2 ) \
94- [[no_unique_address]] T1 Name1; \
95- [[no_unique_address]] T2 Name2
101+ _LLDB_NO_UNIQUE_ADDRESS T1 Name1; \
102+ _LLDB_NO_UNIQUE_ADDRESS T2 Name2
96103
97104#define _LLDB_COMPRESSED_TRIPLE (T1, Name1, T2, Name2, T3, Name3 ) \
98- [[no_unique_address]] T1 Name1; \
99- [[no_unique_address]] T2 Name2; \
100- [[no_unique_address]] T3 Name3
105+ _LLDB_NO_UNIQUE_ADDRESS T1 Name1; \
106+ _LLDB_NO_UNIQUE_ADDRESS T2 Name2; \
107+ _LLDB_NO_UNIQUE_ADDRESS T3 Name3
101108#endif
102109} // namespace __lldb
103110} // namespace std
0 commit comments