Skip to content

Commit eda8f15

Browse files
authored
Merge pull request #70473 from AtariDreams/Task
Use aligned_alloc when the platform we use supports it
2 parents 614a8e3 + 3348bdd commit eda8f15

File tree

1 file changed

+8
-6
lines changed

1 file changed

+8
-6
lines changed

include/swift/Basic/Malloc.h

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,17 +27,19 @@
2727

2828
namespace swift {
2929

30-
// FIXME: Use C11 aligned_alloc if available.
3130
inline void *AlignedAlloc(size_t size, size_t align) {
32-
// posix_memalign only accepts alignments greater than sizeof(void*).
33-
//
34-
if (align < sizeof(void*))
35-
align = sizeof(void*);
36-
3731
#if defined(_WIN32)
3832
void *r = _aligned_malloc(size, align);
3933
assert(r && "_aligned_malloc failed");
34+
#elif __STDC_VERSION__-0 >= 201112l
35+
// C11 supports aligned_alloc
36+
void *r = aligned_alloc(align, size);
37+
assert(r && "aligned_alloc failed");
4038
#else
39+
// posix_memalign only accepts alignments greater than sizeof(void*).
40+
if (align < sizeof(void *))
41+
align = sizeof(void *);
42+
4143
void *r = nullptr;
4244
int res = posix_memalign(&r, align, size);
4345
assert(res == 0 && "posix_memalign failed");

0 commit comments

Comments
 (0)