Home | History | Annotate | Download | only in CodeGen
      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