// Test without serialization:
// RUN: %clang_cc1 -fsyntax-only %s -ast-dump | FileCheck %s
//
// Test with serialization:
// RUN: %clang_cc1 -emit-pch -o %t %s
// RUN: %clang_cc1 -x c++ -include-pch %t -ast-dump-all /dev/null \
// RUN: | sed -e "s/ <undeserialized declarations>//" -e "s/ imported//" \
// RUN: | FileCheck %s

struct FOO {
  static const int vec_align_bytes = 16;
  void foo() {
    double a alignas(vec_align_bytes);
    ;
  }
};

// CHECK:      |   `-AlignedAttr {{.*}} <col:14> alignas
// CHECK-NEXT:      |     `-ConstantExpr {{.*}} <col:22> 'int'
// CHECK-NEXT:      |       |-value: Int 16
// CHECK-NEXT:      |       `-ImplicitCastExpr {{.*}} <col:22> 'int' <LValueToRValue>
// CHECK-NEXT:      |         `-DeclRefExpr {{.*}} <col:22> 'const int' lvalue Var {{.*}} 'vec_align_bytes' 'const int' non_odr_use_constant
// CHECK-NEXT:      `-NullStmt {{.*}} <line:14:5>
