From: John Hassey Date: Tue, 23 Feb 1993 02:10:03 +0000 (+0000) Subject: (output_call): Don't use the delay slot of a bsr.n X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=d4f8225ab778ea7989d56fdede19e8fc25f8026b;p=platform%2Fupstream%2Fgcc.git (output_call): Don't use the delay slot of a bsr.n to modify the return address, unless -O2 specified. From-SVN: r3513 --- diff --git a/gcc/config/m88k/m88k.c b/gcc/config/m88k/m88k.c index c4718fb..e2465e3 100644 --- a/gcc/config/m88k/m88k.c +++ b/gcc/config/m88k/m88k.c @@ -861,14 +861,20 @@ output_call (operands, addr) NOTE_LINE_NUMBER (jump) = NOTE_INSN_DELETED; 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 has two delay slots and only the second can be filled with a jump. */ #ifdef AS_BUG_IMMEDIATE_LABEL /* The assembler restricts immediate values. */ - if (! ADD_INTVAL (delta * 2)) + if (optimize < 2 + || ! ADD_INTVAL (delta * 2)) #else - if (! ADD_INTVAL (delta)) + if (optimize < 2 + || ! ADD_INTVAL (delta)) #endif { operands[1] = dest;