From 8febe3fad2ea28c55be831e815ec9f036f2f288e Mon Sep 17 00:00:00 2001 From: Maxim Kuvyrkov Date: Mon, 27 Aug 2012 22:11:48 +0000 Subject: [PATCH] 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 --- gcc/ChangeLog | 6 ++++++ gcc/sched-deps.c | 24 ++++++++++++------------ 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5139e98cc96a..48fa237cf925 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-08-27 Maxim Kuvyrkov + + * 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 PR target/46254 diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index a8b0d521912a..1055ef4bba28 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -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); -- 2.47.2