1*673dc3d4SNico Weber // RUN: %clang_cl_asan -Od %s -Fe%t
2*673dc3d4SNico Weber // RUN: %run %t
3*673dc3d4SNico Weber
4*673dc3d4SNico Weber #include <windows.h>
5*673dc3d4SNico Weber
6*673dc3d4SNico Weber #define CHECK_ALIGNED(ptr,alignment) \
7*673dc3d4SNico Weber do { \
8*673dc3d4SNico Weber if (((uintptr_t)(ptr) % (alignment)) != 0) \
9*673dc3d4SNico Weber return __LINE__; \
10*673dc3d4SNico Weber } \
11*673dc3d4SNico Weber while(0)
12*673dc3d4SNico Weber
main(void)13*673dc3d4SNico Weber int main(void) {
14*673dc3d4SNico Weber int *p = (int*)_aligned_malloc(1024 * sizeof(int), 32);
15*673dc3d4SNico Weber CHECK_ALIGNED(p, 32);
16*673dc3d4SNico Weber p[512] = 0;
17*673dc3d4SNico Weber _aligned_free(p);
18*673dc3d4SNico Weber
19*673dc3d4SNico Weber p = (int*)_aligned_malloc(128, 128);
20*673dc3d4SNico Weber CHECK_ALIGNED(p, 128);
21*673dc3d4SNico Weber p = (int*)_aligned_realloc(p, 2048 * sizeof(int), 128);
22*673dc3d4SNico Weber CHECK_ALIGNED(p, 128);
23*673dc3d4SNico Weber p[1024] = 0;
24*673dc3d4SNico Weber if (_aligned_msize(p, 128, 0) != 2048 * sizeof(int))
25*673dc3d4SNico Weber return __LINE__;
26*673dc3d4SNico Weber _aligned_free(p);
27*673dc3d4SNico Weber
28*673dc3d4SNico Weber return 0;
29*673dc3d4SNico Weber }
30