xtensa: bfd: add special case to loop alignment check
authorMax Filippov <jcmvbkbc@gmail.com>
Mon, 22 Apr 2019 20:35:13 +0000 (12:35 -0800)
committerMax Filippov <jcmvbkbc@gmail.com>
Thu, 1 Aug 2019 18:18:52 +0000 (11:18 -0700)
commite0d0c518daa5e10a417d16ad8158e97016562342
tree5b3c2496a3daa918829aff7d920d6791f452588b
parentf126416240a3ae1be69792361bca8bcbb84e62e8
xtensa: bfd: add special case to loop alignment check

check_loop_aligned is used during link time relaxation to only allow
transformations that don't violate loop body alignment requirements.
Assembler can relax loops that have too long body by adding instructions
between the loop instruction and the loop body. check_loop_aligned must
check alignment of the first instruction of the actual loop body.
Detect loop / rsr.lend / wsr.lbeg sequence used in assembly time
relaxation and adjust alignment check when it's detected.

bfd/
2019-08-01  Max Filippov  <jcmvbkbc@gmail.com>

* elf32-xtensa.c (insn_num_slots, get_rsr_lend_opcode)
(get_wsr_lbeg_opcode): New functions.
(check_loop_aligned): Detect relaxed loops and adjust loop_len
and insn_len for the first actual instruction of the loop.
bfd/ChangeLog
bfd/elf32-xtensa.c