================
@@ -5637,6 +5638,38 @@ 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);
+
+    // [basic.types.general] p9
+    // Scalar types, implicit-lifetime class types ([class.prop]),
+    // array types, and cv-qualified versions of these types
+    // are collectively called implicit-lifetime types.
+    QualType UnqualT = T->getCanonicalTypeUnqualified();
----------------
Endilll wrote:

After an offline discussion, I believe we agreed on not doing anything special 
for `_Atomic` for the lack of better alternatives. This can result in 
discrepancies between `__builtin_is_implicit_lifetime(std::atomic<T>)` (that 
might yield `true` depending on `std::atomic` implementation) and 
`__builtin_is_implicit_lifetime(_Atomic T)` (which is always `false`), but 
that's not new (https://godbolt.org/z/7e7954b8c).

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

Reply via email to