[llvm] [Uniformity] Fixed control-div early stop (PR #139667)
    Sameer Sahasrabuddhe via llvm-commits 
    llvm-commits at lists.llvm.org
       
    Fri May 16 08:12:46 PDT 2025
    
    
  
ssahasra wrote:
What I have in mind is something like this:
```
      // Early stopping criterion
      int DivTermIdx = CyclePOT.getIndex(&DivTermBlock);
      const auto *ImmPDom = getIPDom(&DivTermBlock);
      int FloorIdx = CyclePOT.getIndex(ImmPDom);
      LLVM_DEBUG(dbgs() << "IPDom " << Context.print(ImmPDom)
                 << "with index " << FloorIdx << "\n");
      CycleT *CommonCycle = CI.getSmallestCommonCycle(&DivTermBlock, ImmPDom);
      if (CommonCycle)
        FloorIdx = std::min<int>(FloorIdx, CyclePOT.getIndex(CommonCycle->getHeader()));
      LLVM_DEBUG(dbgs() << "FloorIdx: " << FloorIdx << "\n");
```
Then eliminate all the logic for updating FloorIdx, because we already know the minimum, and do the usual traversal that visits all newly labelled blocks such that `BlockIdx < FloorIdx`.
https://github.com/llvm/llvm-project/pull/139667
    
    
More information about the llvm-commits
mailing list