mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-09-24 23:28:41 +00:00
[LoopAccesses] Change LAA:getInfo to return a constant reference
As expected, this required a few more const-correctness fixes. Based on Hal's feedback on D7684. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@229634 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -153,9 +153,11 @@ public:
|
|||||||
|
|
||||||
/// Return true we can analyze the memory accesses in the loop and there are
|
/// Return true we can analyze the memory accesses in the loop and there are
|
||||||
/// no memory dependence cycles.
|
/// no memory dependence cycles.
|
||||||
bool canVectorizeMemory() { return CanVecMem; }
|
bool canVectorizeMemory() const { return CanVecMem; }
|
||||||
|
|
||||||
RuntimePointerCheck *getRuntimePointerCheck() { return &PtrRtCheck; }
|
const RuntimePointerCheck *getRuntimePointerCheck() const {
|
||||||
|
return &PtrRtCheck;
|
||||||
|
}
|
||||||
|
|
||||||
/// Return true if the block BB needs to be predicated in order for the loop
|
/// Return true if the block BB needs to be predicated in order for the loop
|
||||||
/// to be vectorized.
|
/// to be vectorized.
|
||||||
@@ -163,7 +165,7 @@ public:
|
|||||||
DominatorTree *DT);
|
DominatorTree *DT);
|
||||||
|
|
||||||
/// Returns true if the value V is uniform within the loop.
|
/// Returns true if the value V is uniform within the loop.
|
||||||
bool isUniform(Value *V);
|
bool isUniform(Value *V) const;
|
||||||
|
|
||||||
unsigned getMaxSafeDepDistBytes() const { return MaxSafeDepDistBytes; }
|
unsigned getMaxSafeDepDistBytes() const { return MaxSafeDepDistBytes; }
|
||||||
unsigned getNumStores() const { return NumStores; }
|
unsigned getNumStores() const { return NumStores; }
|
||||||
@@ -174,11 +176,12 @@ public:
|
|||||||
/// Returns a pair of instructions where the first element is the first
|
/// Returns a pair of instructions where the first element is the first
|
||||||
/// instruction generated in possibly a sequence of instructions and the
|
/// instruction generated in possibly a sequence of instructions and the
|
||||||
/// second value is the final comparator value or NULL if no check is needed.
|
/// second value is the final comparator value or NULL if no check is needed.
|
||||||
std::pair<Instruction *, Instruction *> addRuntimeCheck(Instruction *Loc);
|
std::pair<Instruction *, Instruction *>
|
||||||
|
addRuntimeCheck(Instruction *Loc) const;
|
||||||
|
|
||||||
/// \brief The diagnostics report generated for the analysis. E.g. why we
|
/// \brief The diagnostics report generated for the analysis. E.g. why we
|
||||||
/// couldn't analyze the loop.
|
/// couldn't analyze the loop.
|
||||||
Optional<LoopAccessReport> &getReport() { return Report; }
|
const Optional<LoopAccessReport> &getReport() const { return Report; }
|
||||||
|
|
||||||
/// \brief Print the information about the memory accesses in the loop.
|
/// \brief Print the information about the memory accesses in the loop.
|
||||||
void print(raw_ostream &OS, unsigned Depth = 0) const;
|
void print(raw_ostream &OS, unsigned Depth = 0) const;
|
||||||
@@ -258,7 +261,7 @@ public:
|
|||||||
/// of symbolic strides, \p Strides provides the mapping (see
|
/// of symbolic strides, \p Strides provides the mapping (see
|
||||||
/// replaceSymbolicStrideSCEV). If there is no cached result available run
|
/// replaceSymbolicStrideSCEV). If there is no cached result available run
|
||||||
/// the analysis.
|
/// the analysis.
|
||||||
LoopAccessInfo &getInfo(Loop *L, ValueToValueMap &Strides);
|
const LoopAccessInfo &getInfo(Loop *L, ValueToValueMap &Strides);
|
||||||
|
|
||||||
void releaseMemory() override {
|
void releaseMemory() override {
|
||||||
// Invalidate the cache when the pass is freed.
|
// Invalidate the cache when the pass is freed.
|
||||||
|
@@ -1173,7 +1173,7 @@ void LoopAccessInfo::emitAnalysis(LoopAccessReport &Message) {
|
|||||||
Report = Message;
|
Report = Message;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LoopAccessInfo::isUniform(Value *V) {
|
bool LoopAccessInfo::isUniform(Value *V) const {
|
||||||
return (SE->isLoopInvariant(SE->getSCEV(V), TheLoop));
|
return (SE->isLoopInvariant(SE->getSCEV(V), TheLoop));
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1189,7 +1189,7 @@ static Instruction *getFirstInst(Instruction *FirstInst, Value *V,
|
|||||||
}
|
}
|
||||||
|
|
||||||
std::pair<Instruction *, Instruction *>
|
std::pair<Instruction *, Instruction *>
|
||||||
LoopAccessInfo::addRuntimeCheck(Instruction *Loc) {
|
LoopAccessInfo::addRuntimeCheck(Instruction *Loc) const {
|
||||||
Instruction *tnullptr = nullptr;
|
Instruction *tnullptr = nullptr;
|
||||||
if (!PtrRtCheck.Need)
|
if (!PtrRtCheck.Need)
|
||||||
return std::pair<Instruction *, Instruction *>(tnullptr, tnullptr);
|
return std::pair<Instruction *, Instruction *>(tnullptr, tnullptr);
|
||||||
@@ -1301,7 +1301,8 @@ void LoopAccessInfo::print(raw_ostream &OS, unsigned Depth) const {
|
|||||||
OS << "\n";
|
OS << "\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
LoopAccessInfo &LoopAccessAnalysis::getInfo(Loop *L, ValueToValueMap &Strides) {
|
const LoopAccessInfo &LoopAccessAnalysis::getInfo(Loop *L,
|
||||||
|
ValueToValueMap &Strides) {
|
||||||
auto &LAI = LoopAccessInfoMap[L];
|
auto &LAI = LoopAccessInfoMap[L];
|
||||||
|
|
||||||
#ifndef NDEBUG
|
#ifndef NDEBUG
|
||||||
|
@@ -756,11 +756,11 @@ public:
|
|||||||
bool isUniformAfterVectorization(Instruction* I) { return Uniforms.count(I); }
|
bool isUniformAfterVectorization(Instruction* I) { return Uniforms.count(I); }
|
||||||
|
|
||||||
/// Returns the information that we collected about runtime memory check.
|
/// Returns the information that we collected about runtime memory check.
|
||||||
LoopAccessInfo::RuntimePointerCheck *getRuntimePointerCheck() {
|
const LoopAccessInfo::RuntimePointerCheck *getRuntimePointerCheck() const {
|
||||||
return LAI->getRuntimePointerCheck();
|
return LAI->getRuntimePointerCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
LoopAccessInfo *getLAI() {
|
const LoopAccessInfo *getLAI() const {
|
||||||
return LAI;
|
return LAI;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -877,7 +877,7 @@ private:
|
|||||||
LoopAccessAnalysis *LAA;
|
LoopAccessAnalysis *LAA;
|
||||||
// And the loop-accesses info corresponding to this loop. This pointer is
|
// And the loop-accesses info corresponding to this loop. This pointer is
|
||||||
// null until canVectorizeMemory sets it up.
|
// null until canVectorizeMemory sets it up.
|
||||||
LoopAccessInfo *LAI;
|
const LoopAccessInfo *LAI;
|
||||||
|
|
||||||
// --- vectorization state --- //
|
// --- vectorization state --- //
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user