forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			33 lines
		
	
	
		
			814 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			814 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);
 | |
| }
 |