// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -fms-extensions -emit-llvm %s -o - -triple=i386-pc-win32 -fms-compatibility-version=19.00 | FileCheck %s --check-prefix=CHECK --check-prefix=MSVC2015
// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -fms-extensions -emit-llvm %s -o - -triple=i386-pc-win32 -fms-compatibility-version=18.00 | FileCheck %s --check-prefix=CHECK --check-prefix=MSVC2013
// RUN: %clang_cc1 -no-opaque-pointers -std=c++11 -fms-extensions -emit-llvm %s -o - -triple=i386-pc-win32 -gcodeview -debug-info-kind=limited | FileCheck %s --check-prefix=DBG
// CHECK: "?DeducedType@@3HA"
auto DeducedType = 30;
// CHECK-DAG: @"?Char16Var@@3_SA"
char16_t Char16Var;
// CHECK-DAG: @"?Char32Var@@3_UA"
char32_t Char32Var;
// CHECK: "?LRef@@YAXAAH@Z"
void
// CHECK: "?RRef@@YAH$$QAH@Z"
int
// CHECK: "?Null@@YAX$$T@Z"
void
inline int
void
inline void
inline void
int
int
// CHECK-DAG: @"??__K_deg@@YAHO@Z"
void
;
// CHECK-DAG: @"??$templ_fun_with_pack@$S@@YAXXZ"
void
;
// MSVC2013-DAG: @"??$templ_fun_with_ty_pack@$$$V@@YAXXZ"
// MSVC2015-DAG: @"??$templ_fun_with_ty_pack@$$V@@YAXXZ"
void
;
// MSVC2013-DAG: @"??$templ_fun_with_templ_templ_pack@$$$V@@YAXXZ"
// MSVC2015-DAG: @"??$templ_fun_with_templ_templ_pack@$$V@@YAXXZ"
int
// CHECK-DAG: @"??R<lambda_0>@?0??PR26105@@YAHXZ@QBE@H@Z"
// CHECK-DAG: @"??R<lambda_1>@?0???R<lambda_0>@?0??PR26105@@YAHXZ@QBE@H@Z@QBE@H@Z"
int __unaligned *
int __unaligned * __unaligned *
__unaligned int
void
void
T
void
// CHECK-DAG: @"?unaligned_foo1@@YAPFAHXZ"
// CHECK-DAG: @"?unaligned_foo2@@YAPFAPFAHXZ"
// CHECK-DAG: @"?unaligned_foo3@@YAHXZ"
// CHECK-DAG: @"?unaligned_foo4@@YAXPFAH@Z"
// CHECK-DAG: @"?unaligned_foo5@@YAXPIFAH@Z"
// CHECK-DAG: @"??$unaligned_foo6@PAH@@YAPAHPAH@Z"
// CHECK-DAG: @"??$unaligned_foo6@PFAH@@YAPFAHPFAH@Z"
// __unaligned qualifier for function types
;
void volatile __unaligned
// CHECK-DAG: @"?unaligned_foo8@unaligned_foo8_S@@QFCEXXZ"
;
void
// CHECK-DAG: define internal void @"?f@@YAXW4<unnamed-enum-enumerator>@@@Z"(
void