[llvm][CycleInfo] Quick look-up for block in cycle.
authorSameer Sahasrabuddhe <sameer.sahasrabuddhe@amd.com>
Wed, 29 Mar 2023 06:37:44 +0000 (12:07 +0530)
committerSameer Sahasrabuddhe <sameer.sahasrabuddhe@amd.com>
Wed, 29 Mar 2023 06:37:44 +0000 (12:07 +0530)
commit98286a04ef0af46279cf11b1e2c133e978d4224f
tree0ccb0cc4616a8a83a840fcc40e5ba326866899ce
parente4918d43763e8bdcdf9ad27f4eb536bf9aa4e3cf
[llvm][CycleInfo] Quick look-up for block in cycle.

Use a SetVector to store blocks in a cycle to ensure a quick loop-up when
querying whether the cycle contains a given block. This is along the same lines
as the SmallPtrSet in LoopBase, introduced by commit
be640b28c0cb81b77015baaef20ca2941fc61dea.

To make this work, we also enhance SetVector to support vector operations with
pointers and set operations with const pointers in the same container.

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D146136
llvm/include/llvm/ADT/GenericCycleImpl.h
llvm/include/llvm/ADT/GenericCycleInfo.h
llvm/include/llvm/ADT/SetVector.h
llvm/include/llvm/ADT/SmallSet.h
llvm/unittests/ADT/SetVectorTest.cpp