[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