diff options
| author | Dan Gohman <gohman@apple.com> | 2010-10-19 18:00:02 +0000 | 
|---|---|---|
| committer | Dan Gohman <gohman@apple.com> | 2010-10-19 18:00:02 +0000 | 
| commit | f4c5fe73be872a91872001e29c9a7483e3c93930 (patch) | |
| tree | 13c46111fb490af4f5281b38cd6752ec1eb6a9e5 /llvm/lib | |
| parent | 2c8028bcf40f4bb44b3c73f788d2f63d2d353d9a (diff) | |
| download | bcm5719-llvm-f4c5fe73be872a91872001e29c9a7483e3c93930.tar.gz bcm5719-llvm-f4c5fe73be872a91872001e29c9a7483e3c93930.zip  | |
Change AliasAnalysis and its clients to use uint64_t instead of unsigned
for representing object sizes, for consistency with other parts of LLVM.
llvm-svn: 116831
Diffstat (limited to 'llvm/lib')
| -rw-r--r-- | llvm/lib/Analysis/AliasAnalysis.cpp | 2 | ||||
| -rw-r--r-- | llvm/lib/Analysis/AliasAnalysisEvaluator.cpp | 6 | ||||
| -rw-r--r-- | llvm/lib/Analysis/AliasSetTracker.cpp | 18 | ||||
| -rw-r--r-- | llvm/lib/Analysis/BasicAliasAnalysis.cpp | 50 | ||||
| -rw-r--r-- | llvm/lib/Analysis/Lint.cpp | 6 | 
5 files changed, 42 insertions, 40 deletions
diff --git a/llvm/lib/Analysis/AliasAnalysis.cpp b/llvm/lib/Analysis/AliasAnalysis.cpp index ab12b0df31d..e5fddabadd0 100644 --- a/llvm/lib/Analysis/AliasAnalysis.cpp +++ b/llvm/lib/Analysis/AliasAnalysis.cpp @@ -283,7 +283,7 @@ void AliasAnalysis::getAnalysisUsage(AnalysisUsage &AU) const {  /// getTypeStoreSize - Return the TargetData store size for the given type,  /// if known, or a conservative value otherwise.  /// -unsigned AliasAnalysis::getTypeStoreSize(const Type *Ty) { +uint64_t AliasAnalysis::getTypeStoreSize(const Type *Ty) {    return TD ? TD->getTypeStoreSize(Ty) : UnknownSize;  } diff --git a/llvm/lib/Analysis/AliasAnalysisEvaluator.cpp b/llvm/lib/Analysis/AliasAnalysisEvaluator.cpp index ddf8b192c73..e10b29cce0d 100644 --- a/llvm/lib/Analysis/AliasAnalysisEvaluator.cpp +++ b/llvm/lib/Analysis/AliasAnalysisEvaluator.cpp @@ -168,12 +168,12 @@ bool AAEval::runOnFunction(Function &F) {    // iterate over the worklist, and run the full (n^2)/2 disambiguations    for (SetVector<Value *>::iterator I1 = Pointers.begin(), E = Pointers.end();         I1 != E; ++I1) { -    unsigned I1Size = AliasAnalysis::UnknownSize; +    uint64_t I1Size = AliasAnalysis::UnknownSize;      const Type *I1ElTy = cast<PointerType>((*I1)->getType())->getElementType();      if (I1ElTy->isSized()) I1Size = AA.getTypeStoreSize(I1ElTy);      for (SetVector<Value *>::iterator I2 = Pointers.begin(); I2 != I1; ++I2) { -      unsigned I2Size = AliasAnalysis::UnknownSize; +      uint64_t I2Size = AliasAnalysis::UnknownSize;        const Type *I2ElTy =cast<PointerType>((*I2)->getType())->getElementType();        if (I2ElTy->isSized()) I2Size = AA.getTypeStoreSize(I2ElTy); @@ -200,7 +200,7 @@ bool AAEval::runOnFunction(Function &F) {      for (SetVector<Value *>::iterator V = Pointers.begin(), Ve = Pointers.end();           V != Ve; ++V) { -      unsigned Size = AliasAnalysis::UnknownSize; +      uint64_t Size = AliasAnalysis::UnknownSize;        const Type *ElTy = cast<PointerType>((*V)->getType())->getElementType();        if (ElTy->isSized()) Size = AA.getTypeStoreSize(ElTy); diff --git a/llvm/lib/Analysis/AliasSetTracker.cpp b/llvm/lib/Analysis/AliasSetTracker.cpp index 90923e81da5..7d05a9c35d9 100644 --- a/llvm/lib/Analysis/AliasSetTracker.cpp +++ b/llvm/lib/Analysis/AliasSetTracker.cpp @@ -88,7 +88,7 @@ void AliasSet::removeFromTracker(AliasSetTracker &AST) {  }  void AliasSet::addPointer(AliasSetTracker &AST, PointerRec &Entry, -                          unsigned Size, const MDNode *TBAAInfo, +                          uint64_t Size, const MDNode *TBAAInfo,                            bool KnownMustAlias) {    assert(!Entry.hasAliasSet() && "Entry already in set!"); @@ -138,7 +138,7 @@ void AliasSet::addCallSite(CallSite CS, AliasAnalysis &AA) {  /// aliasesPointer - Return true if the specified pointer "may" (or must)  /// alias one of the members in the set.  /// -bool AliasSet::aliasesPointer(const Value *Ptr, unsigned Size, +bool AliasSet::aliasesPointer(const Value *Ptr, uint64_t Size,                                const MDNode *TBAAInfo,                                AliasAnalysis &AA) const {    if (AliasTy == MustAlias) { @@ -210,7 +210,7 @@ void AliasSetTracker::clear() {  /// that may alias the pointer, merge them together and return the unified set.  ///  AliasSet *AliasSetTracker::findAliasSetForPointer(const Value *Ptr, -                                                  unsigned Size, +                                                  uint64_t Size,                                                    const MDNode *TBAAInfo) {    AliasSet *FoundSet = 0;    for (iterator I = begin(), E = end(); I != E; ++I) { @@ -229,7 +229,7 @@ AliasSet *AliasSetTracker::findAliasSetForPointer(const Value *Ptr,  /// containsPointer - Return true if the specified location is represented by  /// this alias set, false otherwise.  This does not modify the AST object or  /// alias sets. -bool AliasSetTracker::containsPointer(Value *Ptr, unsigned Size, +bool AliasSetTracker::containsPointer(Value *Ptr, uint64_t Size,                                        const MDNode *TBAAInfo) const {    for (const_iterator I = begin(), E = end(); I != E; ++I)      if (!I->Forward && I->aliasesPointer(Ptr, Size, TBAAInfo, AA)) @@ -258,7 +258,7 @@ AliasSet *AliasSetTracker::findAliasSetForCallSite(CallSite CS) {  /// getAliasSetForPointer - Return the alias set that the specified pointer  /// lives in. -AliasSet &AliasSetTracker::getAliasSetForPointer(Value *Pointer, unsigned Size, +AliasSet &AliasSetTracker::getAliasSetForPointer(Value *Pointer, uint64_t Size,                                                   const MDNode *TBAAInfo,                                                   bool *New) {    AliasSet::PointerRec &Entry = getEntryFor(Pointer); @@ -283,7 +283,7 @@ AliasSet &AliasSetTracker::getAliasSetForPointer(Value *Pointer, unsigned Size,    return AliasSets.back();  } -bool AliasSetTracker::add(Value *Ptr, unsigned Size, const MDNode *TBAAInfo) { +bool AliasSetTracker::add(Value *Ptr, uint64_t Size, const MDNode *TBAAInfo) {    bool NewPtr;    addPointer(Ptr, Size, TBAAInfo, AliasSet::NoModRef, NewPtr);    return NewPtr; @@ -414,7 +414,7 @@ void AliasSetTracker::remove(AliasSet &AS) {  }  bool -AliasSetTracker::remove(Value *Ptr, unsigned Size, const MDNode *TBAAInfo) { +AliasSetTracker::remove(Value *Ptr, uint64_t Size, const MDNode *TBAAInfo) {    AliasSet *AS = findAliasSetForPointer(Ptr, Size, TBAAInfo);    if (!AS) return false;    remove(*AS); @@ -422,7 +422,7 @@ AliasSetTracker::remove(Value *Ptr, unsigned Size, const MDNode *TBAAInfo) {  }  bool AliasSetTracker::remove(LoadInst *LI) { -  unsigned Size = AA.getTypeStoreSize(LI->getType()); +  uint64_t Size = AA.getTypeStoreSize(LI->getType());    const MDNode *TBAAInfo = LI->getMetadata(LLVMContext::MD_tbaa);    AliasSet *AS = findAliasSetForPointer(LI->getOperand(0), Size, TBAAInfo);    if (!AS) return false; @@ -431,7 +431,7 @@ bool AliasSetTracker::remove(LoadInst *LI) {  }  bool AliasSetTracker::remove(StoreInst *SI) { -  unsigned Size = AA.getTypeStoreSize(SI->getOperand(0)->getType()); +  uint64_t Size = AA.getTypeStoreSize(SI->getOperand(0)->getType());    const MDNode *TBAAInfo = SI->getMetadata(LLVMContext::MD_tbaa);    AliasSet *AS = findAliasSetForPointer(SI->getOperand(1), Size, TBAAInfo);    if (!AS) return false; diff --git a/llvm/lib/Analysis/BasicAliasAnalysis.cpp b/llvm/lib/Analysis/BasicAliasAnalysis.cpp index 4173bd00cd0..58244fc11c7 100644 --- a/llvm/lib/Analysis/BasicAliasAnalysis.cpp +++ b/llvm/lib/Analysis/BasicAliasAnalysis.cpp @@ -98,7 +98,7 @@ static bool isEscapeSource(const Value *V) {  /// isObjectSmallerThan - Return true if we can prove that the object specified  /// by V is smaller than Size. -static bool isObjectSmallerThan(const Value *V, unsigned Size, +static bool isObjectSmallerThan(const Value *V, uint64_t Size,                                  const TargetData &TD) {    const Type *AccessTy;    if (const GlobalVariable *GV = dyn_cast<GlobalVariable>(V)) { @@ -552,27 +552,27 @@ namespace {      // aliasGEP - Provide a bunch of ad-hoc rules to disambiguate a GEP      // instruction against another. -    AliasResult aliasGEP(const GEPOperator *V1, unsigned V1Size, -                         const Value *V2, unsigned V2Size, +    AliasResult aliasGEP(const GEPOperator *V1, uint64_t V1Size, +                         const Value *V2, uint64_t V2Size,                           const MDNode *V2TBAAInfo,                           const Value *UnderlyingV1, const Value *UnderlyingV2);      // aliasPHI - Provide a bunch of ad-hoc rules to disambiguate a PHI      // instruction against another. -    AliasResult aliasPHI(const PHINode *PN, unsigned PNSize, +    AliasResult aliasPHI(const PHINode *PN, uint64_t PNSize,                           const MDNode *PNTBAAInfo, -                         const Value *V2, unsigned V2Size, +                         const Value *V2, uint64_t V2Size,                           const MDNode *V2TBAAInfo);      /// aliasSelect - Disambiguate a Select instruction against another value. -    AliasResult aliasSelect(const SelectInst *SI, unsigned SISize, +    AliasResult aliasSelect(const SelectInst *SI, uint64_t SISize,                              const MDNode *SITBAAInfo, -                            const Value *V2, unsigned V2Size, +                            const Value *V2, uint64_t V2Size,                              const MDNode *V2TBAAInfo); -    AliasResult aliasCheck(const Value *V1, unsigned V1Size, +    AliasResult aliasCheck(const Value *V1, uint64_t V1Size,                             const MDNode *V1TBAATag, -                           const Value *V2, unsigned V2Size, +                           const Value *V2, uint64_t V2Size,                             const MDNode *V2TBAATag);    };  }  // End of anonymous namespace @@ -691,7 +691,7 @@ BasicAliasAnalysis::getModRefInfo(ImmutableCallSite CS,      default: break;      case Intrinsic::memcpy:      case Intrinsic::memmove: { -      unsigned Len = UnknownSize; +      uint64_t Len = UnknownSize;        if (ConstantInt *LenCI = dyn_cast<ConstantInt>(II->getArgOperand(2)))          Len = LenCI->getZExtValue();        Value *Dest = II->getArgOperand(0); @@ -707,7 +707,7 @@ BasicAliasAnalysis::getModRefInfo(ImmutableCallSite CS,        // Since memset is 'accesses arguments' only, the AliasAnalysis base class        // will handle it for the variable length case.        if (ConstantInt *LenCI = dyn_cast<ConstantInt>(II->getArgOperand(2))) { -        unsigned Len = LenCI->getZExtValue(); +        uint64_t Len = LenCI->getZExtValue();          Value *Dest = II->getArgOperand(0);          if (isNoAlias(Location(Dest, Len), Loc))            return NoModRef; @@ -727,7 +727,7 @@ BasicAliasAnalysis::getModRefInfo(ImmutableCallSite CS,      case Intrinsic::atomic_load_umin:        if (TD) {          Value *Op1 = II->getArgOperand(0); -        unsigned Op1Size = TD->getTypeStoreSize(Op1->getType()); +        uint64_t Op1Size = TD->getTypeStoreSize(Op1->getType());          MDNode *Tag = II->getMetadata(LLVMContext::MD_tbaa);          if (isNoAlias(Location(Op1, Op1Size, Tag), Loc))            return NoModRef; @@ -736,7 +736,7 @@ BasicAliasAnalysis::getModRefInfo(ImmutableCallSite CS,      case Intrinsic::lifetime_start:      case Intrinsic::lifetime_end:      case Intrinsic::invariant_start: { -      unsigned PtrSize = +      uint64_t PtrSize =          cast<ConstantInt>(II->getArgOperand(0))->getZExtValue();        if (isNoAlias(Location(II->getArgOperand(1),                               PtrSize, @@ -746,7 +746,7 @@ BasicAliasAnalysis::getModRefInfo(ImmutableCallSite CS,        break;      }      case Intrinsic::invariant_end: { -      unsigned PtrSize = +      uint64_t PtrSize =          cast<ConstantInt>(II->getArgOperand(1))->getZExtValue();        if (isNoAlias(Location(II->getArgOperand(2),                               PtrSize, @@ -767,8 +767,8 @@ BasicAliasAnalysis::getModRefInfo(ImmutableCallSite CS,  /// UnderlyingV2 is the same for V2.  ///  AliasAnalysis::AliasResult -BasicAliasAnalysis::aliasGEP(const GEPOperator *GEP1, unsigned V1Size, -                             const Value *V2, unsigned V2Size, +BasicAliasAnalysis::aliasGEP(const GEPOperator *GEP1, uint64_t V1Size, +                             const Value *V2, uint64_t V2Size,                               const MDNode *V2TBAAInfo,                               const Value *UnderlyingV1,                               const Value *UnderlyingV2) { @@ -878,8 +878,10 @@ BasicAliasAnalysis::aliasGEP(const GEPOperator *GEP1, unsigned V1Size,    // If our known offset is bigger than the access size, we know we don't have    // an alias.    if (GEP1BaseOffset) { -    if (GEP1BaseOffset >= (int64_t)V2Size || -        GEP1BaseOffset <= -(int64_t)V1Size) +    if (GEP1BaseOffset >= 0 ? +        (V2Size != UnknownSize && (uint64_t)GEP1BaseOffset >= V2Size) : +        (V1Size != UnknownSize && -(uint64_t)GEP1BaseOffset >= V1Size && +         GEP1BaseOffset != INT64_MIN))        return NoAlias;    } @@ -889,9 +891,9 @@ BasicAliasAnalysis::aliasGEP(const GEPOperator *GEP1, unsigned V1Size,  /// aliasSelect - Provide a bunch of ad-hoc rules to disambiguate a Select  /// instruction against another.  AliasAnalysis::AliasResult -BasicAliasAnalysis::aliasSelect(const SelectInst *SI, unsigned SISize, +BasicAliasAnalysis::aliasSelect(const SelectInst *SI, uint64_t SISize,                                  const MDNode *SITBAAInfo, -                                const Value *V2, unsigned V2Size, +                                const Value *V2, uint64_t V2Size,                                  const MDNode *V2TBAAInfo) {    // If this select has been visited before, we're on a use-def cycle.    // Such cycles are only valid when PHI nodes are involved or in unreachable @@ -939,9 +941,9 @@ BasicAliasAnalysis::aliasSelect(const SelectInst *SI, unsigned SISize,  // aliasPHI - Provide a bunch of ad-hoc rules to disambiguate a PHI instruction  // against another.  AliasAnalysis::AliasResult -BasicAliasAnalysis::aliasPHI(const PHINode *PN, unsigned PNSize, +BasicAliasAnalysis::aliasPHI(const PHINode *PN, uint64_t PNSize,                               const MDNode *PNTBAAInfo, -                             const Value *V2, unsigned V2Size, +                             const Value *V2, uint64_t V2Size,                               const MDNode *V2TBAAInfo) {    // The PHI node has already been visited, avoid recursion any further.    if (!Visited.insert(PN)) @@ -1013,9 +1015,9 @@ BasicAliasAnalysis::aliasPHI(const PHINode *PN, unsigned PNSize,  // such as array references.  //  AliasAnalysis::AliasResult -BasicAliasAnalysis::aliasCheck(const Value *V1, unsigned V1Size, +BasicAliasAnalysis::aliasCheck(const Value *V1, uint64_t V1Size,                                 const MDNode *V1TBAAInfo, -                               const Value *V2, unsigned V2Size, +                               const Value *V2, uint64_t V2Size,                                 const MDNode *V2TBAAInfo) {    // If either of the memory references is empty, it doesn't matter what the    // pointer values are. diff --git a/llvm/lib/Analysis/Lint.cpp b/llvm/lib/Analysis/Lint.cpp index daeaf344fdd..b27ca47142f 100644 --- a/llvm/lib/Analysis/Lint.cpp +++ b/llvm/lib/Analysis/Lint.cpp @@ -70,7 +70,7 @@ namespace {      void visitCallSite(CallSite CS);      void visitMemoryReference(Instruction &I, Value *Ptr, -                              unsigned Size, unsigned Align, +                              uint64_t Size, unsigned Align,                                const Type *Ty, unsigned Flags);      void visitCallInst(CallInst &I); @@ -277,7 +277,7 @@ void Lint::visitCallSite(CallSite CS) {        // Check that the memcpy arguments don't overlap. The AliasAnalysis API        // isn't expressive enough for what we really want to do. Known partial        // overlap is not distinguished from the case where nothing is known. -      unsigned Size = 0; +      uint64_t Size = 0;        if (const ConstantInt *Len =              dyn_cast<ConstantInt>(findValue(MCI->getLength(),                                              /*OffsetOk=*/false))) @@ -361,7 +361,7 @@ void Lint::visitReturnInst(ReturnInst &I) {  // TODO: Check that the reference is in bounds.  // TODO: Check readnone/readonly function attributes.  void Lint::visitMemoryReference(Instruction &I, -                                Value *Ptr, unsigned Size, unsigned Align, +                                Value *Ptr, uint64_t Size, unsigned Align,                                  const Type *Ty, unsigned Flags) {    // If no memory is being referenced, it doesn't matter if the pointer    // is valid.  | 

