https://github.com/tbaederr created https://github.com/llvm/llvm-project/pull/185903
We already did that when creating the fields. Look at the `PrimType` saved in the `Descriptor` instead. >From 50baf68fd03eb333f30f17b4558580772b6efb18 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Timm=20B=C3=A4der?= <[email protected]> Date: Wed, 11 Mar 2026 16:14:25 +0100 Subject: [PATCH] struct desc --- clang/lib/AST/ByteCode/Pointer.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/clang/lib/AST/ByteCode/Pointer.cpp b/clang/lib/AST/ByteCode/Pointer.cpp index f4352e7edf5f8..30e73c6a93c62 100644 --- a/clang/lib/AST/ByteCode/Pointer.cpp +++ b/clang/lib/AST/ByteCode/Pointer.cpp @@ -838,27 +838,28 @@ std::optional<APValue> Pointer::toRValue(const Context &Ctx, R = APValue(APValue::UninitStruct(), NB, NF); - for (unsigned I = 0; I < NF; ++I) { + for (unsigned I = 0; I != NF; ++I) { const Record::Field *FD = Record->getField(I); - QualType FieldTy = FD->Decl->getType(); + const Descriptor *Desc = FD->Desc; const Pointer &FP = Ptr.atField(FD->Offset); APValue &Value = R.getStructField(I); - - if (OptPrimType T = Ctx.classify(FieldTy)) { - TYPE_SWITCH(*T, Value = FP.deref<T>().toAPValue(ASTCtx)); + if (Desc->isPrimitive()) { + TYPE_SWITCH(Desc->getPrimType(), + Value = FP.deref<T>().toAPValue(ASTCtx)); } else { + QualType FieldTy = FD->Decl->getType(); Ok &= Composite(FieldTy, FP, Value); } } - for (unsigned I = 0; I < NB; ++I) { + for (unsigned I = 0; I != NB; ++I) { const Record::Base *BD = Record->getBase(I); QualType BaseTy = Ctx.getASTContext().getCanonicalTagType(BD->Decl); const Pointer &BP = Ptr.atField(BD->Offset); Ok &= Composite(BaseTy, BP, R.getStructBase(I)); } - for (unsigned I = 0; I < NV; ++I) { + for (unsigned I = 0; I != NV; ++I) { const Record::Base *VD = Record->getVirtualBase(I); QualType VirtBaseTy = Ctx.getASTContext().getCanonicalTagType(VD->Decl); _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
