Home | History | Annotate | Download | only in SemaCXX
      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