[clang][Interp] DerivedToBase casts
authorTimm Bäder <tbaeder@redhat.com>
Mon, 7 Nov 2022 13:19:48 +0000 (14:19 +0100)
committerTimm Bäder <tbaeder@redhat.com>
Fri, 11 Nov 2022 07:38:06 +0000 (08:38 +0100)
Differential Revision: https://reviews.llvm.org/D137545

clang/lib/AST/Interp/ByteCodeExprGen.cpp
clang/test/AST/Interp/records.cpp

index 91b9809..b01c428 100644 (file)
@@ -107,7 +107,8 @@ bool ByteCodeExprGen<Emitter>::VisitCastExpr(const CastExpr *CE) {
         });
   }
 
-  case CK_UncheckedDerivedToBase: {
+  case CK_UncheckedDerivedToBase:
+  case CK_DerivedToBase: {
     if (!this->visit(SubExpr))
       return false;
 
index d8ac723..f49a673 100644 (file)
@@ -245,6 +245,8 @@ namespace MI {
   static_assert(c.a == 10, "");
   static_assert(c.b == 20, "");
 
+  constexpr const A *aPointer = &c;
+  constexpr const B *bPointer = &c;
 
   class D : private A, private B {
     public: