[PATCH] D137071: [clang][Interp] Implement missing compound assign operators
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Wed Nov 9 07:04:32 PST 2022
aaron.ballman added inline comments.
================
Comment at: clang/test/AST/Interp/literals.cpp:591
+
+ static_assert(IntDiv(INT_MIN, -1) == 0, "");
+
----------------
This one should fail for the same reason as `%`
================
Comment at: clang/test/AST/Interp/literals.cpp:553
+ static_assert(IntRem(2, 1) == 0, "");
+ static_assert(IntRem(9, 7) == 2, "");
+
----------------
tbaeder wrote:
> aaron.ballman wrote:
> > aaron.ballman wrote:
> > > ```
> > > static_assert(IntRem(9, 0) == 12, ""); // Not constexpr
> > > static_assert(IntRem(__INT_MIN__, -1) == 12, ""); // Not constexpr
> > > ```
> > Missed the test for __INT_MIN__ and -1?
> for rem, clang doesn't diagnose anything: https://godbolt.org/z/rhe5ezc54
That's a bug per https://eel.is/c++draft/expr.mul#4.sentence-3 because the resulting algebraic value is not representable in the type of the result.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D137071/new/
https://reviews.llvm.org/D137071
More information about the cfe-commits
mailing list