On Fri, Jan 13, 2012 at 10:58 AM, Richard Sandiford <richard.sandif...@linaro.org> wrote:
>>>> The problem my patch solves is the answer to the question "Is the >>>> choosen non-live temporary register untouched over the insn >>>> sequence?". The answer: "Yes, if it was not set or clobbered by any >>>> insn in the sequence". >>> >>> Are you sure that you don't need to do this in addition to the existing >>> test, >>> instead of in lieu of the existing test? >> >> Yes, because new test ALWAYS includes the registers that were wrongly >> marked as dead by previous test due to REG_UNUSED and noclobber >> processing. > > Yeah, the patch looks like the right fix to me FWIW. Being able to use > DF_INSN_DEFS in this way is part of the point of having df: when going > from one insn to the next within the same bb, there are no "hidden" > influences that would cause a register to become live outside of > DF_INSN_DEFS. The only requirement is that we call df_insn_rescan > on new instructions, and we do (in peep2_update_life, where we need > it for df_simulate_one_insn_backwards). > > Or to put it another way: the insn-to-insn changes in the current liveness > sets are all produced by df_simulate_one_insn_{backwards,forwards}, which > uses the same information. So I don't think there's any reason why we > need to keep the current code as well. Patch was approved offline by Richard Sandiford, so committed to mainline SVN, will be committed to release branches after bootstrap & regression tests. Thanks, Uros.