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
```

Reply via email to