[clang] [clang][Interp] Implement inc/dec for IntegralAP (PR #69597)

Timm Baeder via cfe-commits cfe-commits at lists.llvm.org
Thu Nov 2 02:22:33 PDT 2023


================
@@ -167,17 +169,13 @@ template <bool Signed> class IntegralAP final {
   }
 
   static bool increment(IntegralAP A, IntegralAP *R) {
-    // FIXME: Implement.
-    assert(false);
-    *R = IntegralAP(A.V - 1);
-    return false;
+    IntegralAP<Signed> One(1, A.bitWidth());
+    return add(A, One, A.bitWidth() + 1, R);
   }
 
   static bool decrement(IntegralAP A, IntegralAP *R) {
-    // FIXME: Implement.
-    assert(false);
-    *R = IntegralAP(A.V - 1);
-    return false;
+    IntegralAP<Signed> One(1, A.bitWidth());
+    return sub(A, One, A.bitWidth() + 1, R);
----------------
tbaederr wrote:

So the result can still be displayed on overflow/wraparound.

https://github.com/llvm/llvm-project/pull/69597


More information about the cfe-commits mailing list