// RUN: %clang_cc1 -std=c++11 -fsyntax-only -triple x86_64-unknown-unknown -verify %s
;
; // expected-note 6 {{forward declaration}}
extern S1 s1;
const int test3 = ; // expected-error {{invalid application of '__builtin_omp_required_simd_align' to an incomplete type 'decltype(s1)' (aka 'S1')}}
;
const int test6 = ;
const int test7 = ; // expected-error {{invalid application of '__builtin_omp_required_simd_align' to an incomplete type 'S1'}}
// Arguably, these should fail like the S1 cases do: the alignment of
// 's2.x' should depend on the alignment of both x-within-S2 and
// s2-within-S3 and thus require 'S3' to be complete. If we start
// doing the appropriate recursive walk to do that, we should make
// sure that these cases don't explode.
;
// Same reasoning as S3.
;
// Regression test for asking for the alignment of a field within an invalid
// record.
;
const int test8 = ;
long long int test14;
static_assert;
static_assert; // ok
void
;