brintos

brintos / llvm-project-archived public Read only

0
0
Text · 753 B · a64ca82 Raw
43 lines · cpp
1// RUN: %clang_cc1 -triple x86_64-unknown-unknown -fsyntax-only -verify -std=c++2a %s2//  expected-no-diagnostics3 4struct Empty {};5 6struct A {7  [[no_unique_address]] Empty e;8  char x;9};10 11static_assert(__has_unique_object_representations(A));12 13struct B {14  char x;15  [[no_unique_address]] Empty e;16};17 18static_assert(__has_unique_object_representations(B));19 20struct C {21  char x;22  [[no_unique_address]] Empty e1;23  [[no_unique_address]] Empty e2;24};25 26static_assert(!__has_unique_object_representations(C));27 28namespace TailPaddingReuse {29struct A {30private:31  int a;32 33public:34  char b;35};36 37struct B {38  [[no_unique_address]] A a;39  char c[3];40};41} // namespace TailPaddingReuse42static_assert(__has_unique_object_representations(TailPaddingReuse::B));43