Author: Aaron Ballman Date: 2023-10-18T12:16:33-04:00 New Revision: e7b827e11bd36cb7056538d05761039af9ced60d
URL: https://github.com/llvm/llvm-project/commit/e7b827e11bd36cb7056538d05761039af9ced60d DIFF: https://github.com/llvm/llvm-project/commit/e7b827e11bd36cb7056538d05761039af9ced60d.diff LOG: Add a FIXME comment; NFC The constant expression engines use a list of note diagnostics to report back whether an evaluation is a valid constant expression or not. This requires the engines to generate those note diagnostics, and that can be expensive in cases where we're converting an APValue to a string as a streamed argument to the note. If we're going to display the note, then that expense is warranted. However, there are operations looking for a yes/no answer to whether something is a constant expression and won't display the diagnostics at all. Those uses are paying an expense they shouldn't have to. Added: Modified: clang/include/clang/AST/Expr.h Removed: ################################################################################ diff --git a/clang/include/clang/AST/Expr.h b/clang/include/clang/AST/Expr.h index b69c616b0090365..638f886edd095f1 100644 --- a/clang/include/clang/AST/Expr.h +++ b/clang/include/clang/AST/Expr.h @@ -607,6 +607,13 @@ class Expr : public ValueStmt { /// foldable. If the expression is foldable, but not a constant expression, /// the notes will describes why it isn't a constant expression. If the /// expression *is* a constant expression, no notes will be produced. + /// + /// FIXME: this causes significant performance concerns and should be + /// refactored at some point. Not all evaluations of the constant + /// expression interpreter will display the given diagnostics, this means + /// those kinds of uses are paying the expense of generating a diagnostic + /// (which may include expensive operations like converting APValue objects + /// to a string representation). SmallVectorImpl<PartialDiagnosticAt> *Diag = nullptr; EvalStatus() = default; _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits