For DSE with MemorySSA it is beneficial to only use a single step with
the MemorySSA walker, so we can better control the number of steps
together with other limits and also weed out invalid/unprofitable paths
early on.
This patch requires a follow-up patch to be most effective, which I will
share soon after putting this patch up.
This temporarily XFAIL's the limit tests, because we now explore more
MemoryDefs that may not alias/clobber the killing def. This will be
improved/fixed by the follow-up patch.
This patch allows us to aggressively cut down compile time, geomean
-O3 -0.64%, ReleaseThinLTO -1.65%, at the expense of fewer stores
removed. Subsequent patches will increase the number of removed stores
again, while keeping compile-time in check.
The new WalkerStepLimit might warrant an additional option.
Use cl::opts instead of limit numbers in code (e.g. "SameBlockLimit")