On 01/02/2016 12:16 PM, Marcin Koƛcielnicki wrote:
With the new s390 split-stack support, when optimization is enabled,
the cold path of calling __morestack is likely to be moved to the
end of the function.  This will result in the function ending in
split_stack_call_esa, which is an unconditional jump instruction and
part of the function prologue.  reposition_prologue_and_epilogue_notes
will insert NOTE_INSN_PROLOGUE_END right after it (and before the
following barrier), causing a verification error.  Insert it after
the barrier instead (and outside of basic block).

gcc/ChangeLog:

        * function.c (reposition_prologue_and_epilogue_notes): Avoid
        verification error if the last insn of prologue is an unconditional
        jump.
---
  gcc/ChangeLog  | 6 ++++++
  gcc/function.c | 6 ++++++
  2 files changed, 12 insertions(+)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 6aef3f9..56e31f6 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
  2016-01-02  Marcin Koƛcielnicki  <koria...@0x04.net>

+       * function.c (reposition_prologue_and_epilogue_notes): Avoid
+       verification error if the last insn of prologue is an unconditional
+       jump.
I'm guessing the BARRIER is actually in the hash table of prologue insns? Oh how I wish we didn't express barriers rtl.


Can this leave NOTEs with no associated basic block in the chain? reorder_blocks only fixes the block boundaries, it doesn't fix BLOCK_FOR_INSN.

Jeff


Reply via email to