aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJim Wilson <wilson@gcc.gnu.org>1992-06-23 16:35:44 -0700
committerJim Wilson <wilson@gcc.gnu.org>1992-06-23 16:35:44 -0700
commitc6ce096931bca8b33812e9eb5f25d36990585f7b (patch)
treef612742dd3e23e853e355a94f54c06a2c21c00a5
parenta4faa7cc6e80c1ab4744b841250259ac0338396d (diff)
downloadgcc-c6ce096931bca8b33812e9eb5f25d36990585f7b.zip
gcc-c6ce096931bca8b33812e9eb5f25d36990585f7b.tar.gz
gcc-c6ce096931bca8b33812e9eb5f25d36990585f7b.tar.bz2
(print_operand): For '*', only annul branch if optimizing, to avoid dbx bug.
Add '(' to handle unoptimized case. From-SVN: r1247
-rw-r--r--gcc/config/sparc/sparc.c15
1 files changed, 12 insertions, 3 deletions
diff --git a/gcc/config/sparc/sparc.c b/gcc/config/sparc/sparc.c
index cb7d52b..3d453ca 100644
--- a/gcc/config/sparc/sparc.c
+++ b/gcc/config/sparc/sparc.c
@@ -2708,9 +2708,18 @@ print_operand (file, x, code)
fputs ("\n\tnop", file);
return;
case '*':
- /* Output an annul flag if there's nothing for the delay slot. */
- if (dbr_sequence_length () == 0)
- fputs (",a", file);
+ /* Output an annul flag if there's nothing for the delay slot and we
+ are optimizing. This is always used with '(' below. */
+ /* Sun OS 4.1.1 dbx can't handle an annulled unconditional branch;
+ this is a dbx bug. So, we only do this when optimizing. */
+ if (dbr_sequence_length () == 0 && optimize)
+ fputs (",a", file);
+ return;
+ case '(':
+ /* Output a 'nop' if there's nothing for the delay slot and we are
+ not optimizing. This is always used with '*' above. */
+ if (dbr_sequence_length () == 0 && ! optimize)
+ fputs ("\n\tnop", file);
return;
case 'Y':
/* Adjust the operand to take into account a RESTORE operation. */