33 lines
		
	
	
		
			813 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			813 B
		
	
	
	
		
			C++
		
	
	
	
// 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);
 | 
						|
}
 |