@@ -216,6 +216,7 @@ bool AMDGPUUnifyDivergentExitNodes::runOnFunction(Function &F) {
216
216
217
217
bool InsertExport = false ;
218
218
219
+ bool Changed = false ;
219
220
for (BasicBlock *BB : PDT.getRoots ()) {
220
221
if (isa<ReturnInst>(BB->getTerminator ())) {
221
222
if (!isUniformlyReached (DA, *BB))
@@ -281,6 +282,7 @@ bool AMDGPUUnifyDivergentExitNodes::runOnFunction(Function &F) {
281
282
BB->getTerminator ()->eraseFromParent ();
282
283
BranchInst::Create (TransitionBB, DummyReturnBB, BoolTrue, BB);
283
284
}
285
+ Changed = true ;
284
286
}
285
287
}
286
288
@@ -299,6 +301,7 @@ bool AMDGPUUnifyDivergentExitNodes::runOnFunction(Function &F) {
299
301
BB->getTerminator ()->eraseFromParent ();
300
302
BranchInst::Create (UnreachableBlock, BB);
301
303
}
304
+ Changed = true ;
302
305
}
303
306
304
307
if (!ReturningBlocks.empty ()) {
@@ -322,15 +325,16 @@ bool AMDGPUUnifyDivergentExitNodes::runOnFunction(Function &F) {
322
325
// actually reached here.
323
326
ReturnInst::Create (F.getContext (), RetVal, UnreachableBlock);
324
327
ReturningBlocks.push_back (UnreachableBlock);
328
+ Changed = true ;
325
329
}
326
330
}
327
331
328
332
// Now handle return blocks.
329
333
if (ReturningBlocks.empty ())
330
- return false ; // No blocks return
334
+ return Changed ; // No blocks return
331
335
332
336
if (ReturningBlocks.size () == 1 && !InsertExport)
333
- return false ; // Already has a single return block
337
+ return Changed ; // Already has a single return block
334
338
335
339
const TargetTransformInfo &TTI
336
340
= getAnalysis<TargetTransformInfoWrapperPass>().getTTI (F);
0 commit comments