[llvm] [ValueTracking] Allow tracking values through Integral AddrSpaceCasts (PR #70483)
    Nikita Popov via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Thu Mar 14 08:21:39 PDT 2024
    
    
  
================
@@ -1775,6 +1775,31 @@ static void computeKnownBitsFromOperator(const Operator *I,
                                   Depth + 1))
       computeKnownBits(I->getOperand(0), Known, Depth + 1, Q);
     break;
+  case Instruction::AddrSpaceCast: {
+    auto ASC = cast<AddrSpaceCastOperator>(I);
+    unsigned SrcAS = ASC->getSrcAddressSpace();
+    unsigned DestAS = ASC->getDestAddressSpace();
+
+    if (Q.DL.isNonIntegralAddressSpace(SrcAS) ||
+        Q.DL.isNonIntegralAddressSpace(DestAS))
+      break;
+
+    auto SrcSize = Q.DL.getPointerSizeInBits(SrcAS);
+    auto DstSize = Q.DL.getPointerSizeInBits(DestAS);
----------------
nikic wrote:
```suggestion
    unsigned SrcSize = Q.DL.getPointerSizeInBits(SrcAS);
    unsigned DstSize = Q.DL.getPointerSizeInBits(DestAS);
```
https://github.com/llvm/llvm-project/pull/70483
    
    
More information about the llvm-commits
mailing list