@@ -326,7 +326,7 @@ struct RequireLiveness {
326
326
} // namespace
327
327
328
328
void RequireLiveness::processDefBlock () {
329
- LLVM_DEBUG (llvm::dbgs () << " Processing def block!\n " );
329
+ REGIONBASEDISOLATION_LOG (llvm::dbgs () << " Processing def block!\n " );
330
330
// First walk from the beginning of the block to the transfer instruction to
331
331
// see if we have any requires before our def. Once we find one, we can skip
332
332
// the traversal and jump straight to the transfer.
@@ -335,8 +335,9 @@ void RequireLiveness::processDefBlock() {
335
335
ii != ie; ++ii) {
336
336
if (allRequires.contains (&*ii) && !firstRequireBeforeTransferInDefBlock) {
337
337
firstRequireBeforeTransferInDefBlock = &*ii;
338
- LLVM_DEBUG (llvm::dbgs () << " Found transfer before def: "
339
- << *firstRequireBeforeTransferInDefBlock);
338
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
339
+ << " Found transfer before def: "
340
+ << *firstRequireBeforeTransferInDefBlock);
340
341
break ;
341
342
}
342
343
}
@@ -353,7 +354,8 @@ void RequireLiveness::processDefBlock() {
353
354
continue ;
354
355
355
356
finalRequires.insert (&*ii);
356
- LLVM_DEBUG (llvm::dbgs () << " Found transfer after def: " << *ii);
357
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
358
+ << " Found transfer after def: " << *ii);
357
359
return ;
358
360
}
359
361
}
@@ -370,13 +372,14 @@ void RequireLiveness::processNonDefBlock(SILBasicBlock *block) {
370
372
371
373
template <typename Collection>
372
374
void RequireLiveness::process (Collection requireInstList) {
373
- LLVM_DEBUG ( llvm::dbgs () << " ==> Performing Require Liveness for: "
374
- << *transferInst);
375
+ REGIONBASEDISOLATION_LOG (
376
+ llvm::dbgs () << " ==> Performing Require Liveness for: " << *transferInst);
375
377
376
378
// Then put all of our requires into our allRequires set.
377
379
BasicBlockWorklist initializingWorklist (transferInst->getFunction ());
378
380
for (auto require : requireInstList) {
379
- LLVM_DEBUG (llvm::dbgs () << " Require Inst: " << **require);
381
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
382
+ << " Require Inst: " << **require);
380
383
allRequires.insert (*require);
381
384
initializingWorklist.pushIfNotVisited (require->getParent ());
382
385
}
@@ -388,19 +391,20 @@ void RequireLiveness::process(Collection requireInstList) {
388
391
// If we found /any/ requries after the transferInst, we can bail early since
389
392
// that is guaranteed to dominate all further requires.
390
393
if (!finalRequires.empty ()) {
391
- LLVM_DEBUG (
394
+ REGIONBASEDISOLATION_LOG (
392
395
llvm::dbgs ()
393
396
<< " Found transfer after def in def block! Exiting early!\n " );
394
397
return ;
395
398
}
396
399
397
- LLVM_DEBUG (llvm::dbgs () << " Did not find transfer after def in def "
398
- " block! Walking blocks!\n " );
400
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
401
+ << " Did not find transfer after def in def "
402
+ " block! Walking blocks!\n " );
399
403
400
404
// If we found a transfer in the def block before our def, add it to the block
401
405
// state for the def.
402
406
if (firstRequireBeforeTransferInDefBlock) {
403
- LLVM_DEBUG (
407
+ REGIONBASEDISOLATION_LOG (
404
408
llvm::dbgs ()
405
409
<< " Found a require before transfer! Adding to block state!\n " );
406
410
auto blockState = blockLivenessInfo.get (transferInst->getParent ());
@@ -414,8 +418,9 @@ void RequireLiveness::process(Collection requireInstList) {
414
418
for (auto &inst : *requireBlock) {
415
419
if (!allRequires.contains (&inst))
416
420
continue ;
417
- LLVM_DEBUG (llvm::dbgs () << " Mapping Block bb"
418
- << requireBlock->getDebugID () << " to: " << inst);
421
+ REGIONBASEDISOLATION_LOG (llvm::dbgs () << " Mapping Block bb"
422
+ << requireBlock->getDebugID ()
423
+ << " to: " << inst);
419
424
blockState.get ()->setInst (generation, &inst);
420
425
break ;
421
426
}
@@ -1193,13 +1198,15 @@ void TransferNonSendableImpl::emitUseAfterTransferDiagnostics() {
1193
1198
if (transferOpToRequireInstMultiMap.empty ())
1194
1199
return ;
1195
1200
1196
- LLVM_DEBUG (llvm::dbgs () << " Emitting use after transfer diagnostics.\n " );
1201
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
1202
+ << " Emitting use after transfer diagnostics.\n " );
1197
1203
1198
1204
for (auto [transferOp, requireInsts] :
1199
1205
transferOpToRequireInstMultiMap.getRange ()) {
1200
- LLVM_DEBUG (llvm::dbgs ()
1201
- << " Transfer Op. Number: " << transferOp->getOperandNumber ()
1202
- << " . User: " << *transferOp->getUser ());
1206
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
1207
+ << " Transfer Op. Number: "
1208
+ << transferOp->getOperandNumber ()
1209
+ << " . User: " << *transferOp->getUser ());
1203
1210
1204
1211
// Then look for our requires before we emit any error. We want to emit a
1205
1212
// single we don't understand error if we do not find the require.
@@ -1785,7 +1792,7 @@ void TransferNonSendableImpl::emitTransferredNonTransferrableDiagnostics() {
1785
1792
if (transferredNonTransferrableInfoList.empty ())
1786
1793
return ;
1787
1794
1788
- LLVM_DEBUG (
1795
+ REGIONBASEDISOLATION_LOG (
1789
1796
llvm::dbgs () << " Emitting transfer non transferrable diagnostics.\n " );
1790
1797
1791
1798
for (auto info : transferredNonTransferrableInfoList) {
@@ -2186,14 +2193,15 @@ struct DiagnosticEvaluator final
2186
2193
}
2187
2194
2188
2195
auto rep = info->getValueMap ().getRepresentative (transferredVal);
2189
- LLVM_DEBUG (llvm::dbgs ()
2190
- << " Emitting Use After Transfer Error!\n "
2191
- << " Transferring Inst: " << *transferringOp->getUser ()
2192
- << " Transferring Op Value: " << transferringOp->get ()
2193
- << " Require Inst: " << *partitionOp.getSourceInst ()
2194
- << " ID: %%" << transferredVal << " \n "
2195
- << " Rep: " << *rep << " Transferring Op Num: "
2196
- << transferringOp->getOperandNumber () << ' \n ' );
2196
+ REGIONBASEDISOLATION_LOG (
2197
+ llvm::dbgs ()
2198
+ << " Emitting Use After Transfer Error!\n "
2199
+ << " Transferring Inst: " << *transferringOp->getUser ()
2200
+ << " Transferring Op Value: " << transferringOp->get ()
2201
+ << " Require Inst: " << *partitionOp.getSourceInst ()
2202
+ << " ID: %%" << transferredVal << " \n "
2203
+ << " Rep: " << *rep << " Transferring Op Num: "
2204
+ << transferringOp->getOperandNumber () << ' \n ' );
2197
2205
transferOpToRequireInstMultiMap.insert (
2198
2206
transferringOp,
2199
2207
RequireInst::forUseAfterTransfer (partitionOp.getSourceInst ()));
@@ -2202,14 +2210,14 @@ struct DiagnosticEvaluator final
2202
2210
void handleTransferNonTransferrable (
2203
2211
const PartitionOp &partitionOp, Element transferredVal,
2204
2212
SILDynamicMergedIsolationInfo isolationRegionInfo) const {
2205
- LLVM_DEBUG ( llvm::dbgs ()
2206
- << " Emitting TransferNonTransferrable Error!\n "
2207
- << " ID: %%" << transferredVal << " \n "
2208
- << " Rep: "
2209
- << *info->getValueMap ().getRepresentative (transferredVal)
2210
- << " Dynamic Isolation Region: " ;
2211
- isolationRegionInfo.printForDiagnostics (llvm::dbgs ());
2212
- llvm::dbgs () << ' \n ' );
2213
+ REGIONBASEDISOLATION_LOG (
2214
+ llvm::dbgs () << " Emitting TransferNonTransferrable Error!\n "
2215
+ << " ID: %%" << transferredVal << " \n "
2216
+ << " Rep: "
2217
+ << *info->getValueMap ().getRepresentative (transferredVal)
2218
+ << " Dynamic Isolation Region: " ;
2219
+ isolationRegionInfo.printForDiagnostics (llvm::dbgs ());
2220
+ llvm::dbgs () << ' \n ' );
2213
2221
auto *self = const_cast <DiagnosticEvaluator *>(this );
2214
2222
auto nonTransferrableValue =
2215
2223
info->getValueMap ().getRepresentative (transferredVal);
@@ -2221,15 +2229,15 @@ struct DiagnosticEvaluator final
2221
2229
void handleInOutSendingNotDisconnectedAtExitError (
2222
2230
const PartitionOp &partitionOp, Element inoutSendingVal,
2223
2231
SILDynamicMergedIsolationInfo isolationRegionInfo) const {
2224
- LLVM_DEBUG ( llvm::dbgs ()
2225
- << " Emitting InOut Sending ActorIsolated at end of "
2226
- " Function Error!\n "
2227
- << " ID: %%" << inoutSendingVal << " \n "
2228
- << " Rep: "
2229
- << *info->getValueMap ().getRepresentative (inoutSendingVal)
2230
- << " Dynamic Isolation Region: " ;
2231
- isolationRegionInfo.printForDiagnostics (llvm::dbgs ());
2232
- llvm::dbgs () << ' \n ' );
2232
+ REGIONBASEDISOLATION_LOG (
2233
+ llvm::dbgs () << " Emitting InOut Sending ActorIsolated at end of "
2234
+ " Function Error!\n "
2235
+ << " ID: %%" << inoutSendingVal << " \n "
2236
+ << " Rep: "
2237
+ << *info->getValueMap ().getRepresentative (inoutSendingVal)
2238
+ << " Dynamic Isolation Region: " ;
2239
+ isolationRegionInfo.printForDiagnostics (llvm::dbgs ());
2240
+ llvm::dbgs () << ' \n ' );
2233
2241
auto *self = const_cast <DiagnosticEvaluator *>(this );
2234
2242
auto nonTransferrableValue =
2235
2243
info->getValueMap ().getRepresentative (inoutSendingVal);
@@ -2243,30 +2251,30 @@ struct DiagnosticEvaluator final
2243
2251
const PartitionOp &partitionOp, Element transferredVal,
2244
2252
Element actualNonTransferrableValue,
2245
2253
SILDynamicMergedIsolationInfo isolationRegionInfo) const {
2246
- LLVM_DEBUG ( llvm::dbgs ()
2247
- << " Emitting TransferNonTransferrable Error!\n "
2248
- << " ID: %%" << transferredVal << " \n "
2249
- << " Rep: "
2250
- << *info->getValueMap ().getRepresentative (transferredVal)
2251
- << " Dynamic Isolation Region: " ;
2252
- isolationRegionInfo.printForDiagnostics (llvm::dbgs ());
2253
- llvm::dbgs () << ' \n ' );
2254
+ REGIONBASEDISOLATION_LOG (
2255
+ llvm::dbgs () << " Emitting TransferNonTransferrable Error!\n "
2256
+ << " ID: %%" << transferredVal << " \n "
2257
+ << " Rep: "
2258
+ << *info->getValueMap ().getRepresentative (transferredVal)
2259
+ << " Dynamic Isolation Region: " ;
2260
+ isolationRegionInfo.printForDiagnostics (llvm::dbgs ());
2261
+ llvm::dbgs () << ' \n ' );
2254
2262
2255
2263
auto *self = const_cast <DiagnosticEvaluator *>(this );
2256
2264
// If we have a non-actor introducing fake representative value, just use
2257
2265
// the value that actually introduced the actor isolation.
2258
2266
if (auto nonTransferrableValue = info->getValueMap ().maybeGetRepresentative (
2259
2267
actualNonTransferrableValue)) {
2260
- LLVM_DEBUG (llvm::dbgs ()
2261
- << " ActualTransfer: " << nonTransferrableValue);
2268
+ REGIONBASEDISOLATION_LOG (llvm::dbgs () << " ActualTransfer: "
2269
+ << nonTransferrableValue);
2262
2270
self->transferredNonTransferrable .emplace_back (partitionOp.getSourceOp (),
2263
2271
nonTransferrableValue,
2264
2272
isolationRegionInfo);
2265
2273
} else if (auto *nonTransferrableInst =
2266
2274
info->getValueMap ().maybeGetActorIntroducingInst (
2267
2275
actualNonTransferrableValue)) {
2268
- LLVM_DEBUG (llvm::dbgs ()
2269
- << " ActualTransfer: " << *nonTransferrableInst);
2276
+ REGIONBASEDISOLATION_LOG (llvm::dbgs () << " ActualTransfer: "
2277
+ << *nonTransferrableInst);
2270
2278
self->transferredNonTransferrable .emplace_back (
2271
2279
partitionOp.getSourceOp (), nonTransferrableInst, isolationRegionInfo);
2272
2280
} else {
@@ -2287,7 +2295,7 @@ struct DiagnosticEvaluator final
2287
2295
SILFunctionArgument *destValue, Element srcElement, SILValue srcValue,
2288
2296
SILDynamicMergedIsolationInfo srcIsolationRegionInfo) const {
2289
2297
auto srcRep = info->getValueMap ().getRepresentativeValue (srcElement);
2290
- LLVM_DEBUG (
2298
+ REGIONBASEDISOLATION_LOG (
2291
2299
llvm::dbgs ()
2292
2300
<< " Emitting Error! Kind: Assign Isolated Into Sending Result!\n "
2293
2301
<< " Assign Inst: " << *partitionOp.getSourceInst ()
@@ -2306,14 +2314,15 @@ struct DiagnosticEvaluator final
2306
2314
Element inoutSendingVal,
2307
2315
Operand *transferringOp) const {
2308
2316
auto rep = info->getValueMap ().getRepresentative (inoutSendingVal);
2309
- LLVM_DEBUG (llvm::dbgs ()
2310
- << " Emitting InOut Not Reinitialized At End Of Function!\n "
2311
- << " Transferring Inst: " << *transferringOp->getUser ()
2312
- << " Transferring Op Value: " << transferringOp->get ()
2313
- << " Require Inst: " << *partitionOp.getSourceInst ()
2314
- << " ID: %%" << inoutSendingVal << " \n "
2315
- << " Rep: " << *rep << " Transferring Op Num: "
2316
- << transferringOp->getOperandNumber () << ' \n ' );
2317
+ REGIONBASEDISOLATION_LOG (
2318
+ llvm::dbgs ()
2319
+ << " Emitting InOut Not Reinitialized At End Of Function!\n "
2320
+ << " Transferring Inst: " << *transferringOp->getUser ()
2321
+ << " Transferring Op Value: " << transferringOp->get ()
2322
+ << " Require Inst: " << *partitionOp.getSourceInst ()
2323
+ << " ID: %%" << inoutSendingVal << " \n "
2324
+ << " Rep: " << *rep << " Transferring Op Num: "
2325
+ << transferringOp->getOperandNumber () << ' \n ' );
2317
2326
transferOpToRequireInstMultiMap.insert (
2318
2327
transferringOp, RequireInst::forInOutReinitializationNeeded (
2319
2328
partitionOp.getSourceInst ()));
@@ -2372,17 +2381,19 @@ struct DiagnosticEvaluator final
2372
2381
2373
2382
void TransferNonSendableImpl::runDiagnosticEvaluator () {
2374
2383
// Then for each block...
2375
- LLVM_DEBUG (llvm::dbgs () << " Walking blocks for diagnostics.\n " );
2384
+ REGIONBASEDISOLATION_LOG (llvm::dbgs () << " Walking blocks for diagnostics.\n " );
2376
2385
for (auto [block, blockState] : regionInfo->getRange ()) {
2377
- LLVM_DEBUG (llvm::dbgs () << " |--> Block bb" << block.getDebugID () << " \n " );
2386
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
2387
+ << " |--> Block bb" << block.getDebugID () << " \n " );
2378
2388
2379
2389
if (!blockState.getLiveness ()) {
2380
- LLVM_DEBUG (llvm::dbgs () << " Dead block... skipping!\n " );
2390
+ REGIONBASEDISOLATION_LOG (llvm::dbgs () << " Dead block... skipping!\n " );
2381
2391
continue ;
2382
2392
}
2383
2393
2384
- LLVM_DEBUG (llvm::dbgs () << " Entry Partition: " ;
2385
- blockState.getEntryPartition ().print (llvm::dbgs ()));
2394
+ REGIONBASEDISOLATION_LOG (
2395
+ llvm::dbgs () << " Entry Partition: " ;
2396
+ blockState.getEntryPartition ().print (llvm::dbgs ()));
2386
2397
2387
2398
// Grab its entry partition and setup an evaluator for the partition that
2388
2399
// has callbacks that emit diagnsotics...
@@ -2399,11 +2410,12 @@ void TransferNonSendableImpl::runDiagnosticEvaluator() {
2399
2410
eval.apply (partitionOp);
2400
2411
}
2401
2412
2402
- LLVM_DEBUG (llvm::dbgs () << " Exit Partition: " ;
2403
- workingPartition.print (llvm::dbgs ()));
2413
+ REGIONBASEDISOLATION_LOG (llvm::dbgs () << " Exit Partition: " ;
2414
+ workingPartition.print (llvm::dbgs ()));
2404
2415
}
2405
2416
2406
- LLVM_DEBUG (llvm::dbgs () << " Finished walking blocks for diagnostics.\n " );
2417
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
2418
+ << " Finished walking blocks for diagnostics.\n " );
2407
2419
2408
2420
// Now that we have found all of our transferInsts/Requires emit errors.
2409
2421
transferOpToRequireInstMultiMap.setFrozen ();
@@ -2418,8 +2430,8 @@ void TransferNonSendableImpl::runDiagnosticEvaluator() {
2418
2430
// / state.
2419
2431
void TransferNonSendableImpl::emitDiagnostics () {
2420
2432
auto *function = regionInfo->getFunction ();
2421
- LLVM_DEBUG (llvm::dbgs () << " Emitting diagnostics for function "
2422
- << function->getName () << " \n " );
2433
+ REGIONBASEDISOLATION_LOG (llvm::dbgs () << " Emitting diagnostics for function "
2434
+ << function->getName () << " \n " );
2423
2435
2424
2436
runDiagnosticEvaluator ();
2425
2437
emitTransferredNonTransferrableDiagnostics ();
@@ -2436,14 +2448,15 @@ class TransferNonSendable : public SILFunctionTransform {
2436
2448
2437
2449
auto *functionInfo = getAnalysis<RegionAnalysis>()->get (function);
2438
2450
if (!functionInfo->isSupportedFunction ()) {
2439
- LLVM_DEBUG (llvm::dbgs () << " ===> SKIPPING UNSUPPORTED FUNCTION: "
2440
- << function->getName () << ' \n ' );
2451
+ REGIONBASEDISOLATION_LOG (llvm::dbgs ()
2452
+ << " ===> SKIPPING UNSUPPORTED FUNCTION: "
2453
+ << function->getName () << ' \n ' );
2441
2454
2442
2455
return ;
2443
2456
}
2444
2457
2445
- LLVM_DEBUG ( llvm::dbgs ()
2446
- << " ===> PROCESSING: " << function->getName () << ' \n ' );
2458
+ REGIONBASEDISOLATION_LOG (
2459
+ llvm::dbgs () << " ===> PROCESSING: " << function->getName () << ' \n ' );
2447
2460
2448
2461
TransferNonSendableImpl impl (functionInfo);
2449
2462
impl.emitDiagnostics ();
0 commit comments