brintos

brintos / llvm-project-archived public Read only

0
0
Text · 6.1 KiB · b5915fe Raw
150 lines · cpp
1// REQUIRES: x86-registered-target2// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs \3// RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY="" \4// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \5// RUN: FileCheck -check-prefix=CHECK-X %s6// RUN: %clang -target x86_64-unknown-linux-gnu -o - -c \7// RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY="" \8// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \9// RUN: llvm-readelf -s - 2>&1 | \10// RUN: FileCheck -check-prefix=CHECK-X-RE %s11 12// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs \13// RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY="" \14// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \15// RUN: FileCheck -check-prefix=CHECK-HP %s16// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs \17// RUN: -interface-stub-version=ifs-v1 \18// RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY="" \19// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \20// RUN: FileCheck -check-prefix=CHECK-HP2 %s21// RUN: %clang -target x86_64-unknown-linux-gnu -o - -c \22// RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY="" \23// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \24// RUN: llvm-readelf -s - 2>&1 | \25// RUN: FileCheck -check-prefix=CHECK-HP-RE %s26 27// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs \28// RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY=HIDDEN \29// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \30// RUN: FileCheck -check-prefix=CHECK-HC %s31// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs \32// RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY=HIDDEN \33// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \34// RUN: FileCheck -check-prefix=CHECK-HC2 %s35// RUN: %clang -target x86_64-unknown-linux-gnu -o - -c \36// RUN: -DPARENT_CLASS_VISIBILITY="" -DCHILD_CLASS_VISIBILITY=HIDDEN \37// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \38// RUN: llvm-readelf -s - 2>&1 | \39// RUN: FileCheck -check-prefix=CHECK-HC-RE %s40 41// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -o - -emit-interface-stubs \42// RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY=HIDDEN \43// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \44// RUN: FileCheck -check-prefix=CHECK-HP-HC %s45// RUN: %clang -target x86_64-unknown-linux-gnu -o - -c \46// RUN: -DPARENT_CLASS_VISIBILITY=HIDDEN -DCHILD_CLASS_VISIBILITY=HIDDEN \47// RUN: -DPARENT_METHOD_VISIBILITY="" -DCHILD_METHOD_VISIBILITY="" %s | \48// RUN: llvm-readelf -s - 2>&1 | \49// RUN: FileCheck -check-prefix=CHECK-HP-HC-RE %s50 51// CHECK-X-DAG: _ZN1CC2Ev52// CHECK-X-DAG: _ZN1CD0Ev53// CHECK-X-DAG: _ZN1CD2Ev54// CHECK-X-DAG: _ZN1SC2Ev55// CHECK-X-DAG: _ZN1SD0Ev56// CHECK-X-DAG: _ZN1SD2Ev57// CHECK-X-DAG: _ZN1C1mEv58// CHECK-X-DAG: _ZN1S1nEv59 60// CHECK-X-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1C1mEv61// CHECK-X-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1CC2Ev62// CHECK-X-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1CD0Ev63// CHECK-X-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1CD2Ev64// CHECK-X-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1S1nEv65// CHECK-X-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1SC2Ev66// CHECK-X-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1SD0Ev67// CHECK-X-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1SD2Ev68 69// CHECK-HP2-DAG: _ZN1CC2Ev70// CHECK-HP2-DAG: _ZN1CD0Ev71// CHECK-HP2-DAG: _ZN1CD2Ev72// CHECK-HP2-DAG: _ZN1C1mEv73 74// CHECK-HP-NOT: _ZN1S1nEv75// CHECK-HP-NOT: _ZN1SC2Ev76// CHECK-HP-NOT: _ZN1SD0Ev77// CHECK-HP-NOT: _ZN1SD2Ev78 79// CHECK-HP-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1C1mEv80// CHECK-HP-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1CC2Ev81// CHECK-HP-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1CD0Ev82// CHECK-HP-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1CD2Ev83// CHECK-HP-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1S1nEv84// CHECK-HP-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1SC2Ev85// CHECK-HP-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1SD0Ev86// CHECK-HP-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1SD2Ev87 88// CHECK-HC2-DAG: _ZN1SC2Ev89// CHECK-HC2-DAG: _ZN1SD0Ev90// CHECK-HC2-DAG: _ZN1SD2Ev91// CHECK-HC2-DAG: _ZN1S1nEv92 93// CHECK-HC-NOT: _ZN1C1mEv94// CHECK-HC-NOT: _ZN1CC2Ev95// CHECK-HC-NOT: _ZN1CD0Ev96// CHECK-HC-NOT: _ZN1CD2Ev97 98// CHECK-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1C1mEv99// CHECK-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1CC2Ev100// CHECK-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1CD0Ev101// CHECK-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1CD2Ev102// CHECK-HC-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1S1nEv103// CHECK-HC-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1SC2Ev104// CHECK-HC-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1SD0Ev105// CHECK-HC-RE-DAG: FUNC    WEAK   DEFAULT   [[#]] _ZN1SD2Ev106 107// CHECK-HP-HC-NOT: _ZN1CC2Ev108// CHECK-HP-HC-NOT: _ZN1CD0Ev109// CHECK-HP-HC-NOT: _ZN1CD2Ev110// CHECK-HP-HC-NOT: _ZN1SC2Ev111// CHECK-HP-HC-NOT: _ZN1SD0Ev112// CHECK-HP-HC-NOT: _ZN1SD2Ev113// CHECK-HP-HC-NOT: _ZN1C1mEv114// CHECK-HP-HC-NOT: _ZN1S1nEv115 116// CHECK-HP-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1C1mEv117// CHECK-HP-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1CC2Ev118// CHECK-HP-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1CD0Ev119// CHECK-HP-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1CD2Ev120// CHECK-HP-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1S1nEv121// CHECK-HP-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1SC2Ev122// CHECK-HP-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1SD0Ev123// CHECK-HP-HC-RE-DAG: FUNC    WEAK   HIDDEN    [[#]] _ZN1SD2Ev124 125// TODO: clang+llvm does not materialize complete ctors and dtors for the126// Itanium abi. Figure out why and add the check-not for these:127// _ZN1CC1Ev128// _ZN1CD1Ev129// _ZN1SC1Ev130// _ZN1SD1Ev131 132#define HIDDEN __attribute__((__visibility__("hidden")))133#define DEFAULT __attribute__((__visibility__("default")))134 135struct PARENT_CLASS_VISIBILITY S {136  virtual ~S() {}137  virtual PARENT_METHOD_VISIBILITY void n() {}138};139 140class CHILD_CLASS_VISIBILITY C : public S {141public:142  virtual CHILD_METHOD_VISIBILITY void m() {}143};144 145void f() {146  C c;147  c.m();148  c.n();149}150