diff options
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/sched-deps.c | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fcf8e96..142715b 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2010-06-04 Alexandre Oliva <aoliva@redhat.com> + PR rtl-optimization/44013 + * sched-deps.c (add_dependence_list_and_free): Don't free lists + when processing debug insns. + PR debug/41371 * var-tracking.c (find_loc_in_1pdv): Mark initial value before recursing. Check that recursion is bounded. Rename inner var diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 556c38a..4577c8e 100644 --- a/gcc/sched-deps.c +++ b/gcc/sched-deps.c @@ -1407,7 +1407,10 @@ add_dependence_list_and_free (struct deps_desc *deps, rtx insn, rtx *listp, { rtx list, next; - if (deps->readonly) + /* 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; |