mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-26 07:34:06 +00:00
Move isKnownNonNull out of AliasAnalysis.h and into ValueTracking.cpp since
it isn't really an AliasAnalysis concept, and ValueTracking has similar things that it could plausibly share code with some day. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174027 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
85238aae1a
commit
de0eb19248
@ -593,11 +593,6 @@ bool isNoAliasCall(const Value *V);
|
||||
///
|
||||
bool isIdentifiedObject(const Value *V);
|
||||
|
||||
/// isKnownNonNull - Return true if this pointer couldn't possibly be null by
|
||||
/// its definition. This returns true for allocas, non-extern-weak globals and
|
||||
/// byval arguments.
|
||||
bool isKnownNonNull(const Value *V);
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
#endif
|
||||
|
@ -183,6 +183,11 @@ namespace llvm {
|
||||
bool isSafeToSpeculativelyExecute(const Value *V,
|
||||
const DataLayout *TD = 0);
|
||||
|
||||
/// isKnownNonNull - Return true if this pointer couldn't possibly be null by
|
||||
/// its definition. This returns true for allocas, non-extern-weak globals
|
||||
/// and byval arguments.
|
||||
bool isKnownNonNull(const Value *V);
|
||||
|
||||
} // end namespace llvm
|
||||
|
||||
#endif
|
||||
|
@ -555,19 +555,3 @@ bool llvm::isIdentifiedObject(const Value *V) {
|
||||
return A->hasNoAliasAttr() || A->hasByValAttr();
|
||||
return false;
|
||||
}
|
||||
|
||||
/// isKnownNonNull - Return true if we know that the specified value is never
|
||||
/// null.
|
||||
bool llvm::isKnownNonNull(const Value *V) {
|
||||
// Alloca never returns null, malloc might.
|
||||
if (isa<AllocaInst>(V)) return true;
|
||||
|
||||
// A byval argument is never null.
|
||||
if (const Argument *A = dyn_cast<Argument>(V))
|
||||
return A->hasByValAttr();
|
||||
|
||||
// Global values are not null unless extern weak.
|
||||
if (const GlobalValue *GV = dyn_cast<GlobalValue>(V))
|
||||
return !GV->hasExternalWeakLinkage();
|
||||
return false;
|
||||
}
|
||||
|
@ -16,7 +16,6 @@
|
||||
#include "llvm/Analysis/LazyValueInfo.h"
|
||||
#include "llvm/ADT/DenseSet.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/Analysis/AliasAnalysis.h"
|
||||
#include "llvm/Analysis/ConstantFolding.h"
|
||||
#include "llvm/Analysis/ValueTracking.h"
|
||||
#include "llvm/IR/Constants.h"
|
||||
|
@ -2014,3 +2014,19 @@ bool llvm::isSafeToSpeculativelyExecute(const Value *V,
|
||||
return false; // Misc instructions which have effects
|
||||
}
|
||||
}
|
||||
|
||||
/// isKnownNonNull - Return true if we know that the specified value is never
|
||||
/// null.
|
||||
bool llvm::isKnownNonNull(const Value *V) {
|
||||
// Alloca never returns null, malloc might.
|
||||
if (isa<AllocaInst>(V)) return true;
|
||||
|
||||
// A byval argument is never null.
|
||||
if (const Argument *A = dyn_cast<Argument>(V))
|
||||
return A->hasByValAttr();
|
||||
|
||||
// Global values are not null unless extern weak.
|
||||
if (const GlobalValue *GV = dyn_cast<GlobalValue>(V))
|
||||
return !GV->hasExternalWeakLinkage();
|
||||
return false;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user