Go to the documentation of this file.
10 #define VLA(TYPE, NAME, LENGTH) \
13 #if defined __i386 || defined __x86_64
14 #define VLA_ALIGNED(TYPE, NAME, LENGTH, ALIGNMENT) \
15 TYPE NAME[(LENGTH)] __attribute__((__aligned__((ALIGNMENT))))
21 #define VLA_ALIGNED(TYPE, NAME, LENGTH, ALIGNMENT) \
22 UNABLE_TO_GUARANTEE_VLA_ALIGNMENT_ON_THIS_ARCHITECTURE
27 #define VLA(TYPE, NAME, LENGTH) \
28 auto NAME = static_cast<TYPE*>(_alloca(sizeof(TYPE) * (LENGTH)))
31 #define VLA_ALIGNED(TYPE, NAME, LENGTH, ALIGNMENT) \
32 size_t cbAlign##NAME = (ALIGNMENT); \
33 void* palloc##NAME = _alloca(sizeof(TYPE) * (LENGTH) + cbAlign##NAME); \
34 palloc##NAME = (void*)((size_t(palloc##NAME) + cbAlign##NAME - 1UL) & ~(cbAlign##NAME - 1UL)); \
35 auto NAME = static_cast<TYPE*>(palloc##NAME); \
42 #define VLA_SSE_ALIGNED(TYPE, NAME, LENGTH) VLA_ALIGNED(TYPE, NAME, LENGTH, 16)
44 #define VLA_SSE_ALIGNED(TYPE, NAME, LENGTH) VLA(TYPE, NAME, LENGTH)