Commit 4e417af3 by Kaz Kojima

re PR target/65987 ([SH] Wrong jump generated for…

re PR target/65987 ([SH] Wrong jump generated for gcc.dg/tree-prof/va-arg-pack-1.c with -fprofile-use)

PR target/65987
* config/sh/sh.c (output_far_jump, split_branches): Take into account
  sectiion crossing jumps.

From-SVN: r222783
parent f5322614
2015-05-04 Kaz Kojima <kkojima@gcc.gnu.org>
PR target/65987
* config/sh/sh.c (output_far_jump): Take into account crossing jumps.
(split_branches): Likewise.
2015-05-04 Sandra Loosemore <sandra@codesourcery.com>
* common.opt (fdelete-null-pointer-checks): Init to -1.
......
......@@ -2747,7 +2747,8 @@ output_far_jump (rtx_insn *insn, rtx op)
if (TARGET_SH2
&& offset >= -32764
&& offset - get_attr_length (insn) <= 32766)
&& offset - get_attr_length (insn) <= 32766
&& ! CROSSING_JUMP_P (insn))
{
far = 0;
jump = "mov.w %O0,%1" "\n"
......@@ -6753,6 +6754,13 @@ split_branches (rtx_insn *first)
if (type == TYPE_JUMP)
{
if (CROSSING_JUMP_P (insn))
{
emit_insn_before (gen_block_branch_redirect (const0_rtx),
insn);
continue;
}
far_label = as_a <rtx_insn *> (
XEXP (SET_SRC (PATTERN (insn)), 0));
dest_uid = get_dest_uid (far_label, max_uid);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment