[llvm] [Attributor] Propagate alignment through ptrmask (PR #150158)

Matt Arsenault via llvm-commits llvm-commits at lists.llvm.org
Wed Sep 24 21:17:53 PDT 2025


================
@@ -5187,6 +5187,58 @@ struct AADereferenceableCallSiteReturned final
 // ------------------------ Align Argument Attribute ------------------------
 
 namespace {
+
+Align getKnownAlignForIntrinsic(Attributor &A, AAAlign &QueryingAA,
+                                const IntrinsicInst &II) {
+  switch (II.getIntrinsicID()) {
+  case Intrinsic::ptrmask: {
+    const auto *ConstVals = A.getAAFor<AAPotentialConstantValues>(
+        QueryingAA, IRPosition::value(*II.getOperand(1)), DepClassTy::NONE);
+    const auto *AlignAA = A.getAAFor<AAAlign>(QueryingAA, IRPosition::value(II),
+                                              DepClassTy::NONE);
+    if (ConstVals && ConstVals->isValidState() && ConstVals->isAtFixpoint()) {
+      unsigned ShiftValue =
+          std::min(ConstVals->getAssumedMinTrailingZeros(), (unsigned)63);
----------------
arsenm wrote:

```suggestion
          std::min(ConstVals->getAssumedMinTrailingZeros(), Value::MaxAlignmentExponent);
```

I forgot the maximum alignment is only 32-bits anyway

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


More information about the llvm-commits mailing list