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 | |
17 | void 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 { |
28 | Placement() { |
29 | new (d) helper(); |
30 | } |
31 | helper *d; |
32 | }; |
33 | } |
34 | |