diff options
author | John David Anglin <danglin@gcc.gnu.org> | 2019-10-03 22:39:49 +0000 |
---|---|---|
committer | John David Anglin <danglin@gcc.gnu.org> | 2019-10-03 22:39:49 +0000 |
commit | 4a6cb9c0da73ce8733a68fc802b1f5a332cfebdc (patch) | |
tree | faeb4961425d216e2c75340e31332326cd54e920 | |
parent | 5d8bb3897ef3fba6b4ac677e64188b1da86eda39 (diff) | |
download | gcc-4a6cb9c0da73ce8733a68fc802b1f5a332cfebdc.zip gcc-4a6cb9c0da73ce8733a68fc802b1f5a332cfebdc.tar.gz gcc-4a6cb9c0da73ce8733a68fc802b1f5a332cfebdc.tar.bz2 |
pa.c (pa_output_call): Remove 64-bit sibcall sequence.
* config/pa/pa.c (pa_output_call): Remove 64-bit sibcall sequence.
(pa_attr_length_call): Adjust length for 64-bit plabel sequence.
From-SVN: r276543
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/pa/pa.c | 30 |
2 files changed, 13 insertions, 22 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 73c45b3..2068d05 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2019-10-03 John David Anglin <danglin@gcc.gnu.org> + + * config/pa/pa.c (pa_output_call): Remove 64-bit sibcall sequence. + (pa_attr_length_call): Adjust length for 64-bit plabel sequence. + 2019-10-03 Aaron Sawdey <acsawdey@linux.ibm.com> * expr.c (emit_block_move_hints): Slightly cleaner fix to diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 55637df..4f48c41 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -7845,7 +7845,7 @@ pa_attr_length_call (rtx_insn *insn, int sibcall) /* 64-bit plabel sequence. */ else if (TARGET_64BIT && !local_call) - length += sibcall ? 28 : 24; + length += 24; /* non-pic long absolute branch sequence. */ else if ((TARGET_LONG_ABS_CALL || local_call) && !flag_pic) @@ -7917,38 +7917,24 @@ pa_output_call (rtx_insn *insn, rtx call_dest, int sibcall) xoperands[0] = pa_get_deferred_plabel (call_dest); xoperands[1] = gen_label_rtx (); - /* If this isn't a sibcall, we put the load of %r27 into the - delay slot. We can't do this in a sibcall as we don't - have a second call-clobbered scratch register available. - We don't need to do anything when generating fast indirect - calls. */ - if (seq_length != 0 && !sibcall) + /* Put the load of %r27 into the delay slot. We don't need to + do anything when generating fast indirect calls. */ + if (seq_length != 0) { final_scan_insn (NEXT_INSN (insn), asm_out_file, optimize, 0, NULL); /* Now delete the delay insn. */ SET_INSN_DELETED (NEXT_INSN (insn)); - seq_length = 0; } output_asm_insn ("addil LT'%0,%%r27", xoperands); output_asm_insn ("ldd RT'%0(%%r1),%%r1", xoperands); output_asm_insn ("ldd 0(%%r1),%%r1", xoperands); - - if (sibcall) - { - output_asm_insn ("ldd 24(%%r1),%%r27", xoperands); - output_asm_insn ("ldd 16(%%r1),%%r1", xoperands); - output_asm_insn ("bve (%%r1)", xoperands); - } - else - { - output_asm_insn ("ldd 16(%%r1),%%r2", xoperands); - output_asm_insn ("bve,l (%%r2),%%r2", xoperands); - output_asm_insn ("ldd 24(%%r1),%%r27", xoperands); - seq_length = 1; - } + output_asm_insn ("ldd 16(%%r1),%%r2", xoperands); + output_asm_insn ("bve,l (%%r2),%%r2", xoperands); + output_asm_insn ("ldd 24(%%r1),%%r27", xoperands); + seq_length = 1; } else { |