// RUN: %clang_cc1 -std=c++11 -verify %s
alignas extern int n1; // expected-note {{previous declaration}}
alignas int n1; // expected-error {{redeclaration has different alignment requirement (8 vs 4)}}
alignas int n2; // expected-note {{previous declaration}}
alignas extern int n2; // expected-error {{different alignment requirement (4 vs 8)}}
alignas extern int n3; // expected-note {{previous declaration}}
alignas extern int n3; // expected-error {{different alignment requirement (4 vs 8)}}
extern int n4;
alignas extern int n4;
alignas extern int n5;
extern int n5;
int n6; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
alignas extern int n6; // expected-note {{declared with 'alignas' attribute here}}
extern int n7;
alignas int n7;
alignas extern int n8; // expected-note {{declared with 'alignas' attribute here}}
int n8; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
int n9; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
alignas extern int n9; // expected-note {{declared with 'alignas' attribute here}}
;
; // expected-note {{declared with 'alignas' attribute here}}
;
; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
;
; // expected-note {{previous declaration is here}}
;
; // expected-error {{redeclaration has different alignment requirement (4 vs 2)}}
;
;
; // expected-error {{'alignas' must be specified on definition if it is specified on any declaration}}
; // expected-note {{declared with 'alignas' attribute here}}
;
;
W<4,4> w44; // ok
// FIXME: We should reject this.
W<1,2> w12;
static_assert;
;
alignas alignas char X<M, N, O, P>::Buffer; // expected-error {{redeclaration has different alignment requirement (8 vs 2)}}
char *x1848 = X<1,8,4,8>::Buffer; // ok
char *x1248 = X<1,2,4,8>::Buffer; // expected-note {{in instantiation of}}
// Don't crash here.
alignas struct Incomplete incomplete; // expected-error {{incomplete type}} expected-note {{forward declaration}}