================ @@ -5637,6 +5638,27 @@ static bool EvaluateUnaryTypeTrait(Sema &Self, TypeTrait UTT, return false; case UTT_IsTriviallyEqualityComparable: return isTriviallyEqualityComparableType(Self, T, KeyLoc); + case UTT_IsImplicitLifetime: { + DiagnoseVLAInCXXTypeTrait(Self, TInfo, + tok::kw___builtin_is_implicit_lifetime); + QualType UnqualT = T->getCanonicalTypeUnqualified(); + if (UnqualT->isScalarType()) ---------------- Endilll wrote:
I updated the patch with more tests for FP and extensions. I discovered that vector types are not considered implicit-lifetime, so I made them so. Here are tests I left out, because Clang told me ~~to go away~~ that they are not supported on the target or require special compiler flags (matrix). I took that as going over the board w.r.t. other type traits tests. ```cpp typedef float m4x4_t __attribute__((matrix_type(4, 4))); static_assert(__builtin_is_implicit_lifetime(__SVInt8_t)); static_assert(__builtin_is_implicit_lifetime(__rvv_int8mf8_t)); static_assert(__builtin_is_implicit_lifetime(half)); static_assert(__builtin_is_implicit_lifetime(__float128)); static_assert(__builtin_is_implicit_lifetime(__ibm128)); static_assert(__builtin_is_implicit_lifetime(__externref_t)); static_assert(__builtin_is_implicit_lifetime(__externref_t[2])); static_assert(__builtin_is_implicit_lifetime(m4x4_t)); ``` @AaronBallman Let me know if something is surprising to you, or if I forgot anything. https://github.com/llvm/llvm-project/pull/101807 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits