sparc.c (sparc_nonflat_function_epilogue): Only emit nop if the last real insn is CALL_INSN.

2003-07-15  David S. Miller  <davem@redhat.com>

	* config/sparc/sparc.c (sparc_nonflat_function_epilogue): Only
	emit nop if the last real insn is CALL_INSN.

From-SVN: r69440
This commit is contained in:
David S. Miller 2003-07-16 01:36:27 -07:00 committed by David S. Miller
parent 9f13608f62
commit ac59ed379b
2 changed files with 16 additions and 3 deletions

View File

@ -1,3 +1,8 @@
2003-07-15 David S. Miller <davem@redhat.com>
* config/sparc/sparc.c (sparc_nonflat_function_epilogue): Only
emit nop if the last real insn is CALL_INSN.
2003-07-16 Danny Smith <dannysmith@users.sourceforge.net>
* config/i386/xm-mingw32.h (HOST_BIT_BUCKET): Define

View File

@ -4046,11 +4046,19 @@ sparc_nonflat_function_epilogue (file, size, leaf_function)
of a function were call foo; dslot; this can make the return
PC of foo (ie. address of call instruction plus 8) point to
the first instruction in the next function. */
rtx insn;
fputs("\tnop\n", file);
rtx insn, last_real_insn;
insn = get_last_insn ();
last_real_insn = prev_real_insn (insn);
if (last_real_insn
&& GET_CODE (last_real_insn) == INSN
&& GET_CODE (PATTERN (last_real_insn)) == SEQUENCE)
last_real_insn = XVECEXP (PATTERN (last_real_insn), 0, 0);
if (last_real_insn && GET_CODE (last_real_insn) == CALL_INSN)
fputs("\tnop\n", file);
if (GET_CODE (insn) == NOTE)
insn = prev_nonnote_insn (insn);
if (insn && GET_CODE (insn) == BARRIER)