1 // RUN: %clang_cc1 -triple=x86_64-pc-linux-gnu -Wover-aligned %s -isystem %S/Inputs -verify 2 3 // This test ensures that we still get the warning even if we #include <new> 4 // where the header here simulates <new>. 5 #include <warn-new-overaligned-3.h> 6 7 namespace test1 { 8 struct Test { 9 template <typename T> 10 struct SeparateCacheLines { 11 T data; 12 } __attribute__((aligned(256))); 13 14 SeparateCacheLines<int> high_contention_data[10]; 15 }; 16 helper()17void helper() { 18 Test t; 19 new Test; // expected-warning {{type 'test1::Test' requires 256 bytes of alignment and the default allocator only guarantees}} 20 new Test[10]; // expected-warning {{type 'test1::Test' requires 256 bytes of alignment and the default allocator only guarantees}} 21 } 22 } 23 24 namespace test2 { 25 struct helper { int i __attribute__((aligned(256))); }; 26 27 struct Placement { Placementtest2::Placement28 Placement() { 29 new (d) helper(); 30 } 31 helper *d; 32 }; 33 } 34