From: Eric Botcazou Date: Tue, 11 Nov 2014 22:31:09 +0000 (+0000) Subject: * reorg.c (fill_slots_from_thread): Do not copy frame-related insns. X-Git-Tag: upstream/12.2.0~59070 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c256f14362ccf94cbb302145e85fab84531ca61d;p=platform%2Fupstream%2Fgcc.git * reorg.c (fill_slots_from_thread): Do not copy frame-related insns. From-SVN: r217381 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8c51229..350f21d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,9 @@ 2014-11-11 Eric Botcazou + * reorg.c (fill_slots_from_thread): Do not copy frame-related insns. + +2014-11-11 Eric Botcazou + PR target/61535 * config/sparc/sparc.c (function_arg_vector_value): Deal with vectors smaller than 8 bytes. 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))))