forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			34 lines
		
	
	
		
			888 B
		
	
	
	
		
			C++
		
	
	
	
			
		
		
	
	
			34 lines
		
	
	
		
			888 B
		
	
	
	
		
			C++
		
	
	
	
| // RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -Wover-aligned %s -isystem %S/Inputs -verify
 | |
| 
 | |
| // This test ensures that we still get the warning even if we #include <new>
 | |
| // where the header here simulates <new>.
 | |
| #include <warn-new-overaligned-3.h>
 | |
| 
 | |
| namespace test1 {
 | |
| struct Test {
 | |
|   template <typename T>
 | |
|   struct SeparateCacheLines {
 | |
|     T data;
 | |
|   } __attribute__((aligned(256)));
 | |
| 
 | |
|   SeparateCacheLines<int> high_contention_data[10];
 | |
| };
 | |
| 
 | |
| void helper() {
 | |
|   Test t;
 | |
|   new Test;  // expected-warning {{type 'test1::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
 | |
|   new Test[10];  // expected-warning {{type 'test1::Test' requires 256 bytes of alignment and the default allocator only guarantees}}
 | |
| }
 | |
| }
 | |
| 
 | |
| namespace test2 {
 | |
| struct helper { int i __attribute__((aligned(256))); };
 | |
| 
 | |
| struct Placement {
 | |
|   Placement() {
 | |
|     new (d) helper();
 | |
|   }
 | |
|   helper *d;
 | |
| };
 | |
| }
 |