https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69089

            Bug ID: 69089
           Summary: C++11: alignas(0) causes an error
           Product: gcc
           Version: 6.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vogt at linux dot vnet.ibm.com
                CC: krebbel at gcc dot gnu.org
  Target Milestone: ---
            Target: x86_64 s390

Created attachment 37193
  --> https://gcc.gnu.org/bugzilla/attachment.cgi?id=37193&action=edit
Fix for gcc-6.0.0

The c++11 standard demands that "alignas(0)" is valid but ignored:

  "— if the constant expression evaluates to zero, the alignment
  specifier shall have no effect"

However, g++ generates an error instead:

-- foo.c --
alignas(0) int x;
-- foo.c --

# x86 with gcc-6.0
$ g++ S -std=c++11 foo.c
foo.c:1:16: error: requested alignment is not a positive power of 2
 alignas(0) int x;

Same on s390 with gcc-5.2.

The error is generated in check_user_alignment().  The bug seems to be that
"alignas(0)" generates an "align" attribute instead of being silently removed.

Reply via email to