1 | // RUN: %clang_cc1 -O2 -fvisibility hidden -std=c++11 -emit-llvm -o - -triple x86_64-apple-darwin10 %s | FileCheck %s |
2 | |
3 | // Ensure that available_externally functions eliminated at -O2 are now |
4 | // declarations, and are not emitted as hidden with -fvisibility=hidden, |
5 | // but rather with default visibility. |
6 | struct Filter { |
7 | virtual void Foo(); |
8 | int a; |
9 | }; |
10 | |
11 | class Message{}; |
12 | class Sender { |
13 | public: |
14 | virtual bool Send(Message* msg) = 0; |
15 | |
16 | protected: |
17 | virtual ~Sender() {} |
18 | }; |
19 | |
20 | // CHECK: declare zeroext i1 @_ZThn16_N17SyncMessageFilter4SendEP7Message |
21 | class SyncMessageFilter : public Filter, public Sender { |
22 | public: |
23 | bool Send(Message* message) override; |
24 | }; |
25 | |
26 | class TestSyncMessageFilter : public SyncMessageFilter { |
27 | }; |
28 | |
29 | int main() { |
30 | TestSyncMessageFilter *f = new TestSyncMessageFilter; |
31 | f->Send(new Message); |
32 | } |
33 | |