Mercurial > vec
changeset 47:d26d22c602bd
vec: fix VEC_ALIGNED_ARRAY implementation for bad compilers
author | Paper <paper@tflc.us> |
---|---|
date | Sat, 09 Aug 2025 16:02:40 -0400 |
parents | 31cee67540b5 |
children | 7d55b2bf8152 |
files | include/vec/vec.h |
diffstat | 1 files changed, 2 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/include/vec/vec.h Sat Aug 09 15:55:59 2025 -0400 +++ b/include/vec/vec.h Sat Aug 09 16:02:40 2025 -0400 @@ -448,10 +448,10 @@ # define VEC_ALIGNED_ARRAY_SIZEOF(var, align) \ (sizeof(var)) #else -// use unions to get an aligned offset without triggering strict aliasing +/* emulate it for compilers that suck */ # define VEC_ALIGNED_ARRAY(type, var, length, align) \ type vec_unaligned_##var##_[length + (align) - 1]; \ - type *var = ((union vec_aligned_union_##var##_ *)(((vec_uintptr)vec_unaligned_##var##_ + (align - 1)) & ~(align - 1)))->arr; + type *var = (type *)(((vec_uintptr)vec_unaligned_##var##_ + (align - 1)) & ~(align - 1)); # define VEC_ALIGNED_ARRAY_SIZEOF(var, align) \ (sizeof(vec_unaligned_##var##_) - (align - 1)) #endif