aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp
diff options
context:
space:
mode:
authorTakayuki 'January June' Suwa <jjsuwa_sys3175@yahoo.co.jp>2022-10-26 15:27:51 +0900
committerMax Filippov <jcmvbkbc@gmail.com>2022-10-26 10:01:38 -0700
commitf896c13489d22b30d01257bc8316ab97b3359d1c (patch)
treed01db23a7d057ffaee2cae453d5f91bc545d70d7 /gcc/cp
parent82e629c26647313be406c41a01e6868cfad0f289 (diff)
downloadgcc-f896c13489d22b30d01257bc8316ab97b3359d1c.zip
gcc-f896c13489d22b30d01257bc8316ab97b3359d1c.tar.gz
gcc-f896c13489d22b30d01257bc8316ab97b3359d1c.tar.bz2
xtensa: Fix out-of-bounds array access in the movdi pattern
The following new warnings were introduced in the commit 4f3f0296acbb ("xtensa: Prepare the transition from Reload to LRA"): gcc/config/xtensa/xtensa.md:945:26: error: array subscript 3 is above array bounds of 'rtx_def* [2]' [-Werror=array-bounds] 945 | emit_move_insn (operands[2], operands[3]); gcc/config/xtensa/xtensa.md:945:26: error: array subscript 2 is above array bounds of 'rtx_def* [2]' [-Werror=array-bounds] 945 | emit_move_insn (operands[2], operands[3]); From gcc/insn-emit.cc (generated by building): > /* ../../gcc/config/xtensa/xtensa.md:932 */ > rtx > gen_movdi (rtx operand0, > rtx operand1) > { > rtx_insn *_val = 0; > start_sequence (); > { > rtx operands[2]; // only 2 elements > operands[0] = operand0; > operands[1] = operand1; > #define FAIL return (end_sequence (), _val) > #define DONE return (_val = get_insns (), end_sequence (), _val) > #line 936 "../../gcc/config/xtensa/xtensa.md" > { > if (CONSTANT_P (operands[1])) > { > /* Split in halves if 64-bit Const-to-Reg moves > because of offering further optimization opportunities. */ > if (register_operand (operands[0], DImode)) > { > xtensa_split_DI_reg_imm (operands); // out-of-bounds! > emit_move_insn (operands[0], operands[1]); > emit_move_insn (operands[2], operands[3]); // out-of-bounds! > DONE; > } gcc/ChangeLog: * config/xtensa/xtensa.md (movdi): Copy operands[0...1] to ops[0...3] and then use the latter before calling xtensa_split_DI_reg_imm() and emitting insns.
Diffstat (limited to 'gcc/cp')
0 files changed, 0 insertions, 0 deletions