36 lines · cpp
1// RUN: %clang_cl_asan %Od %s %Fe%t2// RUN: %run %t3 4#include <windows.h>5 6#ifdef __MINGW32__7// FIXME: remove after mingw-w64 adds this declaration.8extern "C" size_t __cdecl _aligned_msize(void *_Memory, size_t _Alignment,9 size_t _Offset);10#endif11 12#define CHECK_ALIGNED(ptr,alignment) \13 do { \14 if (((uintptr_t)(ptr) % (alignment)) != 0) \15 return __LINE__; \16 } \17 while(0)18 19int main(void) {20 int *p = (int*)_aligned_malloc(1024 * sizeof(int), 32);21 CHECK_ALIGNED(p, 32);22 p[512] = 0;23 _aligned_free(p);24 25 p = (int*)_aligned_malloc(128, 128);26 CHECK_ALIGNED(p, 128);27 p = (int*)_aligned_realloc(p, 2048 * sizeof(int), 128);28 CHECK_ALIGNED(p, 128);29 p[1024] = 0;30 if (_aligned_msize(p, 128, 0) != 2048 * sizeof(int))31 return __LINE__;32 _aligned_free(p);33 34 return 0;35}36