https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89261
--- Comment #2 from H.J. Lu <hjl.tools at gmail dot com> --- (In reply to Uroš Bizjak from comment #1) > (In reply to H.J. Lu from comment #0) > > i386.c has > > > > int > > ix86_data_alignment (tree type, int align, bool opt) > > > > But "align" passed down is unsigned. > > Where is the bug? > > I don't think anybody passed negative alignment or alignment >= 2G. This is a valid code: [hjl@gnu-skx-1 gcc]$ cat /tmp/x.i typedef double __v2df __attribute__ ((__vector_size__ (16), aligned(1 << 28))); __v2df foo = { 1.0, 2.0 }; [hjl@gnu-skx-1 gcc]$ gcc -S /tmp/x.i [hjl@gnu-skx-1 gcc]$ cat x.s .file "x.i" .text .globl foo .data .align 16 <<<<<<<<<<<< This is wrong. .type foo, @object .size foo, 16 foo: .long 0 .long 1072693248 .long 0 .long 1073741824 .ident "GCC: (GNU) 8.2.1 20190109 (Red Hat 8.2.1-7)" .section .note.GNU-stack,"",@progbits [hjl@gnu-skx-1 gcc]$