aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/arc/fpu.md
diff options
context:
space:
mode:
authorClaudiu Zissulescu <claziss@synopsys.com>2018-06-13 10:43:56 +0200
committerClaudiu Zissulescu <claziss@gcc.gnu.org>2018-06-13 10:43:56 +0200
commit16493b5771cf3b1670a4a9bf7c7426fd74b727d0 (patch)
treee980080e39e343317abe7dc492173a7cc68e3e56 /gcc/config/arc/fpu.md
parent60a3f6590618c8fa74ddc54d3232d57b2908765d (diff)
downloadgcc-16493b5771cf3b1670a4a9bf7c7426fd74b727d0.zip
gcc-16493b5771cf3b1670a4a9bf7c7426fd74b727d0.tar.gz
gcc-16493b5771cf3b1670a4a9bf7c7426fd74b727d0.tar.bz2
[ARC] Reimplement return padding operation for ARC700.
For ARC700, adding padding if necessary to avoid a mispredict. A return could happen immediately after the function start. A call/return and return/return must be 6 bytes apart to avoid mispredict. The old implementation was doing this operation very late in the compilation process, and the additional nop instructions and/or forcing some other instruction to take their long form was not taken into account when generating brcc instructions. Thus, wrong code could be generated. gcc/ 2017-03-24 Claudiu Zissulescu <claziss@synopsys.com> * config/arc/arc-protos.h (arc_pad_return): Remove. * config/arc/arc.c (machine_function): Remove force_short_suffix and size_reason. (arc_print_operand): Adjust printing of '&'. (arc_verify_short): Remove conditional printing of short suffix. (arc_final_prescan_insn): Remove reference to size_reason. (pad_return): New function. (arc_reorg): Call pad_return. (arc_pad_return): Remove. (arc_init_machine_status): Remove reference to force_short_suffix. * config/arc/arc.md (vunspec): Add VUNSPEC_ARC_BLOCKAGE. (attr length): When attribute iscompact is true force to 2 regardless; in the case of maybe check if we want to force the instruction to have 4 bytes length. (nopv): Change it to generate 4 byte long nop as well. (blockage): New pattern. (simple_return): Remove call to arc_pad_return. (p_return_i): Likewise. gcc/testsuite/ 2017-03-24 Claudiu Zissulescu <claziss@synopsys.com> * gcc.target/arc/pr9001107555.c: New file. From-SVN: r261542
Diffstat (limited to 'gcc/config/arc/fpu.md')
0 files changed, 0 insertions, 0 deletions