[llvm] 8a4293f - [Loads] Require Align in isDereferenceableAndAlignedPointer() (NFC)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Fri Jan 28 07:23:39 PST 2022
Author: Nikita Popov
Date: 2022-01-28T16:23:32+01:00
New Revision: 8a4293f3ef2b3a93ec309d6613f1bc791fafb446
URL: https://github.com/llvm/llvm-project/commit/8a4293f3ef2b3a93ec309d6613f1bc791fafb446
DIFF: https://github.com/llvm/llvm-project/commit/8a4293f3ef2b3a93ec309d6613f1bc791fafb446.diff
LOG: [Loads] Require Align in isDereferenceableAndAlignedPointer() (NFC)
Now that loads always have an alignment, we should not perform an
ABI alignment fallback here.
Added:
Modified:
llvm/include/llvm/Analysis/Loads.h
llvm/lib/Analysis/Loads.cpp
llvm/lib/Analysis/MemDerefPrinter.cpp
llvm/lib/Analysis/ValueTracking.cpp
Removed:
################################################################################
diff --git a/llvm/include/llvm/Analysis/Loads.h b/llvm/include/llvm/Analysis/Loads.h
index 3db501c51a171..09bf98d324ed5 100644
--- a/llvm/include/llvm/Analysis/Loads.h
+++ b/llvm/include/llvm/Analysis/Loads.h
@@ -42,8 +42,7 @@ bool isDereferenceablePointer(const Value *V, Type *Ty,
/// performs context-sensitive analysis and returns true if the pointer is
/// dereferenceable at the specified instruction.
bool isDereferenceableAndAlignedPointer(const Value *V, Type *Ty,
- MaybeAlign Alignment,
- const DataLayout &DL,
+ Align Alignment, const DataLayout &DL,
const Instruction *CtxI = nullptr,
const DominatorTree *DT = nullptr,
const TargetLibraryInfo *TLI = nullptr);
diff --git a/llvm/lib/Analysis/Loads.cpp b/llvm/lib/Analysis/Loads.cpp
index 0fbf1db0685dc..cd0d4d6b9ca8c 100644
--- a/llvm/lib/Analysis/Loads.cpp
+++ b/llvm/lib/Analysis/Loads.cpp
@@ -208,7 +208,7 @@ bool llvm::isDereferenceableAndAlignedPointer(const Value *V, Align Alignment,
}
bool llvm::isDereferenceableAndAlignedPointer(const Value *V, Type *Ty,
- MaybeAlign MA,
+ Align Alignment,
const DataLayout &DL,
const Instruction *CtxI,
const DominatorTree *DT,
@@ -223,8 +223,6 @@ bool llvm::isDereferenceableAndAlignedPointer(const Value *V, Type *Ty,
// determine the exact offset to the attributed variable, we can use that
// information here.
- // Require ABI alignment for loads without alignment specification
- const Align Alignment = DL.getValueOrABITypeAlignment(MA, Ty);
APInt AccessSize(DL.getPointerTypeSizeInBits(V->getType()),
DL.getTypeStoreSize(Ty));
return isDereferenceableAndAlignedPointer(V, Alignment, AccessSize, DL, CtxI,
diff --git a/llvm/lib/Analysis/MemDerefPrinter.cpp b/llvm/lib/Analysis/MemDerefPrinter.cpp
index 30937a2e4931e..82617c7256a57 100644
--- a/llvm/lib/Analysis/MemDerefPrinter.cpp
+++ b/llvm/lib/Analysis/MemDerefPrinter.cpp
@@ -59,8 +59,8 @@ bool MemDerefPrinter::runOnFunction(Function &F) {
Value *PO = LI->getPointerOperand();
if (isDereferenceablePointer(PO, LI->getType(), DL))
Deref.push_back(PO);
- if (isDereferenceableAndAlignedPointer(PO, LI->getType(),
- MaybeAlign(LI->getAlign()), DL))
+ if (isDereferenceableAndAlignedPointer(PO, LI->getType(), LI->getAlign(),
+ DL))
DerefAndAligned.insert(PO);
}
}
@@ -94,8 +94,8 @@ PreservedAnalyses MemDerefPrinterPass::run(Function &F,
Value *PO = LI->getPointerOperand();
if (isDereferenceablePointer(PO, LI->getType(), DL))
Deref.push_back(PO);
- if (isDereferenceableAndAlignedPointer(PO, LI->getType(),
- MaybeAlign(LI->getAlign()), DL))
+ if (isDereferenceableAndAlignedPointer(PO, LI->getType(), LI->getAlign(),
+ DL))
DerefAndAligned.insert(PO);
}
}
diff --git a/llvm/lib/Analysis/ValueTracking.cpp b/llvm/lib/Analysis/ValueTracking.cpp
index 34358739f9a85..c14bdb8bc262e 100644
--- a/llvm/lib/Analysis/ValueTracking.cpp
+++ b/llvm/lib/Analysis/ValueTracking.cpp
@@ -4559,8 +4559,8 @@ bool llvm::isSafeToSpeculativelyExecute(const Value *V,
return false;
const DataLayout &DL = LI->getModule()->getDataLayout();
return isDereferenceableAndAlignedPointer(
- LI->getPointerOperand(), LI->getType(), MaybeAlign(LI->getAlign()), DL,
- CtxI, DT, TLI);
+ LI->getPointerOperand(), LI->getType(), LI->getAlign(), DL, CtxI, DT,
+ TLI);
}
case Instruction::Call: {
auto *CI = cast<const CallInst>(Inst);
More information about the llvm-commits
mailing list