pa.md (branch, [...]): Handle (const_int 0) as first source operand.
authorJeffrey A Law <law@cygnus.com>
Sun, 3 Jan 1999 19:45:34 +0000 (19:45 +0000)
committerJeff Law <law@gcc.gnu.org>
Sun, 3 Jan 1999 19:45:34 +0000 (12:45 -0700)
        * pa.md (branch, negated branch): Handle (const_int 0) as first
        source operand.
        * pa.c (output_cbranch): Likewise.
Should fix unrolling aborts on the PA.

From-SVN: r24465

gcc/ChangeLog
gcc/config/pa/pa.c
gcc/config/pa/pa.md

index e8e79e13bcfd84b8ad31e0ac39a6201703f4589d..5009cfe9bf023de773f8ab08a29fd5a3582ae649 100644 (file)
@@ -1,3 +1,9 @@
+Sun Jan  3 20:40:34 1999  Jeffrey A Law  (law@cygnus.com)
+
+       * pa.md (branch, negated branch): Handle (const_int 0) as first
+       source operand.
+       * pa.c (output_cbranch): Likewise.
+
 Sun Jan  3 03:20:38 1999  David Edelsohn  <edelsohn@mhpcc.edu>
 
        * rs6000.c (rs6000_stack_info): Undo spurious part of last
index 91ada8e3aec7d9be79a3364fda3983e1428b2efe..162a0b09a24776a7cf678805ec034c80b66306f8 100644 (file)
@@ -4461,11 +4461,11 @@ output_cbranch (operands, nullify, length, negated, insn)
        else
          strcat (buf, "%S3");
        if (useskip)
-         strcat (buf, " %2,%1,0");
+         strcat (buf, " %2,%r1,0");
        else if (nullify)
-         strcat (buf, ",n %2,%1,%0");
+         strcat (buf, ",n %2,%r1,%0");
        else
-         strcat (buf, " %2,%1,%0");
+         strcat (buf, " %2,%r1,%0");
        break;
 
      /* All long conditionals.  Note an short backward branch with an
@@ -4483,7 +4483,7 @@ output_cbranch (operands, nullify, length, negated, insn)
              strcat (buf, "%S3");
            else
              strcat (buf, "%B3");
-           strcat (buf, ",n %2,%1,.+12\n\tbl %0,0");
+           strcat (buf, ",n %2,%r1,.+12\n\tbl %0,0");
          }
        /* Handle short backwards branch with an unfilled delay slot.
           Using a comb;nop rather than comiclr;bl saves 1 cycle for both
@@ -4496,9 +4496,9 @@ output_cbranch (operands, nullify, length, negated, insn)
          {
            strcpy (buf, "com%I2b,");
            if (negated)
-             strcat (buf, "%B3 %2,%1,%0%#");
+             strcat (buf, "%B3 %2,%r1,%0%#");
            else
-             strcat (buf, "%S3 %2,%1,%0%#");
+             strcat (buf, "%S3 %2,%r1,%0%#");
          }
        else
          {
@@ -4508,9 +4508,9 @@ output_cbranch (operands, nullify, length, negated, insn)
            else
              strcat (buf, "%B3");
            if (nullify)
-             strcat (buf, " %2,%1,0\n\tbl,n %0,0");
+             strcat (buf, " %2,%r1,0\n\tbl,n %0,0");
            else
-             strcat (buf, " %2,%1,0\n\tbl %0,0");
+             strcat (buf, " %2,%r1,0\n\tbl %0,0");
          }
        break;
 
@@ -4523,9 +4523,9 @@ output_cbranch (operands, nullify, length, negated, insn)
        /* Create a reversed conditional branch which branches around
           the following insns.  */
        if (negated)
-         strcpy (buf, "com%I2b,%S3,n %2,%1,.+20");
+         strcpy (buf, "com%I2b,%S3,n %2,%r1,.+20");
        else
-         strcpy (buf, "com%I2b,%B3,n %2,%1,.+20");
+         strcpy (buf, "com%I2b,%B3,n %2,%r1,.+20");
        output_asm_insn (buf, operands);
 
        /* Output an insn to save %r1.  */
@@ -4548,9 +4548,9 @@ output_cbranch (operands, nullify, length, negated, insn)
        /* Create a reversed conditional branch which branches around
           the following insns.  */
        if (negated)
-         strcpy (buf, "com%I2b,%S3,n %2,%1,.+28");
+         strcpy (buf, "com%I2b,%S3,n %2,%r1,.+28");
        else
-         strcpy (buf, "com%I2b,%B3,n %2,%1,.+28");
+         strcpy (buf, "com%I2b,%B3,n %2,%r1,.+28");
        output_asm_insn (buf, operands);
 
        /* Output an insn to save %r1.  */
index 2f3848c28b356dc39d02ebba9a4185d72749a896..b693f672a5e2f69c3504d8d645e3df1d7aa58aad 100644 (file)
   [(set (pc)
        (if_then_else
         (match_operator 3 "comparison_operator"
-                        [(match_operand:SI 1 "register_operand" "r")
+                        [(match_operand:SI 1 "reg_or_0_operand" "rM")
                          (match_operand:SI 2 "arith5_operand" "rL")])
         (label_ref (match_operand 0 "" ""))
         (pc)))]
   [(set (pc)
        (if_then_else
         (match_operator 3 "comparison_operator"
-                        [(match_operand:SI 1 "register_operand" "r")
+                        [(match_operand:SI 1 "reg_or_0_operand" "rM")
                          (match_operand:SI 2 "arith5_operand" "rL")])
         (pc)
         (label_ref (match_operand 0 "" ""))))]