@@ -133,6 +133,11 @@ class PreservedAnalyses {
133
133
return *this ;
134
134
}
135
135
136
+ // / Mark multiple analyses as preserved.
137
+ template <typename ... AnalysisTs> PreservedAnalyses &preserve () {
138
+ return preserve (AnalysisTs::ID ()...);
139
+ }
140
+
136
141
// / Given an analysis's ID, mark the analysis as preserved, adding it
137
142
// / to the set.
138
143
PreservedAnalyses &preserve (AnalysisKey *ID) {
@@ -146,12 +151,23 @@ class PreservedAnalyses {
146
151
return *this ;
147
152
}
148
153
154
+ // / Mark analyses as preserved using IDs.
155
+ template <typename ... AnalysisKeyPtrs>
156
+ PreservedAnalyses &preserve (AnalysisKeyPtrs... IDs) {
157
+ return preserve (IDs), ..., *this ;
158
+ }
159
+
149
160
// / Mark an analysis set as preserved.
150
161
template <typename AnalysisSetT> PreservedAnalyses &preserveSet () {
151
162
preserveSet (AnalysisSetT::ID ());
152
163
return *this ;
153
164
}
154
165
166
+ // / Mark analysis sets as preserved.
167
+ template <typename AnalysisSetTs> PreservedAnalyses &preserveSet () {
168
+ return preserveSet (AnalysisSetT::ID ()...);
169
+ }
170
+
155
171
// / Mark an analysis set as preserved using its ID.
156
172
PreservedAnalyses &preserveSet (AnalysisSetKey *ID) {
157
173
// If we're not already in the saturated 'all' state, add this set.
@@ -160,6 +176,12 @@ class PreservedAnalyses {
160
176
return *this ;
161
177
}
162
178
179
+ // / Mark analysis sets as preserved using IDs.
180
+ template <typename ... AnalysisSetKeyPtrs>
181
+ PreservedAnalyses &preserveSet (AnalysisSetKeyPtrs... IDs) {
182
+ return preserveSet (IDs), ..., *this ;
183
+ }
184
+
163
185
// / Mark an analysis as abandoned.
164
186
// /
165
187
// / An abandoned analysis is not preserved, even if it is nominally covered
@@ -172,6 +194,11 @@ class PreservedAnalyses {
172
194
return *this ;
173
195
}
174
196
197
+ // / Mark analyses as abandoned.
198
+ template <typename ... AnalysisTs> PreservedAnalyses &abandon () {
199
+ return abandon (AnalysisTs::ID ()...);
200
+ }
201
+
175
202
// / Mark an analysis as abandoned using its ID.
176
203
// /
177
204
// / An abandoned analysis is not preserved, even if it is nominally covered
@@ -185,6 +212,12 @@ class PreservedAnalyses {
185
212
return *this ;
186
213
}
187
214
215
+ // / Mark analyses as abandoned using IDs.
216
+ template <typename ... AnalysisKeyPtrs>
217
+ PreservedAnalyses &abandon (AnalysisKeyPtrs... IDs) {
218
+ return abandon (IDs), ..., *this ;
219
+ }
220
+
188
221
// / Intersect this set with another in place.
189
222
// /
190
223
// / This is a mutating operation on this preserved set, removing all
0 commit comments