================
@@ -2720,6 +2720,22 @@ TEST_F(ConstantRangeTest, binaryAnd) {
   EXPECT_EQ(R16_32.binaryAnd(R0_99), R0_32);
   EXPECT_EQ(R0_99.binaryAnd(R16_32), R0_32);
 
+  // 'And' with leading bits are masked (with common leading bits stripped)
----------------
zsrkmyn wrote:

'And' op is tricky, since it operates regardless of the signedness and all 
ranges can be treated as unsigned. E.g., a range (with bitwidth=8) `[1, -10)` 
can be treated as `[1, 246)` because of the nature of 2's complement; 
similarly, range `[-3, -1)` can be treated as `[253, 255)`; and results won't 
be affected. And I think it's how `ConstantRange` designed.

I'll add a test anyway.

https://github.com/llvm/llvm-project/pull/120352
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to