================ @@ -0,0 +1,272 @@ +// RUN: %clang_cc1 -std=c++2c -verify %s + +class Trivial {}; +struct NonRelocatable { + ~NonRelocatable(); +}; +static NonRelocatable NonRelocatable_g; + +class A trivially_relocatable_if_eligible {}; +class B trivially_relocatable_if_eligible : Trivial{}; +class C trivially_relocatable_if_eligible { + int a; + void* b; + int c[3]; + Trivial d[3]; + NonRelocatable& e = NonRelocatable_g; +}; +class D trivially_relocatable_if_eligible : Trivial {}; +class E trivially_relocatable_if_eligible : virtual Trivial {}; + +class F trivially_relocatable_if_eligible : NonRelocatable {}; + +class I trivially_relocatable_if_eligible { + NonRelocatable a; + NonRelocatable b[1]; + const NonRelocatable c; + const NonRelocatable d[1]; +}; + +class J trivially_relocatable_if_eligible: virtual Trivial, NonRelocatable { + NonRelocatable a; +}; + +class G trivially_relocatable_if_eligible { + G(G&&); +}; + +class H trivially_relocatable_if_eligible { + ~H(); +}; + +struct Incomplete; // expected-note {{forward declaration of 'Incomplete'}} +static_assert(__builtin_is_cpp_trivially_relocatable(Incomplete)); // expected-error {{incomplete type 'Incomplete' used in type trait expression}} +static_assert(__builtin_is_cpp_trivially_relocatable(Trivial)); +static_assert(__builtin_is_cpp_trivially_relocatable(G)); +static_assert(__builtin_is_cpp_trivially_relocatable(H)); +static_assert(__builtin_is_cpp_trivially_relocatable(int)); +static_assert(__builtin_is_cpp_trivially_relocatable(void*)); +static_assert(!__builtin_is_cpp_trivially_relocatable(int&)); +static_assert(!__builtin_is_cpp_trivially_relocatable(Trivial&)); +static_assert(__builtin_is_cpp_trivially_relocatable(const Trivial)); +static_assert(__builtin_is_cpp_trivially_relocatable(Trivial[1])); ---------------- Sirraide wrote:
Are VLA’s trivially relocatable? Either way, we probably want a test for that too https://github.com/llvm/llvm-project/pull/127636 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits