xref: /llvm-project/clang/test/CodeGen/push-hidden-visibility-subclass.cpp (revision ba874ad83ed7c482e5da51385a6df0647f3b5c1a)
1*ba874ad8SJake Ehrlich // RUN: %clang_cc1 -triple x86_64-linux-unknown -emit-llvm %s -o - | FileCheck %s
2*ba874ad8SJake Ehrlich 
3*ba874ad8SJake Ehrlich #pragma GCC visibility push(hidden)
4*ba874ad8SJake Ehrlich 
5*ba874ad8SJake Ehrlich struct Base {
6*ba874ad8SJake Ehrlich   virtual ~Base() = default;
7*ba874ad8SJake Ehrlich   virtual void* Alloc() = 0;
8*ba874ad8SJake Ehrlich };
9*ba874ad8SJake Ehrlich 
10*ba874ad8SJake Ehrlich class Child : public Base {
11*ba874ad8SJake Ehrlich public:
12*ba874ad8SJake Ehrlich   Child() = default;
13*ba874ad8SJake Ehrlich   void* Alloc();
14*ba874ad8SJake Ehrlich };
15*ba874ad8SJake Ehrlich 
test()16*ba874ad8SJake Ehrlich void test() {
17*ba874ad8SJake Ehrlich   Child x;
18*ba874ad8SJake Ehrlich }
19*ba874ad8SJake Ehrlich 
20*ba874ad8SJake Ehrlich // CHECK: @_ZTV5Child = external hidden unnamed_addr constant
21