aboutsummaryrefslogtreecommitdiff
path: root/gcc/go
diff options
context:
space:
mode:
authorIlya Leoshkevich <iii@linux.ibm.com>2018-10-19 08:33:52 +0000
committerIlya Leoshkevich <iii@gcc.gnu.org>2018-10-19 08:33:52 +0000
commit3664a0f184ad90a0aa65b473d180debce6402ab0 (patch)
tree2a03e07a844a678431b3cd5b040e01907a9e0480 /gcc/go
parentba9a8625b0a7eddb237d140e89ddb78afd1e3539 (diff)
downloadgcc-3664a0f184ad90a0aa65b473d180debce6402ab0.zip
gcc-3664a0f184ad90a0aa65b473d180debce6402ab0.tar.gz
gcc-3664a0f184ad90a0aa65b473d180debce6402ab0.tar.bz2
lra: fix spill_hard_reg_in_range clobber check
FROM..TO range might contain NOTE_INSN_DELETED insns, for which the corresponding entries in lra_insn_recog_data[] are NULLs. Example from the problematic code from PR87596: (note 148 154 68 7 NOTE_INSN_DELETED) lra_insn_recog_data[] is used directly only when the insn in question is taken from insn_bitmap, which is not the case here. In other situations lra_get_insn_recog_data () guarded by INSN_P () or other stricter predicate are used. So we need to do this here as well. A tiny detail worth noting: I put the INSN_P () check before the insn_bitmap check, because I believe that insn_bitmap can contain only real insns anyway. gcc/ChangeLog: 2018-10-19 Ilya Leoshkevich <iii@linux.ibm.com> PR rtl-optimization/87596 * lra-constraints.c (spill_hard_reg_in_range): Use INSN_P () + lra_get_insn_recog_data () instead of lra_insn_recog_data[] for instructions in FROM..TO range. gcc/testsuite/ChangeLog: 2018-10-19 Ilya Leoshkevich <iii@linux.ibm.com> PR rtl-optimization/87596 * gcc.target/i386/pr87596.c: New test. From-SVN: r265306
Diffstat (limited to 'gcc/go')
0 files changed, 0 insertions, 0 deletions