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