OSDN Git Service

PR target/16494
authorebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Jul 2004 12:08:56 +0000 (12:08 +0000)
committerebotcazou <ebotcazou@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 13 Jul 2004 12:08:56 +0000 (12:08 +0000)
* config/sparc/sparc.c (output_cbranch): Properly guard
the code handling far branches with TARGET_V9.
* config/sparc/sparc.md (length attribute): Document the
side-effect of having a length greater or equal to 3.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@84618 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/sparc/sparc.c
gcc/config/sparc/sparc.md

index 2062462..4191d04 100644 (file)
@@ -1,4 +1,12 @@
 2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
+
+       PR target/16494
+       * config/sparc/sparc.c (output_cbranch): Properly guard
+       the code handling far branches with TARGET_V9.
+       * config/sparc/sparc.md (length attribute): Document the
+       side-effect of having a length greater or equal to 3.
+
+2004-07-13  Eric Botcazou  <ebotcazou@libertysurf.fr>
             Lloyd Parkes  <lloyd@must-have-coffee.gen.nz>
 
        PR target/15186
index 8f73f1b..199ae0a 100644 (file)
@@ -6131,7 +6131,7 @@ output_cbranch (rtx op, rtx dest, int label, int reversed, int annul,
       nop
      ba .LC29  */
 
-  far = get_attr_length (insn) >= 3;
+  far = TARGET_V9 && (get_attr_length (insn) >= 3);
   if (reversed ^ far)
     {
       /* Reversal of FP compares takes care -- an ordered compare
@@ -6261,9 +6261,7 @@ output_cbranch (rtx op, rtx dest, int label, int reversed, int annul,
       spaces -= 2;
     }
 
-  if (! TARGET_V9)
-    labelno = "";
-  else
+  if (TARGET_V9)
     {
       rtx note;
       int v8 = 0;
@@ -6313,6 +6311,9 @@ output_cbranch (rtx op, rtx dest, int label, int reversed, int annul,
          spaces -= 3;
        }
     }
+  else
+    labelno = "";
+
   if (spaces > 0)
     *p++ = '\t';
   else
index f81482a..fecce78 100644 (file)
   (symbol_ref "flag_delayed_branch != 0"))
 
 ;; Length (in # of insns).
+;; Beware that setting a length greater or equal to 3 for conditional branches
+;; has a side-effect (see output_cbranch and output_v9branch).
 (define_attr "length" ""
   (cond [(eq_attr "type" "uncond_branch,call")
           (if_then_else (eq_attr "empty_delay_slot" "true")