================ @@ -7379,6 +7379,14 @@ class RecoveryExpr final : public Expr, friend class ASTStmtWriter; }; +/// Insertion operator for diagnostics. This allows sending +/// Expr into a diagnostic with <<. +inline const StreamingDiagnostic &operator<<(const StreamingDiagnostic &DB, + const Expr *E) { + DB.AddTaggedVal(reinterpret_cast<uint64_t>(E), DiagnosticsEngine::ak_expr); ---------------- mizvekov wrote:
Yes, I had carefully reviewed it and I think it was fine, given the circumstances. For reference, here are all the other uses: ```C++ clang/include/clang/AST/Attr.h: DB.AddTaggedVal(reinterpret_cast<uint64_t>(At), DiagnosticsEngine::ak_attr); clang/include/clang/AST/Expr.h: DB.AddTaggedVal(reinterpret_cast<uint64_t>(E), DiagnosticsEngine::ak_expr); clang/include/clang/AST/NestedNameSpecifier.h: DB.AddTaggedVal(reinterpret_cast<uint64_t>(NNS), clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(reinterpret_cast<intptr_t>(Str), clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(I, DiagnosticsEngine::ak_sint); clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(I, DiagnosticsEngine::ak_sint); clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(I, DiagnosticsEngine::ak_sint); clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(I, DiagnosticsEngine::ak_sint); clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(I, DiagnosticsEngine::ak_uint); clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(I, DiagnosticsEngine::ak_uint); clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(I, DiagnosticsEngine::ak_uint); clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(static_cast<unsigned>(I), DiagnosticsEngine::ak_tokenkind); clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(reinterpret_cast<intptr_t>(II), clang/include/clang/Basic/Diagnostic.h: DB.AddTaggedVal(reinterpret_cast<intptr_t>(DC), clang/include/clang/Basic/PartialDiagnostic.h: DB.AddTaggedVal(DiagStorage->DiagArgumentsVal[i], clang/include/clang/Sema/ParsedAttr.h: DB.AddTaggedVal(reinterpret_cast<uint64_t>(At.getAttrName()), clang/include/clang/Sema/ParsedAttr.h: DB.AddTaggedVal(reinterpret_cast<uint64_t>(At->getAttrName()), clang/include/clang/Sema/ParsedAttr.h: DB.AddTaggedVal(reinterpret_cast<uint64_t>(CI.getAttrName()), clang/include/clang/Sema/ParsedAttr.h: DB.AddTaggedVal(reinterpret_cast<uint64_t>(CI->getAttrName()), ``` So 6 uint64_t vs 3 intptr_t (excluding this patch). Without going on and changing everything else, there is no single answer here which would be satisfy everyone. https://github.com/llvm/llvm-project/pull/134693 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits