diff options
author | Maxim Kuvyrkov <maxim@codesourcery.com> | 2012-08-27 22:11:48 +0000 |
---|---|---|
committer | Maxim Kuvyrkov <mkuvyrkov@gcc.gnu.org> | 2012-08-27 22:11:48 +0000 |
commit | 8febe3fad2ea28c55be831e815ec9f036f2f288e (patch) | |
tree | c9824c8286739cd359de0b9bffbc913025882f11 /gcc | |
parent | 28591f4a8cbfab06692dcd8ae9a69ef95ecdf378 (diff) | |
download | gcc-8febe3fad2ea28c55be831e815ec9f036f2f288e.zip gcc-8febe3fad2ea28c55be831e815ec9f036f2f288e.tar.gz gcc-8febe3fad2ea28c55be831e815ec9f036f2f288e.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/sched-deps.c | 24 |
2 files changed, 18 insertions, 12 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5139e98..48fa237 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index a8b0d52..1055ef4 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); |