[PATCH] D150209: [clang][Interp] Add more shift error checking
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Thu May 11 11:00:12 PDT 2023
aaron.ballman added inline comments.
================
Comment at: clang/test/AST/Interp/shifts.cpp:165-171
+ constexpr int negativeShift() { // cxx17-error {{never produces a constant expression}} \
+ // ref-cxx17-error {{never produces a constant expression}}
+ return -1 << 2; // cxx17-warning {{shifting a negative signed value is undefined}} \
+ // ref-cxx17-warning {{shifting a negative signed value is undefined}} \
+ // cxx17-note {{left shift of negative value -1}} \
+ // ref-cxx17-note {{left shift of negative value -1}}
+ }
----------------
I'd like a test along the lines of:
```
constexpr int foo(int a) {
return -a << 2;
}
static_assert(foo(10)); // Should fail
constexpr int a = -2;
static_assert(foo(a)); // Should be fine
static_assert(foo(-a)); // Should fail
```
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D150209/new/
https://reviews.llvm.org/D150209
More information about the cfe-commits
mailing list