On 09/27/2011 02:02 PM, Bernd Schmidt wrote: > Here's a new version of the entire shrink-wrapping patch with the > trap_if test replaced by the outgoing_edges_match change, the condjump_p > bug fixed, and the dump output and testcase adjusted a bit. Bootstrapped > and tested on i686-linux and mips-elf. Ok? (I guess I could also leave > out the RETURN_ADDR_REGNUM thing, since it was needed for ARM only and I > can't quite remember why at the moment).
Please do leave out RETURN_ADDR_REGNUM for now. If you remember why, then you could bring it back alongside the patch for the ARM backend. As for the i386 backend changes, not an objection per se, but I'm trying to understand why we need so many copies of patterns. For instance, while I understand the continued existance of the "return" expander, why doesn't that expand to a simple_return? After all the ix86_can_use_return_insn_p asserts that there *is* no epilogue. nd if "return" can expand to simple_return, can't all of the return_internal_* patterns also only use simple_return and avoid the macro-ization? I don't see anything glaringly wrong in the middle end. Although the thread_prologue_and_epilogue_insns function is now gigantic. If there were an easy way to break that up and reduce the amount of conditional compilation at the same time... that'd be great, but not a requirement. r~