Index: uspace/lib/c/generic/malloc.c
===================================================================
--- uspace/lib/c/generic/malloc.c	(revision 94e75cf6c40e56c11fc4cf8e6b165e9be7bcd58b)
+++ uspace/lib/c/generic/malloc.c	(revision ffccdff0fd3f49751202889e457bdf900721bfad)
@@ -35,4 +35,5 @@
 
 #include <malloc.h>
+#include <stdalign.h>
 #include <stdbool.h>
 #include <stddef.h>
@@ -198,4 +199,12 @@
 
 #define malloc_assert(expr) safe_assert(expr)
+
+/*
+ * Make sure the base alignment is sufficient.
+ */
+static_assert(BASE_ALIGN >= alignof(heap_area_t), "");
+static_assert(BASE_ALIGN >= alignof(heap_block_head_t), "");
+static_assert(BASE_ALIGN >= alignof(heap_block_foot_t), "");
+static_assert(BASE_ALIGN >= alignof(max_align_t), "");
 
 /** Serializes access to the heap from multiple threads. */
Index: uspace/lib/c/generic/rtld/module.c
===================================================================
--- uspace/lib/c/generic/rtld/module.c	(revision 94e75cf6c40e56c11fc4cf8e6b165e9be7bcd58b)
+++ uspace/lib/c/generic/rtld/module.c	(revision ffccdff0fd3f49751202889e457bdf900721bfad)
@@ -40,4 +40,5 @@
 #include <errno.h>
 #include <loader/pcb.h>
+#include <stdalign.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -353,5 +354,5 @@
 #ifdef CONFIG_TLS_VARIANT_1
 	rtld->tls_size = sizeof(tcb_t);
-	rtld->tls_align = _Alignof(tcb_t);
+	rtld->tls_align = alignof(tcb_t);
 
 	list_foreach(rtld->modules, modules_link, module_t, m) {
@@ -366,5 +367,5 @@
 #else
 	rtld->tls_size = 0;
-	rtld->tls_align = _Alignof(tcb_t);
+	rtld->tls_align = alignof(tcb_t);
 
 	list_foreach(rtld->modules, modules_link, module_t, m) {
Index: uspace/lib/c/generic/thread/tls.c
===================================================================
--- uspace/lib/c/generic/thread/tls.c	(revision 94e75cf6c40e56c11fc4cf8e6b165e9be7bcd58b)
+++ uspace/lib/c/generic/thread/tls.c	(revision ffccdff0fd3f49751202889e457bdf900721bfad)
@@ -37,4 +37,5 @@
 
 #include <assert.h>
+#include <stdalign.h>
 #include <stddef.h>
 #include <align.h>
@@ -69,5 +70,5 @@
 #else
 	size_t tls_size = tls ? tls->p_memsz : 0;
-	return -ALIGN_UP((ptrdiff_t) tls_size, max(tls_align, _Alignof(tcb_t)));
+	return -ALIGN_UP((ptrdiff_t) tls_size, max(tls_align, alignof(tcb_t)));
 #endif
 }
@@ -104,8 +105,8 @@
 #else
 	size_t alloc_size =
-	    ALIGN_UP(tls_size, max(tls_align, _Alignof(tcb_t))) + sizeof(tcb_t);
-#endif
-
-	void *area = alloc(max(tls_align, _Alignof(tcb_t)), alloc_size);
+	    ALIGN_UP(tls_size, max(tls_align, alignof(tcb_t))) + sizeof(tcb_t);
+#endif
+
+	void *area = alloc(max(tls_align, alignof(tcb_t)), alloc_size);
 	if (!area)
 		return NULL;
@@ -187,5 +188,5 @@
 	tls_free_arch(tcb,
 	    ALIGN_UP(tls->p_memsz, tls->p_align) + sizeof(tcb_t),
-	    max(tls->p_align, _Alignof(tcb_t)));
+	    max(tls->p_align, alignof(tcb_t)));
 }
 
Index: uspace/lib/virtio/virtio.c
===================================================================
--- uspace/lib/virtio/virtio.c	(revision 94e75cf6c40e56c11fc4cf8e6b165e9be7bcd58b)
+++ uspace/lib/virtio/virtio.c	(revision ffccdff0fd3f49751202889e457bdf900721bfad)
@@ -35,4 +35,5 @@
 #include <align.h>
 #include <macros.h>
+#include <stdalign.h>
 
 #include <ddf/log.h>
@@ -230,9 +231,9 @@
 	 */
 	size_t mem_size = sizeof(virtq_desc_t[size]);
-	mem_size = ALIGN_UP(mem_size, _Alignof(virtq_avail_t));
+	mem_size = ALIGN_UP(mem_size, alignof(virtq_avail_t));
 	avail_offset = mem_size;
 	mem_size += sizeof(virtq_avail_t) + sizeof(ioport16_t[size]) +
 	    sizeof(ioport16_t);
-	mem_size = ALIGN_UP(mem_size, _Alignof(virtq_used_t));
+	mem_size = ALIGN_UP(mem_size, alignof(virtq_used_t));
 	used_offset = mem_size;
 	mem_size += sizeof(virtq_used_t) + sizeof(virtq_used_elem_t[size]) +
