aboutsummaryrefslogtreecommitdiff
path: root/gcc/sched-deps.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2014-02-05 10:42:19 -0800
committerRichard Henderson <rth@gcc.gnu.org>2014-02-05 10:42:19 -0800
commit76df831f5d7d2f73f396bfe76f88c4ed9aab4faf (patch)
tree4e9ff9fb805d73c0c48089ece8cf85aba6937092 /gcc/sched-deps.c
parent9cf7975d8b4b0763dd7bf07ebb861b87fd0aaf7a (diff)
downloadgcc-76df831f5d7d2f73f396bfe76f88c4ed9aab4faf.zip
gcc-76df831f5d7d2f73f396bfe76f88c4ed9aab4faf.tar.gz
gcc-76df831f5d7d2f73f396bfe76f88c4ed9aab4faf.tar.bz2
re PR debug/52727 (internal compiler error at dwarf2cfi.c2:685)
PR debug/52727 * combine-stack-adj.c: Revert r206943. * sched-int.h (struct deps_desc): Add last_args_size. * sched-deps.c (init_deps): Initialize it. (sched_analyze_insn): Add OUTPUT dependencies between insns that contain REG_ARGS_SIZE notes. From-SVN: r207518
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r--gcc/sched-deps.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c
index 7efc937..efc4223 100644
--- a/gcc/sched-deps.c
+++ b/gcc/sched-deps.c
@@ -3470,6 +3470,15 @@ sched_analyze_insn (struct deps_desc *deps, rtx x, rtx insn)
change_spec_dep_to_hard (sd_it);
}
}
+
+ /* We do not yet have code to adjust REG_ARGS_SIZE, therefore we must
+ honor their original ordering. */
+ if (find_reg_note (insn, REG_ARGS_SIZE, NULL))
+ {
+ if (deps->last_args_size)
+ add_dependence (insn, deps->last_args_size, REG_DEP_OUTPUT);
+ deps->last_args_size = insn;
+ }
}
/* Return TRUE if INSN might not always return normally (e.g. call exit,
@@ -3876,6 +3885,7 @@ init_deps (struct deps_desc *deps, bool lazy_reg_last)
deps->sched_before_next_jump = 0;
deps->in_post_call_group_p = not_post_call;
deps->last_debug_insn = 0;
+ deps->last_args_size = 0;
deps->last_reg_pending_barrier = NOT_A_BARRIER;
deps->readonly = 0;
}