diff --git a/llvm/lib/Transforms/Vectorize/VPlan.h b/llvm/lib/Transforms/Vectorize/VPlan.h index 6ca750fc53279..f793cf5209329 100644 --- a/llvm/lib/Transforms/Vectorize/VPlan.h +++ b/llvm/lib/Transforms/Vectorize/VPlan.h @@ -25,7 +25,7 @@ #define LLVM_TRANSFORMS_VECTORIZE_VPLAN_H #include "VPlanValue.h" -#include "llvm/ADT/DenseMap.h" +#include "llvm/ADT/MapVector.h" #include "llvm/ADT/SmallPtrSet.h" #include "llvm/ADT/SmallVector.h" #include "llvm/ADT/Twine.h" @@ -4332,13 +4332,9 @@ class VPlan { /// Represents the loop-invariant VF * UF of the vector loop region. VPValue VFxUF; - /// Holds a mapping between Values and their corresponding VPValue inside - /// VPlan. - Value2VPValueTy Value2VPValue; - - /// Contains all the external definitions created for this VPlan. External - /// definitions are VPValues that hold a pointer to their underlying IR. - SmallVector VPLiveIns; + /// Contains all the external definitions created for this VPlan, as a mapping + /// from IR Values to VPValues. + SmallMapVector LiveIns; /// Blocks allocated and owned by the VPlan. They will be deleted once the /// VPlan is destroyed. @@ -4535,10 +4531,9 @@ class VPlan { /// yet) for \p V. VPValue *getOrAddLiveIn(Value *V) { assert(V && "Trying to get or add the VPValue of a null Value"); - auto [It, Inserted] = Value2VPValue.try_emplace(V); + auto [It, Inserted] = LiveIns.try_emplace(V); if (Inserted) { VPValue *VPV = new VPValue(V); - VPLiveIns.push_back(VPV); assert(VPV->isLiveIn() && "VPV must be a live-in."); It->second = VPV; } @@ -4570,17 +4565,10 @@ class VPlan { } /// Return the live-in VPValue for \p V, if there is one or nullptr otherwise. - VPValue *getLiveIn(Value *V) const { return Value2VPValue.lookup(V); } + VPValue *getLiveIn(Value *V) const { return LiveIns.lookup(V); } /// Return the list of live-in VPValues available in the VPlan. - ArrayRef getLiveIns() const { - assert(all_of(Value2VPValue, - [this](const auto &P) { - return is_contained(VPLiveIns, P.second); - }) && - "all VPValues in Value2VPValue must also be in VPLiveIns"); - return VPLiveIns; - } + auto getLiveIns() const { return LiveIns.values(); } #if !defined(NDEBUG) || defined(LLVM_ENABLE_DUMP) /// Print the live-ins of this VPlan to \p O. diff --git a/llvm/lib/Transforms/Vectorize/VPlanValue.h b/llvm/lib/Transforms/Vectorize/VPlanValue.h index b9f5847ec731c..8849ccc6184fc 100644 --- a/llvm/lib/Transforms/Vectorize/VPlanValue.h +++ b/llvm/lib/Transforms/Vectorize/VPlanValue.h @@ -20,10 +20,8 @@ #ifndef LLVM_TRANSFORMS_VECTORIZE_VPLAN_VALUE_H #define LLVM_TRANSFORMS_VECTORIZE_VPLAN_VALUE_H -#include "llvm/ADT/DenseMap.h" #include "llvm/ADT/STLExtras.h" #include "llvm/ADT/SmallVector.h" -#include "llvm/ADT/StringMap.h" #include "llvm/ADT/TinyPtrVector.h" #include "llvm/ADT/iterator_range.h" #include "llvm/Support/Compiler.h" @@ -196,9 +194,6 @@ class LLVM_ABI_FOR_TEST VPValue { } }; -typedef DenseMap Value2VPValueTy; -typedef DenseMap VPValue2ValueTy; - LLVM_ABI_FOR_TEST raw_ostream &operator<<(raw_ostream &OS, const VPRecipeBase &R);