sched-deps.c (add_dependence_list_and_free): Simplify.
* sched-deps.c (add_dependence_list_and_free): Simplify. (flush_pending_list_and_free): Fix a hack that was fixing a hack. Free lists when add_dependence_list_and_free doesn't free them. From-SVN: r190733
This commit is contained in:
parent
28591f4a8c
commit
8febe3fad2
|
@ -1,3 +1,9 @@
|
|||
2012-08-27 Maxim Kuvyrkov <maxim@codesourcery.com>
|
||||
|
||||
* sched-deps.c (add_dependence_list_and_free): Simplify.
|
||||
(flush_pending_list_and_free): Fix a hack that was fixing a hack. Free
|
||||
lists when add_dependence_list_and_free doesn't free them.
|
||||
|
||||
2012-08-27 Uros Bizjak <ubizjak@gmail.com>
|
||||
|
||||
PR target/46254
|
||||
|
|
|
@ -1564,24 +1564,15 @@ static void
|
|||
add_dependence_list_and_free (struct deps_desc *deps, rtx insn, rtx *listp,
|
||||
int uncond, enum reg_note dep_type)
|
||||
{
|
||||
rtx list, next;
|
||||
add_dependence_list (insn, *listp, uncond, dep_type);
|
||||
|
||||
/* We don't want to short-circuit dependencies involving debug
|
||||
insns, because they may cause actual dependencies to be
|
||||
disregarded. */
|
||||
if (deps->readonly || DEBUG_INSN_P (insn))
|
||||
{
|
||||
add_dependence_list (insn, *listp, uncond, dep_type);
|
||||
return;
|
||||
}
|
||||
return;
|
||||
|
||||
for (list = *listp, *listp = NULL; list ; list = next)
|
||||
{
|
||||
next = XEXP (list, 1);
|
||||
if (uncond || ! sched_insns_conditions_mutex_p (insn, XEXP (list, 0)))
|
||||
add_dependence (insn, XEXP (list, 0), dep_type);
|
||||
free_INSN_LIST_node (list);
|
||||
}
|
||||
free_INSN_LIST_list (listp);
|
||||
}
|
||||
|
||||
/* Remove all occurrences of INSN from LIST. Return the number of
|
||||
|
@ -1765,6 +1756,15 @@ flush_pending_lists (struct deps_desc *deps, rtx insn, int for_read,
|
|||
add_dependence_list_and_free (deps, insn, &deps->pending_jump_insns, 1,
|
||||
REG_DEP_ANTI);
|
||||
|
||||
if (DEBUG_INSN_P (insn))
|
||||
{
|
||||
if (for_write)
|
||||
free_INSN_LIST_list (&deps->pending_read_insns);
|
||||
free_INSN_LIST_list (&deps->pending_write_insns);
|
||||
free_INSN_LIST_list (&deps->last_pending_memory_flush);
|
||||
free_INSN_LIST_list (&deps->pending_jump_insns);
|
||||
}
|
||||
|
||||
if (!deps->readonly)
|
||||
{
|
||||
free_EXPR_LIST_list (&deps->pending_write_mems);
|
||||
|
|
Loading…
Reference in New Issue