s390.c (s390_chunkify_start): Prevent literal pool splitting between a call and its corresponding...

2011-03-18  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.c (s390_chunkify_start): Prevent literal pool
	splitting between a call and its corresponding CALL_ARG_LOCATION
	note.

From-SVN: r171156
This commit is contained in:
Andreas Krebbel 2011-03-18 17:31:39 +00:00 committed by Andreas Krebbel
parent 2d36b47ff5
commit 4627c7fb22
2 changed files with 16 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2011-03-18 Andreas Krebbel <Andreas.Krebbel@de.ibm.com>
* 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 <maxim@codesourcery.com>
PR rtl-optimization/48170

View File

@ -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)