https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81736
--- Comment #4 from H.J. Lu <hjl.tools at gmail dot com> --- Another weird code with -fno-omit-frame-pointer: [hjl@gnu-6 pr59501]$ cat k.i typedef int v8si __attribute__ ((vector_size (32))); void foo (v8si *idx, v8si *out_start, v8si *out_end, v8si *regions) { v8si base = regions[3]; *out_start = base; *out_end = base; } [hjl@gnu-6 pr59501]$ make k.s /export/build/gnu/gcc/build-x86_64-linux/gcc/xgcc -B/export/build/gnu/gcc/build-x86_64-linux/gcc/ -O -fno-omit-frame-pointer -mavx -S k.i [hjl@gnu-6 pr59501]$ cat k.s .file "k.i" .text .globl foo .type foo, @function foo: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 andq $-32, %rsp <<<<<<<<<<<< Why do we realign stack? vmovdqa 96(%rcx), %ymm0 vmovdqa %ymm0, (%rsi) vmovdqa %ymm0, (%rdx) leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size foo, .-foo .ident "GCC: (GNU) 8.0.0 20170807 (experimental)" .section .note.GNU-stack,"",@progbits [hjl@gnu-6 pr59501]$