// RUN: %clang_cc1 -triple i686-unknown-windows-msvc -fdeclspec -emit-llvm %s -o - | FileCheck %s
// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fdeclspec -emit-llvm %s -o - | FileCheck %s -check-prefix CHECK-64

void __attribute__((__swiftcall__)) f() {}
// CHECK-DAG: @"?f@@YSXXZ"
// CHECK-64-DAG: @"?f@@YSXXZ"

void (__attribute__((__swiftcall__)) *p)();
// CHECK-DAG: @"?p@@3P6SXXZA"
// CHECK-64-DAG: @"?p@@3P6SXXZEA

namespace {
void __attribute__((__swiftcall__)) __attribute__((__used__)) f() { }
}
// CHECK-DAG: @"?f@?A0x{{[^@]*}}@@YSXXZ"
// CHECK-64-DAG: @"?f@?A0x{{[^@]*}}@@YSXXZ"

namespace n {
void __attribute__((__swiftcall__)) f() {}
}
// CHECK-DAG: @"?f@n@@YSXXZ"
// CHECK-64-DAG: @"?f@n@@YSXXZ"

struct __declspec(dllexport) S {
  S(const S &) = delete;
  S & operator=(const S &) = delete;
  void __attribute__((__swiftcall__)) m() { }
};
// CHECK-DAG: @"?m@S@@QASXXZ"
// CHECK-64-DAG: @"?m@S@@QEASXXZ"

void f(void (__attribute__((__swiftcall__))())) {}
// CHECK-DAG: @"?f@@YAXP6SXXZ@Z"
// CHECK-64-DAG: @"?f@@YAXP6SXXZ@Z"

void __attribute__((__preserve_most__)) g() {}
// CHECK-DAG: @"?g@@YUXXZ"
// CHECK-64-DAG: @"?g@@YUXXZ"

void (__attribute__((__preserve_most__)) *q)();
// CHECK-DAG: @"?q@@3P6UXXZA"
// CHECK-64-DAG: @"?q@@3P6UXXZEA"

namespace {
void __attribute__((__preserve_most__)) __attribute__((__used__)) g() {}
}
// CHECK-DAG: @"?g@?A0x{{[^@]*}}@@YUXXZ"
// CHECK-64-DAG: @"?g@?A0x{{[^@]*}}@@YUXXZ"

namespace n {
void __attribute__((__preserve_most__)) g() {}
}
// CHECK-DAG: @"?g@n@@YUXXZ"
// CHECK-64-DAG: @"?g@n@@YUXXZ"

struct __declspec(dllexport) T {
  T(const T &) = delete;
  T & operator=(const T &) = delete;
  void __attribute__((__preserve_most__)) m() {}
};
// CHECK-DAG: @"?m@T@@QAUXXZ"
// CHECK-64-DAG: @"?m@T@@QEAUXXZ"

void g(void (__attribute__((__preserve_most__))())) {}
// CHECK-DAG: @"?g@@YAXP6UXXZ@Z"
// CHECK-64-DAG: @"?g@@YAXP6UXXZ@Z"

