[llvm][Uniformity] correctly use a vector as a set by uniqifying elements
authorSameer Sahasrabuddhe <sameer.sahasrabuddhe@amd.com>
Fri, 3 Mar 2023 07:13:14 +0000 (12:43 +0530)
committerSameer Sahasrabuddhe <sameer.sahasrabuddhe@amd.com>
Fri, 3 Mar 2023 10:26:48 +0000 (15:56 +0530)
commit093b5ac85f064875f62775bba73dbaf8feb85798
tree0e66eb22e00d707eaec1d798be4dd09d1f2d1355
parent6121190b8ccca293632a0ba24a3344938dc2d705
[llvm][Uniformity] correctly use a vector as a set by uniqifying elements

The search for temporal divergence needs to determine a dominance frontier
defined for a cycle. The implementation uses a temporary vector to store a set
of newly discovered successors. Failing to uniqify the elements in this vector
causes a very large regression in compile time due to an exponential number of
redundant visits.

This fixes github issue #61123

Reviewed By: foad

Differential Revision: https://reviews.llvm.org/D145216
llvm/include/llvm/ADT/GenericUniformityImpl.h