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.
36 KiB
36 KiB