@@ -100,8 +100,8 @@ SWIFT_ENUM(CASType, closed)
100100
101101// atomic integer generation
102102
103- #define CLANG_ATOMICS_STRUCT (swiftType , atomicType , alignment ) \
104- typedef struct { volatile atomicType a __attribute__ ((aligned(alignment))); } swiftType;
103+ #define CLANG_ATOMICS_STRUCT (swiftType , atomicType , atomName , alignment ) \
104+ typedef struct { volatile atomicType atomName __attribute__ ((aligned(alignment))); } swiftType;
105105
106106#define CLANG_ATOMICS_IS_LOCK_FREE (swiftType ) \
107107 static __inline__ __attribute__((__always_inline__)) \
@@ -168,7 +168,7 @@ SWIFT_ENUM(CASType, closed)
168168 }
169169
170170#define CLANG_ATOMICS_GENERATE (swiftType , atomicType , parameterType , alignment ) \
171- CLANG_ATOMICS_STRUCT(swiftType, atomicType, alignment) \
171+ CLANG_ATOMICS_STRUCT(swiftType, atomicType, a, alignment) \
172172 CLANG_ATOMICS_IS_LOCK_FREE(swiftType) \
173173 CLANG_ATOMICS_INITIALIZE(swiftType, parameterType) \
174174 CLANG_ATOMICS_CREATE(swiftType, parameterType) \
@@ -213,9 +213,9 @@ CLANG_ATOMICS_INT_GENERATE(AtomicUInt64, atomic_ullong, unsigned long long, _Ali
213213CLANG_ATOMICS_BOOL_GENERATE (AtomicBool , atomic_bool , _Bool , _Alignof(atomic_bool ))
214214
215215#ifdef __CACHE_LINE_WIDTH
216- CLANG_ATOMICS_INT_GENERATE (AtomicCacheLineAlignedInt , atomic_intptr_t , intptr_t , __CACHE_LINE_WIDTH )
217- CLANG_ATOMICS_INT_GENERATE (AtomicCacheLineAlignedUInt , atomic_uintptr_t , uintptr_t , __CACHE_LINE_WIDTH )
218- CLANG_ATOMICS_BOOL_GENERATE (AtomicCacheLineAlignedBool , atomic_bool , _Bool , __CACHE_LINE_WIDTH )
216+ CLANG_ATOMICS_INT_GENERATE (AtomicCacheAlignedInt , atomic_intptr_t , intptr_t , __CACHE_LINE_WIDTH )
217+ CLANG_ATOMICS_INT_GENERATE (AtomicCacheAlignedUInt , atomic_uintptr_t , uintptr_t , __CACHE_LINE_WIDTH )
218+ CLANG_ATOMICS_BOOL_GENERATE (AtomicCacheAlignedBool , atomic_bool , _Bool , __CACHE_LINE_WIDTH )
219219#endif
220220
221221// pointer atomics
@@ -273,7 +273,7 @@ CLANG_ATOMICS_BOOL_GENERATE(AtomicCacheLineAlignedBool, atomic_bool, _Bool, __CA
273273 }
274274
275275#define CLANG_ATOMICS_POINTER_GENERATE (swiftType , atomicType , parameterType , nullability , alignment ) \
276- CLANG_ATOMICS_STRUCT(swiftType, atomicType, alignment) \
276+ CLANG_ATOMICS_STRUCT(swiftType, atomicType, a, alignment) \
277277 CLANG_ATOMICS_IS_LOCK_FREE(swiftType) \
278278 CLANG_ATOMICS_POINTER_INITIALIZE(swiftType, parameterType, nullability) \
279279 CLANG_ATOMICS_POINTER_CREATE(swiftType, parameterType, nullability) \
@@ -290,10 +290,10 @@ CLANG_ATOMICS_POINTER_GENERATE(AtomicNonNullRawPointer, atomic_uintptr_t, const
290290CLANG_ATOMICS_POINTER_GENERATE (AtomicOptionalRawPointer , atomic_uintptr_t , const void * , _Nullable , _Alignof(atomic_uintptr_t ))
291291
292292#ifdef __CACHE_LINE_WIDTH
293- CLANG_ATOMICS_POINTER_GENERATE (AtomicCacheLineAlignedMutableRawPointer , atomic_uintptr_t , void * , _Nonnull , __CACHE_LINE_WIDTH )
294- CLANG_ATOMICS_POINTER_GENERATE (AtomicCacheLineAlignedOptionalMutableRawPointer , atomic_uintptr_t , void * , _Nullable , __CACHE_LINE_WIDTH )
295- CLANG_ATOMICS_POINTER_GENERATE (AtomicCacheLineAlignedRawPointer , atomic_uintptr_t , const void * , _Nonnull , __CACHE_LINE_WIDTH )
296- CLANG_ATOMICS_POINTER_GENERATE (AtomicCacheLineAlignedOptionalRawPointer , atomic_uintptr_t , const void * , _Nullable , __CACHE_LINE_WIDTH )
293+ CLANG_ATOMICS_POINTER_GENERATE (AtomicCacheAlignedMutableRawPointer , atomic_uintptr_t , void * , _Nonnull , __CACHE_LINE_WIDTH )
294+ CLANG_ATOMICS_POINTER_GENERATE (AtomicCacheAlignedOptionalMutableRawPointer , atomic_uintptr_t , void * , _Nullable , __CACHE_LINE_WIDTH )
295+ CLANG_ATOMICS_POINTER_GENERATE (AtomicCacheAlignedRawPointer , atomic_uintptr_t , const void * , _Nonnull , __CACHE_LINE_WIDTH )
296+ CLANG_ATOMICS_POINTER_GENERATE (AtomicCacheAlignedOptionalRawPointer , atomic_uintptr_t , const void * , _Nullable , __CACHE_LINE_WIDTH )
297297#endif
298298
299299struct opaque ;
@@ -394,7 +394,7 @@ CLANG_ATOMICS_POINTER_GENERATE(AtomicOptionalOpaquePointer, atomic_uintptr_t, st
394394 CLANG_ATOMICS_TAGGED_POINTER_INCREMENT(swiftType, pointerType, nullability)
395395
396396#define CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (atomicType , structType , alignment ) \
397- CLANG_ATOMICS_STRUCT(atomicType, _Atomic(__UNION_TYPE), alignment) \
397+ CLANG_ATOMICS_STRUCT(atomicType, _Atomic(__UNION_TYPE), a, alignment) \
398398 CLANG_ATOMICS_IS_LOCK_FREE(atomicType) \
399399 CLANG_ATOMICS_TAGGED_POINTER_INITIALIZE(atomicType, structType) \
400400 CLANG_ATOMICS_TAGGED_POINTER_LOAD(atomicType, structType) \
@@ -404,19 +404,31 @@ CLANG_ATOMICS_POINTER_GENERATE(AtomicOptionalOpaquePointer, atomic_uintptr_t, st
404404
405405CLANG_ATOMICS_TAGGED_POINTER_GENERATE (TaggedRawPointer , const void * , _Nonnull )
406406CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicTaggedRawPointer , TaggedRawPointer , _Alignof(_Atomic (__UNION_TYPE )))
407- CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicCacheLineAlignedTaggedRawPointer , TaggedRawPointer , __CACHE_LINE_WIDTH )
408407
409408CLANG_ATOMICS_TAGGED_POINTER_GENERATE (TaggedOptionalRawPointer , const void * , _Nullable )
410409CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicTaggedOptionalRawPointer , TaggedOptionalRawPointer , _Alignof(_Atomic (__UNION_TYPE )))
411- CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicCacheLineAlignedTaggedOptionalRawPointer , TaggedOptionalRawPointer , __CACHE_LINE_WIDTH )
412410
413411CLANG_ATOMICS_TAGGED_POINTER_GENERATE (TaggedMutableRawPointer , void * , _Nonnull )
414412CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicTaggedMutableRawPointer , TaggedMutableRawPointer , _Alignof(_Atomic (__UNION_TYPE )))
415- CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicCacheLineAlignedTaggedMutableRawPointer , TaggedMutableRawPointer , __CACHE_LINE_WIDTH )
416413
417414CLANG_ATOMICS_TAGGED_POINTER_GENERATE (TaggedOptionalMutableRawPointer , void * , _Nullable )
418415CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicTaggedOptionalMutableRawPointer , TaggedOptionalMutableRawPointer , _Alignof(_Atomic (__UNION_TYPE )))
419- CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicCacheLineAlignedTaggedOptionalMutableRawPointer , TaggedOptionalMutableRawPointer , __CACHE_LINE_WIDTH )
416+
417+ #ifdef __CACHE_LINE_WIDTH
418+ CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicCacheAlignedTaggedRawPointer , TaggedRawPointer , __CACHE_LINE_WIDTH )
419+ CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicCacheAlignedTaggedOptionalRawPointer , TaggedOptionalRawPointer , __CACHE_LINE_WIDTH )
420+ CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicCacheAlignedTaggedMutableRawPointer , TaggedMutableRawPointer , __CACHE_LINE_WIDTH )
421+ CLANG_ATOMICS_ATOMIC_TAGGED_POINTER_GENERATE (AtomicCacheAlignedTaggedOptionalMutableRawPointer , TaggedOptionalMutableRawPointer , __CACHE_LINE_WIDTH )
422+ #endif
423+
424+ // non-atomic padded pointer wrappers
425+
426+ #ifdef __CACHE_LINE_WIDTH
427+ CLANG_ATOMICS_STRUCT (CacheAlignedRawPointer , const void * _Nonnull , pointer , __CACHE_LINE_WIDTH )
428+ CLANG_ATOMICS_STRUCT (CacheAlignedOptionalRawPointer , const void * _Nullable , pointer , __CACHE_LINE_WIDTH )
429+ CLANG_ATOMICS_STRUCT (CacheAlignedMutableRawPointer , void * _Nonnull , pointer , __CACHE_LINE_WIDTH )
430+ CLANG_ATOMICS_STRUCT (CacheAlignedOptionalMutableRawPointer , void * _Nullable , pointer , __CACHE_LINE_WIDTH )
431+ #endif
420432
421433// fence
422434
@@ -431,7 +443,7 @@ void CAtomicsThreadFence(enum MemoryOrder order)
431443#define __OPAQUE_UNMANAGED_LOCKED (uintptr_t)0x7
432444#define __OPAQUE_UNMANAGED_SPINMASK (char)0xc0
433445
434- CLANG_ATOMICS_STRUCT (OpaqueUnmanagedHelper , atomic_uintptr_t , _Alignof(atomic_uintptr_t ))
446+ CLANG_ATOMICS_STRUCT (OpaqueUnmanagedHelper , atomic_uintptr_t , a , _Alignof(atomic_uintptr_t ))
435447CLANG_ATOMICS_IS_LOCK_FREE (OpaqueUnmanagedHelper )
436448CLANG_ATOMICS_POINTER_INITIALIZE (OpaqueUnmanagedHelper , const void * , _Nullable )
437449
0 commit comments