[clang] [ExprConstant] Handle shift overflow the same way as other kinds of overflow (PR #99579)
Eli Friedman via cfe-commits
cfe-commits at lists.llvm.org
Fri Jul 19 11:11:07 PDT 2024
================
@@ -142,7 +142,7 @@ constexpr int arb(int n) { // expected-note {{declared here}}
expected-note {{function parameter 'n' with unknown value cannot be used in a constant expression}}
}
constexpr long Overflow[(1 << 30) << 2]{}; // expected-warning {{requires 34 bits to represent}} \
- expected-warning {{variable length array folded to constant array as an extension}} \
+ expected-error {{variable length array declaration not allowed at file scope}} \
----------------
efriedma-quic wrote:
The diagnostic shouldn't be hard to fix; it's just a matter of using the form of Evaluate() that returns notes.
For the actual behavior here... we could pass the flag to allow undefined behavior when we do this folding, I guess, but I'd rather not. Or if we do, it should be a DefaultError diagnostic.
https://github.com/llvm/llvm-project/pull/99579
More information about the cfe-commits
mailing list