Author: Timm Bäder Date: 2024-07-22T16:59:31+02:00 New Revision: 613d2c393992eee470405f1859aaf5fd1837e36c
URL: https://github.com/llvm/llvm-project/commit/613d2c393992eee470405f1859aaf5fd1837e36c DIFF: https://github.com/llvm/llvm-project/commit/613d2c393992eee470405f1859aaf5fd1837e36c.diff LOG: [clang][Interp][NFC] Avoid hitting an assertion in invalid code Added: Modified: clang/lib/AST/Interp/Pointer.cpp Removed: ################################################################################ diff --git a/clang/lib/AST/Interp/Pointer.cpp b/clang/lib/AST/Interp/Pointer.cpp index 229007c6d720a..3324691cdb7b7 100644 --- a/clang/lib/AST/Interp/Pointer.cpp +++ b/clang/lib/AST/Interp/Pointer.cpp @@ -149,6 +149,10 @@ APValue Pointer::toAPValue(const ASTContext &ASTCtx) const { CharUnits Offset = CharUnits::Zero(); auto getFieldOffset = [&](const FieldDecl *FD) -> CharUnits { + // This shouldn't happen, but if it does, don't crash inside + // getASTRecordLayout. + if (FD->getParent()->isInvalidDecl()) + return CharUnits::Zero(); const ASTRecordLayout &Layout = ASTCtx.getASTRecordLayout(FD->getParent()); unsigned FieldIndex = FD->getFieldIndex(); return ASTCtx.toCharUnitsFromBits(Layout.getFieldOffset(FieldIndex)); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits