http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50588
--- Comment #14 from Bernd Schmidt <bernds at gcc dot gnu.org> 2011-10-06 13:30:31 UTC --- It looks like ifcvt (or rather, can_move_insns_across_p) is doing the right thing. The problem is that may_trap_or_fault_p returns false for the memory reference with an out-of-range address based on the frame pointer. I'll keep thinking about it; no good idea yet about how to fix it without losing too many optimization opportunities.