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]$

Reply via email to