[PATCH] D106149: [OpenMPOpt] Add support for BooleanStateWithSetVector
Shilei Tian via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 22 10:12:51 PDT 2021
This revision was landed with ongoing or failed builds.
This revision was automatically updated to reflect the committed changes.
Closed by commit rG1a7f7790228f: [OpenMPOpt] Add support for BooleanStateWithSetVector (authored by tianshilei1992).
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106149/new/
https://reviews.llvm.org/D106149
Files:
llvm/lib/Transforms/IPO/OpenMPOpt.cpp
Index: llvm/lib/Transforms/IPO/OpenMPOpt.cpp
===================================================================
--- llvm/lib/Transforms/IPO/OpenMPOpt.cpp
+++ llvm/lib/Transforms/IPO/OpenMPOpt.cpp
@@ -447,20 +447,19 @@
};
template <typename Ty, bool InsertInvalidates = true>
-struct BooleanStateWithPtrSetVector : public BooleanState {
-
- bool contains(Ty *Elem) const { return Set.contains(Elem); }
- bool insert(Ty *Elem) {
+struct BooleanStateWithSetVector : public BooleanState {
+ bool contains(const Ty &Elem) const { return Set.contains(Elem); }
+ bool insert(const Ty &Elem) {
if (InsertInvalidates)
BooleanState::indicatePessimisticFixpoint();
return Set.insert(Elem);
}
- Ty *operator[](int Idx) const { return Set[Idx]; }
- bool operator==(const BooleanStateWithPtrSetVector &RHS) const {
+ const Ty &operator[](int Idx) const { return Set[Idx]; }
+ bool operator==(const BooleanStateWithSetVector &RHS) const {
return BooleanState::operator==(RHS) && Set == RHS.Set;
}
- bool operator!=(const BooleanStateWithPtrSetVector &RHS) const {
+ bool operator!=(const BooleanStateWithSetVector &RHS) const {
return !(*this == RHS);
}
@@ -468,8 +467,7 @@
size_t size() const { return Set.size(); }
/// "Clamp" this state with \p RHS.
- BooleanStateWithPtrSetVector &
- operator^=(const BooleanStateWithPtrSetVector &RHS) {
+ BooleanStateWithSetVector &operator^=(const BooleanStateWithSetVector &RHS) {
BooleanState::operator^=(RHS);
Set.insert(RHS.Set.begin(), RHS.Set.end());
return *this;
@@ -477,7 +475,7 @@
private:
/// A set to keep track of elements.
- SetVector<Ty *> Set;
+ SetVector<Ty> Set;
public:
typename decltype(Set)::iterator begin() { return Set.begin(); }
@@ -486,6 +484,10 @@
typename decltype(Set)::const_iterator end() const { return Set.end(); }
};
+template <typename Ty, bool InsertInvalidates = true>
+using BooleanStateWithPtrSetVector =
+ BooleanStateWithSetVector<Ty *, InsertInvalidates>;
+
struct KernelInfoState : AbstractState {
/// Flag to track if we reached a fixpoint.
bool IsAtFixpoint = false;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D106149.360869.patch
Type: text/x-patch
Size: 2148 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210722/17cbcb69/attachment.bin>
More information about the llvm-commits
mailing list