From 48cad712437291f48443b43fb4d91d9ea2e99ef5 Mon Sep 17 00:00:00 2001 From: Sanjoy Das Date: Thu, 2 Jun 2016 00:52:53 +0000 Subject: Inline isDereferenceableFromAttribute; NFC Now that `Value::getPointerDereferenceableBytes` looks beyond just attributes, the name `isDereferenceableFromAttribute` is misleading. Just inline the function, since it is small and only used once. llvm-svn: 271456 --- llvm/lib/Analysis/Loads.cpp | 27 ++++++++------------------- 1 file changed, 8 insertions(+), 19 deletions(-) (limited to 'llvm/lib/Analysis/Loads.cpp') diff --git a/llvm/lib/Analysis/Loads.cpp b/llvm/lib/Analysis/Loads.cpp index aa0b62638b1..a687eccf3e9 100644 --- a/llvm/lib/Analysis/Loads.cpp +++ b/llvm/lib/Analysis/Loads.cpp @@ -25,23 +25,6 @@ using namespace llvm; -static bool isDereferenceableFromAttribute(const Value *BV, APInt Size, - const DataLayout &DL, - const Instruction *CtxI, - const DominatorTree *DT, - const TargetLibraryInfo *TLI) { - bool CheckForNonNull = false; - APInt DerefBytes(Size.getBitWidth(), - BV->getPointerDereferenceableBytes(DL, CheckForNonNull)); - - if (DerefBytes.getBoolValue()) - if (DerefBytes.uge(Size)) - if (!CheckForNonNull || isKnownNonNullAt(BV, CtxI, DT, TLI)) - return true; - - return false; -} - static bool isAligned(const Value *Base, APInt Offset, unsigned Align, const DataLayout &DL) { APInt BaseAlign(Offset.getBitWidth(), Base->getPointerAlignment(DL)); @@ -80,8 +63,14 @@ static bool isDereferenceableAndAlignedPointer( return isDereferenceableAndAlignedPointer(BC->getOperand(0), Align, Size, DL, CtxI, DT, TLI, Visited); - if (isDereferenceableFromAttribute(V, Size, DL, CtxI, DT, TLI)) - return isAligned(V, Align, DL); + bool CheckForNonNull = false; + APInt KnownDerefBytes(Size.getBitWidth(), + V->getPointerDereferenceableBytes(DL, CheckForNonNull)); + if (KnownDerefBytes.getBoolValue()) { + if (KnownDerefBytes.uge(Size)) + if (!CheckForNonNull || isKnownNonNullAt(V, CtxI, DT, TLI)) + return isAligned(V, Align, DL); + } // For GEPs, determine if the indexing lands within the allocated object. if (const GEPOperator *GEP = dyn_cast(V)) { -- cgit v1.2.3