[PATCH] D106149: [OpenMPOpt] Add support for BooleanStateWithSetVector
Shilei Tian via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Jul 16 07:48:24 PDT 2021
tianshilei1992 updated this revision to Diff 359321.
tianshilei1992 added a comment.
rebase
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
@@ -434,20 +434,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);
}
@@ -455,8 +454,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;
@@ -464,7 +462,7 @@
private:
/// A set to keep track of elements.
- SetVector<Ty *> Set;
+ SetVector<Ty> Set;
public:
typename decltype(Set)::iterator begin() { return Set.begin(); }
@@ -473,6 +471,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.359321.patch
Type: text/x-patch
Size: 2148 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20210716/7ef511b8/attachment.bin>
More information about the llvm-commits
mailing list