From: Richard Stallman Date: Mon, 31 May 1993 06:08:41 +0000 (+0000) Subject: (output_cbranch): In forward/long branch case... X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=8d6f415e90f94dd0360c6f140744d92af3d3575f;p=gcc.git (output_cbranch): In forward/long branch case... (output_cbranch): In forward/long branch case, only nullify if the delay slot was empty or if the delay slot was explicitly nullified. (output_bb): Likewise. From-SVN: r4608 --- diff --git a/gcc/config/pa/pa.c b/gcc/config/pa/pa.c index 6ab86b7246d..ff04b056f72 100644 --- a/gcc/config/pa/pa.c +++ b/gcc/config/pa/pa.c @@ -3225,10 +3225,13 @@ output_cbranch (operands, nullify, length, negated, insn) strcat (buf, "%S3"); else strcat (buf, "%B3"); - /* Regardless of whether or not this branch got its slot - filled we can nullify the following instruction and - avoid emitting a nop. */ - strcat (buf, " %2,%1,0\n\tbl%* %0,0"); + /* Nullify the delay slot if the delay slot was explicitly + nullified by the delay branch scheduler or if no insn + could be placed in the delay slot. */ + if (nullify) + strcat (buf, " %2,%1,0\n\tbl,n %0,0"); + else + strcat (buf, " %2,%1,0\n\tbl%* %0,0"); break; /* Long backward conditional branch with nullification. */ @@ -3308,10 +3311,14 @@ output_bb (operands, nullify, length, negated, insn, which) strcat (buf, "<"); else strcat (buf, ">="); - /* Regardless of whether or not this branch got its slot - filled we can nullify the following instruction and - avoid emitting a nop. */ - if (negated) + /* Nullify the delay slot if the delay slot was explicitly + nullified by the delay branch scheduler or if no insn + could be placed in the delay slot. */ + if (nullify && negated) + strcat (buf, " %0,%1,1,0\n\tbl,n %3,0"); + else if (nullify && ! negated) + strcat (buf, " %0,%1,1,0\n\tbl,n %2,0"); + else if (negated) strcat (buf, " %0,%1,1,0\n\tbl%* %3,0"); else strcat (buf, " %0,%1,1,0\n\tbl%* %2,0");