[clang] [clang][Interp] IntegralAP zero-init (PR #68081)

Timm Baeder via cfe-commits cfe-commits at lists.llvm.org
Thu Oct 12 23:14:42 PDT 2023


================
@@ -100,12 +100,13 @@ template <bool Signed> class IntegralAP final {
   }
   static IntegralAP from(const Boolean &B) {
     assert(false);
-    return IntegralAP::zero();
+    return IntegralAP::zero(1);
   }
 
-  static IntegralAP zero() {
-    assert(false);
-    return IntegralAP(0);
+  static IntegralAP zero(int32_t BitWidth) {
+    APSInt V =
+        APSInt(APInt(BitWidth, static_cast<int64_t>(0), Signed), !Signed);
----------------
tbaederr wrote:

I keep having to add this cast to `int64_t` because some Windows builders will otherwise complain because the `APInt` class has two constructors it can take:

```
APInt (unsigned numBits, uint64_t val, bool isSigned=false)
APInt (unsigned numBits, unsigned numWords, const uint64_t bigVal[])
```

and MSVC doesn't know which one to take.

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


More information about the cfe-commits mailing list