From 4627c7fb2264f8c023865d4cd7b1abae9598ae11 Mon Sep 17 00:00:00 2001 From: Andreas Krebbel Date: Fri, 18 Mar 2011 17:31:39 +0000 Subject: [PATCH] s390.c (s390_chunkify_start): Prevent literal pool splitting between a call and its corresponding... 2011-03-18 Andreas Krebbel * config/s390/s390.c (s390_chunkify_start): Prevent literal pool splitting between a call and its corresponding CALL_ARG_LOCATION note. From-SVN: r171156 --- gcc/ChangeLog | 6 ++++++ gcc/config/s390/s390.c | 11 ++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 74b346492d5..519ba5d44c8 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-03-18 Andreas Krebbel + + * config/s390/s390.c (s390_chunkify_start): Prevent literal pool + splitting between a call and its corresponding CALL_ARG_LOCATION + note. + 2011-03-18 Maxim Kuvyrkov PR rtl-optimization/48170 diff --git a/gcc/config/s390/s390.c b/gcc/config/s390/s390.c index 4a056d5863a..dcbd4ac5391 100644 --- a/gcc/config/s390/s390.c +++ b/gcc/config/s390/s390.c @@ -6651,7 +6651,7 @@ s390_chunkify_start (void) s390_add_execute (curr_pool, insn); s390_add_pool_insn (curr_pool, insn); } - else if (GET_CODE (insn) == INSN || GET_CODE (insn) == CALL_INSN) + else if (GET_CODE (insn) == INSN || CALL_P (insn)) { rtx pool_ref = NULL_RTX; find_constant_pool_ref (PATTERN (insn), &pool_ref); @@ -6676,6 +6676,15 @@ s390_chunkify_start (void) pending_ltrel = pool_ref; } } + /* Make sure we do not split between a call and its + corresponding CALL_ARG_LOCATION note. */ + if (CALL_P (insn)) + { + rtx next = NEXT_INSN (insn); + if (next && NOTE_P (next) + && NOTE_KIND (next) == NOTE_INSN_CALL_ARG_LOCATION) + continue; + } } if (GET_CODE (insn) == JUMP_INSN || GET_CODE (insn) == CODE_LABEL) -- 2.30.2