On 12/31/2015 04:50 AM, Dominik Vogt wrote:
The attached patch fixes C++-11 handling of "alignas(0)" which should be ignored but currently generates an error message. A test case is included; the patch has been tested on S390x. Since it's a language issue it should be independent of the backend used.
The patch doesn't handle value-dependent expressions(*). It seems that the problem is in handle_aligned_attribute() calling check_user_alignment() with the second argument (ALLOW_ZERO) set to false. Calling it with true fixes the problem and handles value-dependent expressions (I haven't done any more testing beyond that). Also, in the test, I noticed the definition of the first struct is missing the terminating semicolon. Martin [*] Such as in the following: template <int N> struct A { alignas (N) int i; }; A<0> a3;