This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Fix for df problems, and and an ifcvt improvement


On 04/22/2010 12:03 PM, Bernd Schmidt wrote:
The function calls df_simulate_find_defs to mark all set registers as
live, then clears anything for which it can find a REG_DEAD/REG_UNUSED
note.  df_simulate_find_defs is broken for this purpose: it should
ignore clobbers, but it ignores partial and conditional sets.  Confusion
about how to handle the latter two is a common problem with the df code;
in this case at least it's clearly wrong to ignore them.

Right. It was even more broken before


2009-11-08 Paolo Bonzini <bonzini@gnu.org>

        * df-problems.c: Fix documentation for forward simulation of LR.
        (df_simulate_one_insn_forwards): Use df_simulate_find_defs.
        (df_simulate_finalize_forwards): Remove.
        * df.h (df_simulate_finalize_forwards): Remove.

I fixed it to at least make sense, but I didn't recognize the possibility to ignore clobbers (note that for df_simulate_one_insn_forwards it won't usually matter to ignore partial and conditional sets, because those should already be live).

Patch is okay, thanks.

Paolo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]