(output_call): Don't use the delay slot of a bsr.n
to modify the return address, unless -O2 specified. From-SVN: r3513
This commit is contained in:
parent
0ef08a071a
commit
d4f8225ab7
|
@ -861,14 +861,20 @@ output_call (operands, addr)
|
||||||
NOTE_LINE_NUMBER (jump) = NOTE_INSN_DELETED;
|
NOTE_LINE_NUMBER (jump) = NOTE_INSN_DELETED;
|
||||||
NOTE_SOURCE_FILE (jump) = 0;
|
NOTE_SOURCE_FILE (jump) = 0;
|
||||||
|
|
||||||
/* If we loose, we must use the non-delay form. This is unlikely
|
/* We only do this optimization if -O2, modifying the value of
|
||||||
|
r1 in the delay slot confuses debuggers and profilers on some
|
||||||
|
systems.
|
||||||
|
|
||||||
|
If we loose, we must use the non-delay form. This is unlikely
|
||||||
to ever happen. If it becomes a problem, claim that a call
|
to ever happen. If it becomes a problem, claim that a call
|
||||||
has two delay slots and only the second can be filled with
|
has two delay slots and only the second can be filled with
|
||||||
a jump. */
|
a jump. */
|
||||||
#ifdef AS_BUG_IMMEDIATE_LABEL /* The assembler restricts immediate values. */
|
#ifdef AS_BUG_IMMEDIATE_LABEL /* The assembler restricts immediate values. */
|
||||||
if (! ADD_INTVAL (delta * 2))
|
if (optimize < 2
|
||||||
|
|| ! ADD_INTVAL (delta * 2))
|
||||||
#else
|
#else
|
||||||
if (! ADD_INTVAL (delta))
|
if (optimize < 2
|
||||||
|
|| ! ADD_INTVAL (delta))
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
operands[1] = dest;
|
operands[1] = dest;
|
||||||
|
|
Loading…
Reference in New Issue