From: Richard Henderson Date: Wed, 17 Dec 1997 15:07:39 +0000 (-0800) Subject: sparc.md (jump): Don't use the annul bit around an empty loop. X-Git-Tag: releases/libf2c-0.5.21~333 X-Git-Url: https://gcc.gnu.org/git/?a=commitdiff_plain;h=8dcb529511c71f818cf107964ce568b521dcb025;p=gcc.git sparc.md (jump): Don't use the annul bit around an empty loop. * sparc.md (jump): Don't use the annul bit around an empty loop. Patch from Kevin.Kelly@East.Sun.COM. From-SVN: r17124 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1ffe005be4df..a7279290faf3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Wed Dec 17 15:06:04 1997 Richard Henderson + + * sparc.md (jump): Don't use the annul bit around an empty loop. + Patch from Kevin.Kelly@East.Sun.COM. + Wed Dec 17 00:51:36 1997 Stan Cox (scox@cygnus.com) * jump.c: (optimize_jump): Don't use the return register as a diff --git a/gcc/config/sparc/sparc.md b/gcc/config/sparc/sparc.md index 8ec12f5197a3..8b235fb2e493 100644 --- a/gcc/config/sparc/sparc.md +++ b/gcc/config/sparc/sparc.md @@ -5014,7 +5014,21 @@ (define_insn "jump" [(set (pc) (label_ref (match_operand 0 "" "")))] "" - "b%* %l0%(" + "* +{ + /* Some implementations are reported to have problems with + foo: b,a foo + i.e. an empty loop with the annul bit set. The workaround is to use + foo: b foo; nop + instead. */ + + if (flag_delayed_branch + && (insn_addresses[INSN_UID (operands[0])] + == insn_addresses[INSN_UID (insn)])) + return \"b %l0%#\"; + else + return \"b%* %l0%(\"; +}" [(set_attr "type" "uncond_branch")]) (define_expand "tablejump"