| // RUN: %clang_cc1 -O2 -fvisibility hidden -std=c++11 -emit-llvm -o - -triple x86_64-apple-darwin10 %s | FileCheck %s |
| |
| // Ensure that available_externally functions eliminated at -O2 are now |
| // declarations, and are not emitted as hidden with -fvisibility=hidden, |
| // but rather with default visibility. |
| struct Filter { |
| virtual void Foo(); |
| int a; |
| }; |
| |
| class Message{}; |
| class Sender { |
| public: |
| virtual bool Send(Message* msg) = 0; |
| |
| protected: |
| virtual ~Sender() {} |
| }; |
| |
| // CHECK: declare zeroext i1 @_ZThn16_N17SyncMessageFilter4SendEP7Message |
| class SyncMessageFilter : public Filter, public Sender { |
| public: |
| bool Send(Message* message) override; |
| }; |
| |
| class TestSyncMessageFilter : public SyncMessageFilter { |
| }; |
| |
| int main() { |
| TestSyncMessageFilter *f = new TestSyncMessageFilter; |
| f->Send(new Message); |
| } |