// RUN: %clang_cc1 -flto -triple x86_64-unknown-linux -std=c++11 -fms-extensions -fvisibility hidden -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=ITANIUM %s
// RUN: %clang_cc1 -flto -triple x86_64-pc-windows-msvc -std=c++11 -fms-extensions -fwhole-program-vtables -emit-llvm -o - %s | FileCheck --check-prefix=MS --check-prefix=MS-STD %s
// RUN: %clang_cc1 -flto -triple x86_64-pc-windows-msvc -std=c++11 -fms-extensions -fwhole-program-vtables -flto-visibility-public-std -emit-llvm -o - %s | FileCheck --check-prefix=MS --check-prefix=MS-NOSTD %s

struct C1 {
  virtual void f();
};

struct __attribute__((visibility("default"))) C2 {
  virtual void f();
};

struct __declspec(dllexport) C3 {
  virtual void f();
};

struct __declspec(dllimport) C4 {
  virtual void f();
};

struct [[clang::lto_visibility_public]] C5 {
  virtual void f();
};

struct __declspec(uuid("00000000-0000-0000-0000-000000000000")) C6 {
  virtual void f();
};

namespace std {

struct C7 {
  virtual void f();
  struct C8 {
    virtual void f();
  };
};

}

extern "C++" {

namespace stdext {

struct C9 {
  virtual void f();
};

}

}

namespace other {

struct C10 {
  virtual void f();
};

}

namespace {

struct C11 {
  virtual void f();
};

}

void f(C1 *c1, C2 *c2, C3 *c3, C4 *c4, C5 *c5, C6 *c6, std::C7 *c7,
       std::C7::C8 *c8, stdext::C9 *c9, other::C10 *c10) {
  // ITANIUM: type.test{{.*}}!"_ZTS2C1"
  // MS: type.test{{.*}}!"?AUC1@@"
  c1->f();
  // ITANIUM-NOT: type.test{{.*}}!"_ZTS2C2"
  // MS: type.test{{.*}}!"?AUC2@@"
  c2->f();
  // ITANIUM: type.test{{.*}}!"_ZTS2C3"
  // MS-NOT: type.test{{.*}}!"?AUC3@@"
  c3->f();
  // ITANIUM: type.test{{.*}}!"_ZTS2C4"
  // MS-NOT: type.test{{.*}}!"?AUC4@@"
  c4->f();
  // ITANIUM-NOT: type.test{{.*}}!"_ZTS2C5"
  // MS-NOT: type.test{{.*}}!"?AUC5@@"
  c5->f();
  // ITANIUM-NOT: type.test{{.*}}!"_ZTS2C6"
  // MS-NOT: type.test{{.*}}!"?AUC6@@"
  c6->f();
  // ITANIUM: type.test{{.*}}!"_ZTSSt2C7"
  // MS-STD: type.test{{.*}}!"?AUC7@std@@"
  // MS-NOSTD-NOT: type.test{{.*}}!"?AUC7@std@@"
  c7->f();
  // ITANIUM: type.test{{.*}}!"_ZTSNSt2C72C8E"
  // MS-STD: type.test{{.*}}!"?AUC8@C7@std@@"
  // MS-NOSTD-NOT: type.test{{.*}}!"?AUC8@C7@std@@"
  c8->f();
  // ITANIUM: type.test{{.*}}!"_ZTSN6stdext2C9E"
  // MS-STD: type.test{{.*}}!"?AUC9@stdext@@"
  // MS-NOSTD-NOT: type.test{{.*}}!"?AUC9@stdext@@"
  c9->f();
  // ITANIUM: type.test{{.*}}!"_ZTSN5other3C10E"
  // MS: type.test{{.*}}!"?AUC10@other@@"
  c10->f();
  // ITANIUM: type.test{{.*}}!{{[0-9]}}
  // MS: type.test{{.*}}!{{[0-9]}}
  C11 *c11;
  c11->f();
}
