On Tue, Nov 23, 2010 at 01:54:41PM -0500, Vladimir Makarov wrote:
On 11/23/2010 12:22 PM, Jakub Jelinek wrote:
Fixed by instead remembering if a JUMP_INSN stands only for itself
and nothing else in the deps->last_pending_memory_flush list
(such jumps have REG_NOTE_KIND set to REG_DEP_ANTI, could be
anything but REG_DEP_TRUE which is the default and used for
additions to the list from flush_pending_lists) and using REG_NOTE_KIND
instead of JUMP_P checks in the two places which care about it.
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk?
It looks ok for me, Jakub. Although it would be nice to add a
comment about meaning REG_DEP_ANTI for element of list
last_pending_memory_flush when you set it up in function
deps_analyze_insn.
Maybe also define macros?
/* In deps->last_pending_memory_flush marks JUMP_INSNs that weren't
added to the list because of flush_pending_lists, stands just
for itself and not for any other pending memory reads/writes. */
#define NON_FLUSH_JUMP_KIND REG_DEP_ANTI
#define NON_FLUSH_JUMP_P(x) (REG_NOTE_KIND (x) == REG_DEP_ANTI)