This patch builds over https://reviews.llvm.org/rL303349 and replaces the use of the condition only if it is safe to do so.
We should not blindly RAUW the condition if experimental.guard or assume is a use of that
condition. This is because LVI may have used the guard/assume to identify the
value of the condition, and RUAWing will fold the guard/assume and uses before the guards/assumes.
This should be "We can safely RAUW Cond only if ...".
I have separated this out into a function because there are 2 places currently where we try to RAUW the condition. Tests added trigger both these source code cases: ProcessBlock and ProcessThreadableEdges.