brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.5 KiB · e7ce343 Raw
108 lines · cpp
1// 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 %s2// 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 %s3// 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 %s4 5struct C1 {6  virtual void f();7};8 9struct __attribute__((visibility("default"))) C2 {10  virtual void f();11};12 13struct __declspec(dllexport) C3 {14  virtual void f();15};16 17struct __declspec(dllimport) C4 {18  virtual void f();19};20 21struct [[clang::lto_visibility_public]] C5 {22  virtual void f();23};24 25struct __declspec(uuid("00000000-0000-0000-0000-000000000000")) C6 {26  virtual void f();27};28 29namespace std {30 31struct C7 {32  virtual void f();33  struct C8 {34    virtual void f();35  };36};37 38}39 40extern "C++" {41 42namespace stdext {43 44struct C9 {45  virtual void f();46};47 48}49 50}51 52namespace other {53 54struct C10 {55  virtual void f();56};57 58}59 60namespace {61 62struct C11 {63  virtual void f();64};65 66}67 68void f(C1 *c1, C2 *c2, C3 *c3, C4 *c4, C5 *c5, C6 *c6, std::C7 *c7,69       std::C7::C8 *c8, stdext::C9 *c9, other::C10 *c10) {70  // ITANIUM: type.test{{.*}}!"_ZTS2C1"71  // MS: type.test{{.*}}!"?AUC1@@"72  c1->f();73  // ITANIUM: type.test{{.*}}!"_ZTS2C2"74  // MS: type.test{{.*}}!"?AUC2@@"75  c2->f();76  // ITANIUM: type.test{{.*}}!"_ZTS2C3"77  // MS-NOT: type.test{{.*}}!"?AUC3@@"78  c3->f();79  // ITANIUM: type.test{{.*}}!"_ZTS2C4"80  // MS-NOT: type.test{{.*}}!"?AUC4@@"81  c4->f();82  // ITANIUM-NOT: type.test{{.*}}!"_ZTS2C5"83  // MS-NOT: type.test{{.*}}!"?AUC5@@"84  c5->f();85  // ITANIUM-NOT: type.test{{.*}}!"_ZTS2C6"86  // MS-NOT: type.test{{.*}}!"?AUC6@@"87  c6->f();88  // ITANIUM: type.test{{.*}}!"_ZTSSt2C7"89  // MS-STD: type.test{{.*}}!"?AUC7@std@@"90  // MS-NOSTD-NOT: type.test{{.*}}!"?AUC7@std@@"91  c7->f();92  // ITANIUM: type.test{{.*}}!"_ZTSNSt2C72C8E"93  // MS-STD: type.test{{.*}}!"?AUC8@C7@std@@"94  // MS-NOSTD-NOT: type.test{{.*}}!"?AUC8@C7@std@@"95  c8->f();96  // ITANIUM: type.test{{.*}}!"_ZTSN6stdext2C9E"97  // MS-STD: type.test{{.*}}!"?AUC9@stdext@@"98  // MS-NOSTD-NOT: type.test{{.*}}!"?AUC9@stdext@@"99  c9->f();100  // ITANIUM: type.test{{.*}}!"_ZTSN5other3C10E"101  // MS: type.test{{.*}}!"?AUC10@other@@"102  c10->f();103  // ITANIUM: type.test{{.*}}!{{[0-9]}}104  // MS: type.test{{.*}}!{{[0-9]}}105  C11 *c11;106  c11->f();107}108