diff --git a/llvm/unittests/Support/TypeTraitsTest.cpp b/llvm/unittests/Support/TypeTraitsTest.cpp --- a/llvm/unittests/Support/TypeTraitsTest.cpp +++ b/llvm/unittests/Support/TypeTraitsTest.cpp @@ -6,6 +6,12 @@ // //===----------------------------------------------------------------------===// +#include "llvm/ADT/FunctionExtras.h" +#include "llvm/ADT/Optional.h" +#include "llvm/ADT/PointerIntPair.h" +#include "llvm/ADT/SmallString.h" +#include "llvm/ADT/SmallVector.h" +#include "llvm/ADT/StringRef.h" #include "llvm/Support/type_traits.h" #include "gtest/gtest.h" @@ -92,6 +98,26 @@ TrivialityTester(); } +// Test that the following ADT behave as expected wrt. trivially copyable trait +// +// NB: It is important that this trait behaves the same for (at least) these +// types for all supported compilers to prevent ABI issue when llvm is compiled +// with compiler A and an other project using llvm is compiled with compiler B. + +TEST(Triviality, ADT) { + + TrivialityTester, false, false>(); + TrivialityTester, false, false>(); + + TrivialityTester, false, false>(); + TrivialityTester, true, true>(); + TrivialityTester, false, false>(); + TrivialityTester(); + TrivialityTester, true, true>(); + TrivialityTester, true, true>(); + TrivialityTester, true, true>(); +} + } // namespace triviality } // end anonymous namespace