IRCE may fail to prove predicates when loop bounds are rewritten by LoopConstrainer::applyLoopGuards(). In such cases, simple predicates (e.g. %start < %limit) become obscured by strengthened SCEV expressions, even though they are trivially implied by the guard in the loop preheader. See: https://github.com/llvm/llvm-project/issues/167827 This change makes IRCE attempt to prove predicates both on the original SCEVs and on the guarded SCEVs, preventing incorrect rejection of loops with safe bounds.