mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-10-25 10:27:04 +00:00
[C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206243 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -43,13 +43,13 @@ class AliasSet : public ilist_node<AliasSet> {
|
||||
const MDNode *TBAAInfo;
|
||||
public:
|
||||
PointerRec(Value *V)
|
||||
: Val(V), PrevInList(0), NextInList(0), AS(0), Size(0),
|
||||
: Val(V), PrevInList(nullptr), NextInList(nullptr), AS(nullptr), Size(0),
|
||||
TBAAInfo(DenseMapInfo<const MDNode *>::getEmptyKey()) {}
|
||||
|
||||
Value *getValue() const { return Val; }
|
||||
|
||||
PointerRec *getNext() const { return NextInList; }
|
||||
bool hasAliasSet() const { return AS != 0; }
|
||||
bool hasAliasSet() const { return AS != nullptr; }
|
||||
|
||||
PointerRec** setPrevInList(PointerRec **PIL) {
|
||||
PrevInList = PIL;
|
||||
@@ -75,7 +75,7 @@ class AliasSet : public ilist_node<AliasSet> {
|
||||
// If we have missing or conflicting TBAAInfo, return null.
|
||||
if (TBAAInfo == DenseMapInfo<const MDNode *>::getEmptyKey() ||
|
||||
TBAAInfo == DenseMapInfo<const MDNode *>::getTombstoneKey())
|
||||
return 0;
|
||||
return nullptr;
|
||||
return TBAAInfo;
|
||||
}
|
||||
|
||||
@@ -91,7 +91,7 @@ class AliasSet : public ilist_node<AliasSet> {
|
||||
}
|
||||
|
||||
void setAliasSet(AliasSet *as) {
|
||||
assert(AS == 0 && "Already have an alias set!");
|
||||
assert(!AS && "Already have an alias set!");
|
||||
AS = as;
|
||||
}
|
||||
|
||||
@@ -100,7 +100,7 @@ class AliasSet : public ilist_node<AliasSet> {
|
||||
*PrevInList = NextInList;
|
||||
if (AS->PtrListEnd == &NextInList) {
|
||||
AS->PtrListEnd = PrevInList;
|
||||
assert(*AS->PtrListEnd == 0 && "List not terminated right!");
|
||||
assert(*AS->PtrListEnd == nullptr && "List not terminated right!");
|
||||
}
|
||||
delete this;
|
||||
}
|
||||
@@ -174,7 +174,7 @@ public:
|
||||
class iterator;
|
||||
iterator begin() const { return iterator(PtrList); }
|
||||
iterator end() const { return iterator(); }
|
||||
bool empty() const { return PtrList == 0; }
|
||||
bool empty() const { return PtrList == nullptr; }
|
||||
|
||||
void print(raw_ostream &OS) const;
|
||||
void dump() const;
|
||||
@@ -184,7 +184,7 @@ public:
|
||||
PointerRec, ptrdiff_t> {
|
||||
PointerRec *CurNode;
|
||||
public:
|
||||
explicit iterator(PointerRec *CN = 0) : CurNode(CN) {}
|
||||
explicit iterator(PointerRec *CN = nullptr) : CurNode(CN) {}
|
||||
|
||||
bool operator==(const iterator& x) const {
|
||||
return CurNode == x.CurNode;
|
||||
@@ -220,8 +220,9 @@ private:
|
||||
// Can only be created by AliasSetTracker. Also, ilist creates one
|
||||
// to serve as a sentinel.
|
||||
friend struct ilist_sentinel_traits<AliasSet>;
|
||||
AliasSet() : PtrList(0), PtrListEnd(&PtrList), Forward(0), RefCount(0),
|
||||
AccessTy(NoModRef), AliasTy(MustAlias), Volatile(false) {
|
||||
AliasSet()
|
||||
: PtrList(nullptr), PtrListEnd(&PtrList), Forward(nullptr), RefCount(0),
|
||||
AccessTy(NoModRef), AliasTy(MustAlias), Volatile(false) {
|
||||
}
|
||||
|
||||
AliasSet(const AliasSet &AS) LLVM_DELETED_FUNCTION;
|
||||
@@ -285,7 +286,7 @@ class AliasSetTracker {
|
||||
void deleted() override;
|
||||
void allUsesReplacedWith(Value *) override;
|
||||
public:
|
||||
ASTCallbackVH(Value *V, AliasSetTracker *AST = 0);
|
||||
ASTCallbackVH(Value *V, AliasSetTracker *AST = nullptr);
|
||||
ASTCallbackVH &operator=(Value *V);
|
||||
};
|
||||
/// ASTCallbackVHDenseMapInfo - Traits to tell DenseMap that tell us how to
|
||||
@@ -354,7 +355,7 @@ public:
|
||||
/// pointer didn't alias anything).
|
||||
AliasSet &getAliasSetForPointer(Value *P, uint64_t Size,
|
||||
const MDNode *TBAAInfo,
|
||||
bool *New = 0);
|
||||
bool *New = nullptr);
|
||||
|
||||
/// getAliasSetForPointerIfExists - Return the alias set containing the
|
||||
/// location specified if one exists, otherwise return null.
|
||||
@@ -408,7 +409,7 @@ private:
|
||||
// entry for the pointer if it doesn't already exist.
|
||||
AliasSet::PointerRec &getEntryFor(Value *V) {
|
||||
AliasSet::PointerRec *&Entry = PointerMap[ASTCallbackVH(V, this)];
|
||||
if (Entry == 0)
|
||||
if (!Entry)
|
||||
Entry = new AliasSet::PointerRec(V);
|
||||
return *Entry;
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ public:
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override;
|
||||
bool runOnFunction(Function &F) override;
|
||||
void print(raw_ostream &OS, const Module *M = 0) const override;
|
||||
void print(raw_ostream &OS, const Module *M = nullptr) const override;
|
||||
|
||||
/// \brief Get an edge's probability, relative to other out-edges of the Src.
|
||||
///
|
||||
|
||||
@@ -65,8 +65,8 @@ bool isCriticalEdge(const TerminatorInst *TI, unsigned SuccNum,
|
||||
/// on branchy code but not loops, and LI is most useful on code with loops but
|
||||
/// does not help on branchy code outside loops.
|
||||
bool isPotentiallyReachable(const Instruction *From, const Instruction *To,
|
||||
const DominatorTree *DT = 0,
|
||||
const LoopInfo *LI = 0);
|
||||
const DominatorTree *DT = nullptr,
|
||||
const LoopInfo *LI = nullptr);
|
||||
|
||||
/// \brief Determine whether block 'To' is reachable from 'From', returning
|
||||
/// true if uncertain.
|
||||
@@ -75,8 +75,8 @@ bool isPotentiallyReachable(const Instruction *From, const Instruction *To,
|
||||
/// Returns false only if we can prove that once 'From' has been reached then
|
||||
/// 'To' can not be executed. Conservatively returns true.
|
||||
bool isPotentiallyReachable(const BasicBlock *From, const BasicBlock *To,
|
||||
const DominatorTree *DT = 0,
|
||||
const LoopInfo *LI = 0);
|
||||
const DominatorTree *DT = nullptr,
|
||||
const LoopInfo *LI = nullptr);
|
||||
|
||||
} // End llvm namespace
|
||||
|
||||
|
||||
@@ -73,8 +73,8 @@ namespace llvm {
|
||||
Instruction *Destination) :
|
||||
Src(Source),
|
||||
Dst(Destination),
|
||||
NextPredecessor(NULL),
|
||||
NextSuccessor(NULL) {}
|
||||
NextPredecessor(nullptr),
|
||||
NextSuccessor(nullptr) {}
|
||||
virtual ~Dependence() {}
|
||||
|
||||
/// Dependence::DVEntry - Each level in the distance/direction vector
|
||||
@@ -96,7 +96,7 @@ namespace llvm {
|
||||
bool Splitable : 1; // Splitting the loop will break dependence.
|
||||
const SCEV *Distance; // NULL implies no distance available.
|
||||
DVEntry() : Direction(ALL), Scalar(true), PeelFirst(false),
|
||||
PeelLast(false), Splitable(false), Distance(NULL) { }
|
||||
PeelLast(false), Splitable(false), Distance(nullptr) { }
|
||||
};
|
||||
|
||||
/// getSrc - Returns the source instruction for this dependence.
|
||||
@@ -154,7 +154,7 @@ namespace llvm {
|
||||
|
||||
/// getDistance - Returns the distance (or NULL) associated with a
|
||||
/// particular level.
|
||||
virtual const SCEV *getDistance(unsigned Level) const { return NULL; }
|
||||
virtual const SCEV *getDistance(unsigned Level) const { return nullptr; }
|
||||
|
||||
/// isPeelFirst - Returns true if peeling the first iteration from
|
||||
/// this loop will break this dependence.
|
||||
@@ -921,7 +921,7 @@ namespace llvm {
|
||||
bool runOnFunction(Function &F) override;
|
||||
void releaseMemory() override;
|
||||
void getAnalysisUsage(AnalysisUsage &) const override;
|
||||
void print(raw_ostream &, const Module * = 0) const override;
|
||||
void print(raw_ostream &, const Module * = nullptr) const override;
|
||||
}; // class DependenceAnalysis
|
||||
|
||||
/// createDependenceAnalysisPass - This creates an instance of the
|
||||
|
||||
@@ -142,7 +142,7 @@ public:
|
||||
|
||||
/// print - Convert to human readable form
|
||||
///
|
||||
void print(raw_ostream &OS, const Module* = 0) const override;
|
||||
void print(raw_ostream &OS, const Module* = nullptr) const override;
|
||||
|
||||
/// dump - Dump the dominance frontier to dbgs().
|
||||
void dump() const;
|
||||
|
||||
@@ -169,7 +169,7 @@ public:
|
||||
return Processed.count(Inst);
|
||||
}
|
||||
|
||||
void print(raw_ostream &OS, const Module* = 0) const override;
|
||||
void print(raw_ostream &OS, const Module* = nullptr) const override;
|
||||
|
||||
/// dump - This method is used for debugging.
|
||||
void dump() const;
|
||||
|
||||
@@ -48,7 +48,7 @@ class IntervalPartition : public FunctionPass {
|
||||
public:
|
||||
static char ID; // Pass identification, replacement for typeid
|
||||
|
||||
IntervalPartition() : FunctionPass(ID), RootInterval(0) {
|
||||
IntervalPartition() : FunctionPass(ID), RootInterval(nullptr) {
|
||||
initializeIntervalPartitionPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
@@ -62,7 +62,7 @@ public:
|
||||
IntervalPartition(IntervalPartition &I, bool);
|
||||
|
||||
// print - Show contents in human readable format...
|
||||
void print(raw_ostream &O, const Module* = 0) const override;
|
||||
void print(raw_ostream &O, const Module* = nullptr) const override;
|
||||
|
||||
// getRootInterval() - Return the root interval that contains the starting
|
||||
// block of the function.
|
||||
@@ -77,7 +77,7 @@ public:
|
||||
// getBlockInterval - Return the interval that a basic block exists in.
|
||||
inline Interval *getBlockInterval(BasicBlock *BB) {
|
||||
IntervalMapTy::iterator I = IntervalMap.find(BB);
|
||||
return I != IntervalMap.end() ? I->second : 0;
|
||||
return I != IntervalMap.end() ? I->second : nullptr;
|
||||
}
|
||||
|
||||
// getAnalysisUsage - Implement the Pass API
|
||||
|
||||
@@ -33,10 +33,10 @@ class LazyValueInfo : public FunctionPass {
|
||||
void operator=(const LazyValueInfo&) LLVM_DELETED_FUNCTION;
|
||||
public:
|
||||
static char ID;
|
||||
LazyValueInfo() : FunctionPass(ID), PImpl(0) {
|
||||
LazyValueInfo() : FunctionPass(ID), PImpl(nullptr) {
|
||||
initializeLazyValueInfoPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
~LazyValueInfo() { assert(PImpl == 0 && "releaseMemory not called"); }
|
||||
~LazyValueInfo() { assert(!PImpl && "releaseMemory not called"); }
|
||||
|
||||
/// Tristate - This is used to return true/false/dunno results.
|
||||
enum Tristate {
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace llvm {
|
||||
|
||||
LibCallInfo *LCI;
|
||||
|
||||
explicit LibCallAliasAnalysis(LibCallInfo *LC = 0)
|
||||
explicit LibCallAliasAnalysis(LibCallInfo *LC = nullptr)
|
||||
: FunctionPass(ID), LCI(LC) {
|
||||
initializeLibCallAliasAnalysisPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
@@ -130,7 +130,7 @@ namespace llvm {
|
||||
mutable const LibCallLocationInfo *Locations;
|
||||
mutable unsigned NumLocations;
|
||||
public:
|
||||
LibCallInfo() : Impl(0), Locations(0), NumLocations(0) {}
|
||||
LibCallInfo() : Impl(nullptr), Locations(nullptr), NumLocations(0) {}
|
||||
virtual ~LibCallInfo();
|
||||
|
||||
//===------------------------------------------------------------------===//
|
||||
|
||||
@@ -27,7 +27,8 @@ class MDNode;
|
||||
/// specified pointer, we do a quick local scan of the basic block containing
|
||||
/// ScanFrom, to determine if the address is already accessed.
|
||||
bool isSafeToLoadUnconditionally(Value *V, Instruction *ScanFrom,
|
||||
unsigned Align, const DataLayout *TD = 0);
|
||||
unsigned Align,
|
||||
const DataLayout *TD = nullptr);
|
||||
|
||||
/// FindAvailableLoadedValue - Scan the ScanBB block backwards (starting at
|
||||
/// the instruction before ScanFrom) checking to see if we have the value at
|
||||
@@ -49,8 +50,8 @@ bool isSafeToLoadUnconditionally(Value *V, Instruction *ScanFrom,
|
||||
Value *FindAvailableLoadedValue(Value *Ptr, BasicBlock *ScanBB,
|
||||
BasicBlock::iterator &ScanFrom,
|
||||
unsigned MaxInstsToScan = 6,
|
||||
AliasAnalysis *AA = 0,
|
||||
MDNode **TBAATag = 0);
|
||||
AliasAnalysis *AA = nullptr,
|
||||
MDNode **TBAATag = nullptr);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -233,7 +233,7 @@ class ObjectSizeOffsetEvaluator
|
||||
bool RoundToAlign;
|
||||
|
||||
SizeOffsetEvalType unknown() {
|
||||
return std::make_pair((Value*)0, (Value*)0);
|
||||
return std::make_pair(nullptr, nullptr);
|
||||
}
|
||||
SizeOffsetEvalType compute_(Value *V);
|
||||
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace llvm {
|
||||
PairTy Value;
|
||||
explicit MemDepResult(PairTy V) : Value(V) {}
|
||||
public:
|
||||
MemDepResult() : Value(0, Invalid) {}
|
||||
MemDepResult() : Value(nullptr, Invalid) {}
|
||||
|
||||
/// get methods: These are static ctor methods for creating various
|
||||
/// MemDepResult kinds.
|
||||
@@ -155,7 +155,7 @@ namespace llvm {
|
||||
/// getInst() - If this is a normal dependency, return the instruction that
|
||||
/// is depended on. Otherwise, return null.
|
||||
Instruction *getInst() const {
|
||||
if (Value.getInt() == Other) return NULL;
|
||||
if (Value.getInt() == Other) return nullptr;
|
||||
return Value.getPointer();
|
||||
}
|
||||
|
||||
@@ -285,7 +285,8 @@ namespace llvm {
|
||||
/// pointer. May be null if there are no tags or conflicting tags.
|
||||
const MDNode *TBAATag;
|
||||
|
||||
NonLocalPointerInfo() : Size(AliasAnalysis::UnknownSize), TBAATag(0) {}
|
||||
NonLocalPointerInfo()
|
||||
: Size(AliasAnalysis::UnknownSize), TBAATag(nullptr) {}
|
||||
};
|
||||
|
||||
/// CachedNonLocalPointerInfo - This map stores the cached results of doing
|
||||
@@ -401,7 +402,7 @@ namespace llvm {
|
||||
bool isLoad,
|
||||
BasicBlock::iterator ScanIt,
|
||||
BasicBlock *BB,
|
||||
Instruction *QueryInst = 0);
|
||||
Instruction *QueryInst = nullptr);
|
||||
|
||||
|
||||
/// getLoadLoadClobberFullWidthSize - This is a little bit of analysis that
|
||||
|
||||
@@ -45,7 +45,8 @@ class PHITransAddr {
|
||||
/// InstInputs - The inputs for our symbolic address.
|
||||
SmallVector<Instruction*, 4> InstInputs;
|
||||
public:
|
||||
PHITransAddr(Value *addr, const DataLayout *DL) : Addr(addr), DL(DL), TLI(0) {
|
||||
PHITransAddr(Value *addr, const DataLayout *DL)
|
||||
: Addr(addr), DL(DL), TLI(nullptr) {
|
||||
// If the address is an instruction, the whole thing is considered an input.
|
||||
if (Instruction *I = dyn_cast<Instruction>(Addr))
|
||||
InstInputs.push_back(I);
|
||||
|
||||
@@ -48,13 +48,13 @@ public:
|
||||
/// analysis and whether the visit completed or aborted early.
|
||||
class PtrInfo {
|
||||
public:
|
||||
PtrInfo() : AbortedInfo(0, false), EscapedInfo(0, false) {}
|
||||
PtrInfo() : AbortedInfo(nullptr, false), EscapedInfo(nullptr, false) {}
|
||||
|
||||
/// \brief Reset the pointer info, clearing all state.
|
||||
void reset() {
|
||||
AbortedInfo.setPointer(0);
|
||||
AbortedInfo.setPointer(nullptr);
|
||||
AbortedInfo.setInt(false);
|
||||
EscapedInfo.setPointer(0);
|
||||
EscapedInfo.setPointer(nullptr);
|
||||
EscapedInfo.setInt(false);
|
||||
}
|
||||
|
||||
@@ -76,14 +76,14 @@ public:
|
||||
|
||||
/// \brief Mark the visit as aborted. Intended for use in a void return.
|
||||
/// \param I The instruction which caused the visit to abort, if available.
|
||||
void setAborted(Instruction *I = 0) {
|
||||
void setAborted(Instruction *I = nullptr) {
|
||||
AbortedInfo.setInt(true);
|
||||
AbortedInfo.setPointer(I);
|
||||
}
|
||||
|
||||
/// \brief Mark the pointer as escaped. Intended for use in a void return.
|
||||
/// \param I The instruction which escapes the pointer, if available.
|
||||
void setEscaped(Instruction *I = 0) {
|
||||
void setEscaped(Instruction *I = nullptr) {
|
||||
EscapedInfo.setInt(true);
|
||||
EscapedInfo.setPointer(I);
|
||||
}
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
/// for use in a void return.
|
||||
/// \param I The instruction which both escapes the pointer and aborts the
|
||||
/// visit, if available.
|
||||
void setEscapedAndAborted(Instruction *I = 0) {
|
||||
void setEscapedAndAborted(Instruction *I = nullptr) {
|
||||
setEscaped(I);
|
||||
setAborted(I);
|
||||
}
|
||||
|
||||
@@ -246,7 +246,7 @@ public:
|
||||
/// @param Parent The surrounding region or NULL if this is a top level
|
||||
/// region.
|
||||
Region(BasicBlock *Entry, BasicBlock *Exit, RegionInfo* RI,
|
||||
DominatorTree *DT, Region *Parent = 0);
|
||||
DominatorTree *DT, Region *Parent = nullptr);
|
||||
|
||||
/// Delete the Region and all its subregions.
|
||||
~Region();
|
||||
@@ -311,7 +311,7 @@ public:
|
||||
/// @brief Check if a Region is the TopLevel region.
|
||||
///
|
||||
/// The toplevel region represents the whole function.
|
||||
bool isTopLevelRegion() const { return exit == NULL; }
|
||||
bool isTopLevelRegion() const { return exit == nullptr; }
|
||||
|
||||
/// @brief Return a new (non-canonical) region, that is obtained by joining
|
||||
/// this region with its predecessors.
|
||||
@@ -515,7 +515,7 @@ public:
|
||||
}
|
||||
|
||||
// Construct the end iterator.
|
||||
block_iterator_wrapper() : super(df_end<pointer>((BasicBlock *)0)) {}
|
||||
block_iterator_wrapper() : super(df_end<pointer>((BasicBlock *)nullptr)) {}
|
||||
|
||||
/*implicit*/ block_iterator_wrapper(super I) : super(I) {}
|
||||
|
||||
|
||||
@@ -210,7 +210,7 @@ namespace llvm {
|
||||
void deleted() override;
|
||||
void allUsesReplacedWith(Value *New) override;
|
||||
public:
|
||||
SCEVCallbackVH(Value *V, ScalarEvolution *SE = 0);
|
||||
SCEVCallbackVH(Value *V, ScalarEvolution *SE = nullptr);
|
||||
};
|
||||
|
||||
friend class SCEVCallbackVH;
|
||||
@@ -291,7 +291,7 @@ namespace llvm {
|
||||
const SCEV *ExactNotTaken;
|
||||
PointerIntPair<ExitNotTakenInfo*, 1> NextExit;
|
||||
|
||||
ExitNotTakenInfo() : ExitingBlock(0), ExactNotTaken(0) {}
|
||||
ExitNotTakenInfo() : ExitingBlock(nullptr), ExactNotTaken(nullptr) {}
|
||||
|
||||
/// isCompleteList - Return true if all loop exits are computable.
|
||||
bool isCompleteList() const {
|
||||
@@ -321,7 +321,7 @@ namespace llvm {
|
||||
const SCEV *Max;
|
||||
|
||||
public:
|
||||
BackedgeTakenInfo() : Max(0) {}
|
||||
BackedgeTakenInfo() : Max(nullptr) {}
|
||||
|
||||
/// Initialize BackedgeTakenInfo from a list of exact exit counts.
|
||||
BackedgeTakenInfo(
|
||||
@@ -897,7 +897,7 @@ namespace llvm {
|
||||
bool runOnFunction(Function &F) override;
|
||||
void releaseMemory() override;
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override;
|
||||
void print(raw_ostream &OS, const Module* = 0) const override;
|
||||
void print(raw_ostream &OS, const Module* = nullptr) const override;
|
||||
void verifyAnalysis() const override;
|
||||
|
||||
private:
|
||||
|
||||
@@ -92,7 +92,7 @@ namespace llvm {
|
||||
public:
|
||||
/// SCEVExpander - Construct a SCEVExpander in "canonical" mode.
|
||||
explicit SCEVExpander(ScalarEvolution &se, const char *name)
|
||||
: SE(se), IVName(name), IVIncInsertLoop(0), IVIncInsertPos(0),
|
||||
: SE(se), IVName(name), IVIncInsertLoop(nullptr), IVIncInsertPos(nullptr),
|
||||
CanonicalMode(true), LSRMode(false),
|
||||
Builder(se.getContext(), TargetFolder(se.DL)) {
|
||||
#ifndef NDEBUG
|
||||
@@ -131,7 +131,7 @@ namespace llvm {
|
||||
/// representative. Return the number of phis eliminated.
|
||||
unsigned replaceCongruentIVs(Loop *L, const DominatorTree *DT,
|
||||
SmallVectorImpl<WeakVH> &DeadInsts,
|
||||
const TargetTransformInfo *TTI = NULL);
|
||||
const TargetTransformInfo *TTI = nullptr);
|
||||
|
||||
/// expandCodeFor - Insert code to directly compute the specified SCEV
|
||||
/// expression into the program. The inserted code is inserted into the
|
||||
@@ -219,7 +219,7 @@ namespace llvm {
|
||||
/// expression into the program. The inserted code is inserted into the
|
||||
/// SCEVExpander's current insertion point. If a type is specified, the
|
||||
/// result will be expanded to have that type, with a cast if necessary.
|
||||
Value *expandCodeFor(const SCEV *SH, Type *Ty = 0);
|
||||
Value *expandCodeFor(const SCEV *SH, Type *Ty = nullptr);
|
||||
|
||||
/// getRelevantLoop - Determine the most "relevant" loop for the given SCEV.
|
||||
const Loop *getRelevantLoop(const SCEV *);
|
||||
|
||||
@@ -82,7 +82,7 @@ public:
|
||||
/// constant value, return it. Otherwise return null. The returned value
|
||||
/// must be in the same LLVM type as Val.
|
||||
virtual Constant *GetConstant(LatticeVal LV, Value *Val, SparseSolver &SS) {
|
||||
return 0;
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
/// ComputeArgument - Given a formal argument value, compute and return a
|
||||
|
||||
Reference in New Issue
Block a user