[clang] [clang] Implement `__is_pointer_interconvertible_base_of()` (PR #88473)

via cfe-commits cfe-commits at lists.llvm.org
Fri Apr 12 01:21:09 PDT 2024


================
@@ -6082,6 +6082,22 @@ static bool EvaluateBinaryTypeTrait(Sema &Self, TypeTrait BTT, const TypeSourceI
       Self.Diag(Rhs->getTypeLoc().getBeginLoc(), diag::err_vla_unsupported)
           << 1 << tok::kw___is_layout_compatible;
     return Self.IsLayoutCompatible(LhsT, RhsT);
+  }
+  case BTT_IsPointerInterconvertibleBaseOf: {
+    if (!LhsT->isUnionType() && !RhsT->isUnionType() &&
+        !Self.getASTContext().hasSameUnqualifiedType(LhsT, RhsT)) {
+      Self.RequireCompleteType(Rhs->getTypeLoc().getBeginLoc(), RhsT,
+                               diag::err_incomplete_type);
----------------
cor3ntin wrote:

There should be a test for that.

https://github.com/llvm/llvm-project/pull/88473


More information about the cfe-commits mailing list