https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54412
--- Comment #51 from LIU Hao <lh_mouse at 126 dot com> ---
Isn't it?
```
#include <stdio.h>
int
main(void)
{
_Alignas(32) char data1[32] = "meow";
printf("data1 = %p\n", data1);
char data2[] = "a";
printf("data2 = %p\n", data2);
_Alignas(32) char data3[32] = "bark";
printf("data3 = %p\n", data3);
_Alignas(64) char data4[64] = "superlarge";
printf("data4 = %p\n", data4);
}
```
```
"main":
push rbx
.seh_pushreg rbx
sub rsp, 240
.seh_stackalloc 240
movups XMMWORD PTR 224[rsp], xmm6
.seh_savexmm xmm6, 224
.seh_endprologue
pxor xmm6, xmm6
call "__main"
lea rbx, 111[rsp]
lea rcx, .LC0[rip]
and rbx, -64 # rbx := aligned storage for
local variables
lea rdx, 96[rbx] # rdx := `data1` (32 bytes,
over aligned)
movups XMMWORD PTR 112[rbx], xmm6
mov QWORD PTR 96[rbx], 2003789165
mov QWORD PTR 104[rbx], 0
call "printf"
lea rdx, 46[rsp] # rdx := `data2` (normal)
mov eax, 97
lea rcx, .LC1[rip]
mov WORD PTR 46[rsp], ax
call "printf"
lea rdx, 64[rbx] # rdx := `data3` (32 bytes,
over aligned)
lea rcx, .LC2[rip]
movups XMMWORD PTR 80[rbx], xmm6
mov QWORD PTR 64[rbx], 1802658146
mov QWORD PTR 72[rbx], 0
call "printf"
movdqu xmm0, XMMWORD PTR .LC4[rip]
mov rdx, rbx # rdx := `data4` (64 bytes,
over aligned)
lea rcx, .LC3[rip]
movups XMMWORD PTR 16[rbx], xmm6
movups XMMWORD PTR 32[rbx], xmm6
movups XMMWORD PTR 48[rbx], xmm6
movups XMMWORD PTR [rbx], xmm0
call "printf"
nop
movups xmm6, XMMWORD PTR 224[rsp]
xor eax, eax
add rsp, 240
pop rbx
ret
```