We plan to make MustExecute analysis smarter in D50377, in particular
we want to be able to answer "is this Must Execute if the loop is entered?"
less conservatively for every loop block or instruction.
This patch reworks API just to make the functional change compact and
easier to review.
Drop the DT from this patch. That wasn't the API change with the risky implications.
Also, shouldn't L always be non-null? If so, assert or use reference.
Reading down in the patch, I see that L can be null. You'd be better with two constructors here. One which explicitly created an uninitialized object and the other which always created an initialized one.