diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2014-11-11 22:31:09 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2014-11-11 22:31:09 +0000 |
commit | c256f14362ccf94cbb302145e85fab84531ca61d (patch) | |
tree | ee8b6b52468db04eed505d869c587476dfb57aef /gcc/reorg.c | |
parent | 059e92fd1aec76aab5d1c92238c78823cdf90ad1 (diff) | |
download | gcc-c256f14362ccf94cbb302145e85fab84531ca61d.zip gcc-c256f14362ccf94cbb302145e85fab84531ca61d.tar.gz gcc-c256f14362ccf94cbb302145e85fab84531ca61d.tar.bz2 |
* reorg.c (fill_slots_from_thread): Do not copy frame-related insns.
From-SVN: r217381
Diffstat (limited to 'gcc/reorg.c')
-rw-r--r-- | gcc/reorg.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/reorg.c b/gcc/reorg.c index 6ade95c..e8d29a4 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -2501,9 +2501,11 @@ fill_slots_from_thread (rtx_insn *insn, rtx condition, rtx thread_or_return, /* There are two ways we can win: If TRIAL doesn't set anything needed at the opposite thread and can't trap, or if it can - go into an annulled delay slot. */ + go into an annulled delay slot. But we want neither to copy + nor to speculate frame-related insns. */ if (!must_annul - && (condition == const_true_rtx + && ((condition == const_true_rtx + && (own_thread || !RTX_FRAME_RELATED_P (trial))) || (! insn_sets_resource_p (trial, &opposite_needed, true) && ! may_trap_or_fault_p (pat) && ! RTX_FRAME_RELATED_P (trial)))) |