@@ -141,6 +141,8 @@ class PartitionOp {
141
141
142
142
PartitionOpKind getKind () const { return OpKind; }
143
143
144
+ ArrayRef<Element> getOpArgs () const { return OpArgs; }
145
+
144
146
SILInstruction *getSourceInst (bool assertNonNull = false ) const {
145
147
assert (!assertNonNull ||
146
148
sourceInst && " PartitionOps should be assigned SILInstruction"
@@ -152,38 +154,24 @@ class PartitionOp {
152
154
return sourceExpr;
153
155
}
154
156
155
- void dump () const LLVM_ATTRIBUTE_USED {
156
- raw_ostream &os = llvm::errs ();
157
+ SWIFT_DEBUG_DUMP { print (llvm::dbgs ()); }
158
+
159
+ void print (llvm::raw_ostream &os) const {
157
160
switch (OpKind) {
158
161
case PartitionOpKind::Assign:
159
- os.changeColor (llvm::raw_ostream::CYAN, true );
160
- os << " assign" ;
161
- os.resetColor ();
162
- os << " %%" << OpArgs[0 ] << " = %%" << OpArgs[1 ] << " \n " ;
162
+ os << " assign %%" << OpArgs[0 ] << " = %%" << OpArgs[1 ] << " \n " ;
163
163
break ;
164
164
case PartitionOpKind::AssignFresh:
165
- os.changeColor (llvm::raw_ostream::GREEN, true );
166
- os << " assign_fresh" ;
167
- os.resetColor ();
168
- os << " %%" << OpArgs[0 ] << " \n " ;
165
+ os << " assign_fresh %%" << OpArgs[0 ] << " \n " ;
169
166
break ;
170
167
case PartitionOpKind::Consume:
171
- os.changeColor (llvm::raw_ostream::RED, true );
172
- os << " consume" ;
173
- os.resetColor ();
174
- os << " %%" << OpArgs[0 ] << " \n " ;
168
+ os << " consume %%" << OpArgs[0 ] << " \n " ;
175
169
break ;
176
170
case PartitionOpKind::Merge:
177
- os.changeColor (llvm::raw_ostream::BLUE, true );
178
- os << " merge" ;
179
- os.resetColor ();
180
- os << " %%" << OpArgs[0 ] << " with %%" << OpArgs[1 ] << " \n " ;
171
+ os << " merge %%" << OpArgs[0 ] << " with %%" << OpArgs[1 ] << " \n " ;
181
172
break ;
182
173
case PartitionOpKind::Require:
183
- os.changeColor (llvm::raw_ostream::YELLOW, true );
184
- os << " require" ;
185
- os.resetColor ();
186
- os << " %%" << OpArgs[0 ] << " \n " ;
174
+ os << " require %%" << OpArgs[0 ] << " \n " ;
187
175
break ;
188
176
}
189
177
}
@@ -236,7 +224,7 @@ class Partition {
236
224
237
225
auto fail = [&](Element i, int type) {
238
226
llvm::dbgs () << " FAIL(i=" << i << " ; type=" << type << " ): " ;
239
- dump ( );
227
+ print ( llvm::dbgs () );
240
228
return false ;
241
229
};
242
230
@@ -382,14 +370,10 @@ class Partition {
382
370
fst_reduced.merge (i, Element (snd_label));
383
371
}
384
372
385
- LLVM_DEBUG (
386
- llvm::dbgs () << " JOIN PEFORMED: \n FST: " ;
387
- fst.dump ();
388
- llvm::dbgs () << " SND: " ;
389
- snd.dump ();
390
- llvm::dbgs () << " RESULT: " ;
391
- fst_reduced.dump ();
392
- );
373
+ LLVM_DEBUG (llvm::dbgs () << " JOIN PEFORMED: \n FST: " ;
374
+ fst.print (llvm::dbgs ()); llvm::dbgs () << " SND: " ;
375
+ snd.print (llvm::dbgs ()); llvm::dbgs () << " RESULT: " ;
376
+ fst_reduced.print (llvm::dbgs ()););
393
377
394
378
assert (fst_reduced.is_canonical_correct ());
395
379
@@ -410,7 +394,7 @@ class Partition {
410
394
llvm::function_ref<void (const PartitionOp &, Element)> handleFailure =
411
395
[](const PartitionOp &, Element) {},
412
396
413
- std::vector <Element> nonconsumables = {},
397
+ ArrayRef <Element> nonconsumables = {},
414
398
415
399
llvm::function_ref<void (const PartitionOp &, Element)>
416
400
handleConsumeNonConsumable = [](const PartitionOp &, Element) {}) {
@@ -531,24 +515,27 @@ class Partition {
531
515
llvm::dbgs () << " }\n " ;
532
516
}
533
517
534
- void dump () const LLVM_ATTRIBUTE_USED {
518
+ SWIFT_DEBUG_DUMP { print (llvm::dbgs ()); }
519
+
520
+ void print (llvm::raw_ostream &os) const {
535
521
std::map<Region, std::vector<Element>> buckets;
536
522
537
523
for (auto [i, label] : labels)
538
524
buckets[label].push_back (i);
539
525
540
- llvm::dbgs () << " [" ;
526
+ os << " [" ;
541
527
for (auto [label, indices] : buckets) {
542
- llvm::dbgs () << (label.isConsumed () ? " {" : " (" );
528
+ os << (label.isConsumed () ? " {" : " (" );
543
529
int j = 0 ;
544
530
for (Element i : indices) {
545
- llvm::dbgs () << (j++ ? " " : " " ) << i;
531
+ os << (j++ ? " " : " " ) << i;
546
532
}
547
- llvm::dbgs () << (label.isConsumed () ? " }" : " )" );
533
+ os << (label.isConsumed () ? " }" : " )" );
548
534
}
549
- llvm::dbgs () << " ]\n " ;
535
+ os << " ]\n " ;
550
536
}
551
537
};
552
- }
538
+
539
+ } // namespace swift
553
540
554
541
#endif // SWIFT_PARTITIONUTILS_H
0 commit comments