diff options
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/lra-spills.c | 5 |
2 files changed, 9 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 66e4049..1e9e56c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2016-08-08 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/72821 + * lra-spills.c (regno_in_use_p): Don't use BLOCK_FOR_INSN on barriers, + just return false for them. + 2016-08-08 Alan Modra <amodra@gmail.com> PR target/72771 diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c index d7529ea..768ae82 100644 --- a/gcc/lra-spills.c +++ b/gcc/lra-spills.c @@ -697,9 +697,10 @@ regno_in_use_p (rtx_insn *insn, unsigned int regno) int i, arg_regno; basic_block bb = BLOCK_FOR_INSN (insn); - while ((insn = next_nondebug_insn (insn)) != NULL_RTX - && bb == BLOCK_FOR_INSN (insn)) + while ((insn = next_nondebug_insn (insn)) != NULL_RTX) { + if (BARRIER_P (insn) || bb != BLOCK_FOR_INSN (insn)) + return false; if (! INSN_P (insn)) continue; if (GET_CODE (PATTERN (insn)) == USE |