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
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits