llvm/clang/test/CodeGenCXX/msabi-preserve-none-cc.cpp

// RUN: %clang_cc1 -triple x86_64-unknown-windows-msvc -fdeclspec -emit-llvm %s -o - | FileCheck %s
// RUN: %clang_cc1 -triple aarch64-unknown-windows-msvc -fdeclspec -emit-llvm %s -o - | FileCheck %s

void __attribute__((__preserve_none__)) f() {}
// CHECK-DAG: @"?f@@YVXXZ"

void (__attribute__((__preserve_none__)) *p)();
// CHECK-DAG: @"?p@@3P6VXXZEA

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

namespace n {
void __attribute__((__preserve_none__)) f() {}
}
// CHECK-DAG: @"?f@n@@YVXXZ"

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

void f(void (__attribute__((__preserve_none__))())) {}
// CHECK-DAG: @"?f@@YAXP6VXXZ@Z"