diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-02-05 18:42:19 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-02-05 18:42:19 +0000 |
commit | 617529e8d37eb3b3d1d5f3c107a0e34ec7562051 (patch) | |
tree | 4e9ff9fb805d73c0c48089ece8cf85aba6937092 /gcc/sched-deps.c | |
parent | 1ba7e31ff9a09e42074aa08d7c649a1e8981d52b (diff) | |
download | gcc-617529e8d37eb3b3d1d5f3c107a0e34ec7562051.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@207518 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/sched-deps.c')
-rw-r--r-- | gcc/sched-deps.c | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/gcc/sched-deps.c b/gcc/sched-deps.c index 7efc9376a81..efc4223089a 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; } |