https://github.com/AaronBallman commented:
Thank you for this, I think the clang-tidy portions make a lot of sense. However, I do have concerns about the changes to Clang. I don't think we want constant expression evaluation to fail based on an input parameter. For one, it's a bit odd because the constant expression is valid. But also, I don't think it will scale well if we want to add additional constraints on the evaluation in the future. I think a better approach would be a new interface which doesn't return the `APValue`/`APSInt` directly, but instead returns something more like: ``` struct EvalResult { APValue Value; unsigned UnsignedWraparoundOccurred : 1; unsigned VLAWasUsed : 1; // Just an example, not a real suggestion unsigned DidSomeOtherQuestionableThing : 1; // Also an example :-) }; ``` This way, we can track whatever interesting details we want regarding the computation of the resulting value in a more extensible way, and we don't need to fail the constant expression evaluation itself. CC @tbaederr who may also have opinions on constant expression evaluations or alternative ideas to consider https://github.com/llvm/llvm-project/pull/101073 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits