diff --git a/openmp/runtime/src/kmp_barrier.h b/openmp/runtime/src/kmp_barrier.h --- a/openmp/runtime/src/kmp_barrier.h +++ b/openmp/runtime/src/kmp_barrier.h @@ -21,7 +21,11 @@ #define KMP_ALIGNED_ALLOCATE(size, alignment) _mm_malloc(size, alignment) #define KMP_ALIGNED_FREE(ptr) _mm_free(ptr) #elif KMP_HAVE_ALIGNED_ALLOC -#define KMP_ALIGNED_ALLOCATE(size, alignment) aligned_alloc(alignment, size) +static inline size_t roundup(size_t val, size_t to) { + return (val + to - 1) / to * to; +} +#define KMP_ALIGNED_ALLOCATE(size, alignment) \ + aligned_alloc(alignment, roundup(size, alignment)) #define KMP_ALIGNED_FREE(ptr) free(ptr) #elif KMP_HAVE_POSIX_MEMALIGN static inline void *KMP_ALIGNED_ALLOCATE(size_t size, size_t alignment) {