re PR target/16884 ([fweb related] bug while initialising variables)
authorDenis Chertykov <denisc@overta.ru>
Thu, 2 Sep 2004 17:20:05 +0000 (17:20 +0000)
committerDenis Chertykov <denisc@gcc.gnu.org>
Thu, 2 Sep 2004 17:20:05 +0000 (21:20 +0400)
PR target/16884
* config/avr/avr.md ("movmemhi"): Substitute match_dup to
match_scratch.
(*movmemqi_insn): Likewise.
(*movmemhi): Likewise.
(clrmemhi): Likewise.
(*clrmemqi): Likewise.
(*clrmemhi): Likewise.

From-SVN: r86970

gcc/ChangeLog
gcc/config/avr/avr.md

index deafaa9b8441b1256140fd5104d203e05cc2f3e5..0d76135b82e46b7da1caa74cabae7d143fe6a1ad 100644 (file)
@@ -1,3 +1,14 @@
+2004-09-02  Denis Chertykov  <denisc@overta.ru>
+
+       PR target/16884
+       * config/avr/avr.md ("movmemhi"): Substitute match_dup to
+       match_scratch.
+       (*movmemqi_insn): Likewise.
+       (*movmemhi): Likewise.
+       (clrmemhi): Likewise.
+       (*clrmemqi): Likewise.
+       (*clrmemhi): Likewise.
+
 2004-09-02  Paul Brook  <paul@codesourcery.com>
 
        * config.gcc (arm*-*-eabi* | arm*-*-symbianelf*): Set
index e90af1c757a1a43b183db2965928393aeb5f3d9c..0ab6e5f467cb7c299b3bd2cc877b7f7a4751f184 100644 (file)
                   (match_operand:BLK 1 "memory_operand" ""))
              (use (match_operand:HI 2 "const_int_operand" ""))
              (use (match_operand:HI 3 "const_int_operand" ""))
-             (clobber (match_dup 4))
-             (clobber (match_dup 5))
+             (clobber (match_scratch:HI 4 ""))
+             (clobber (match_scratch:HI 5 ""))
              (clobber (match_dup 6))])]
   ""
   "{
     FAIL;
   cnt8 = byte_immediate_operand (operands[2], GET_MODE (operands[2]));
   mode = cnt8 ? QImode : HImode;
+  operands[6] = gen_rtx_SCRATCH (mode);
   operands[2] = copy_to_mode_reg (mode,
                                   gen_int_mode (INTVAL (operands[2]), mode));
-  operands[4] = operands[2];
   addr0 = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
   addr1 = copy_to_mode_reg (Pmode, XEXP (operands[1], 0));
 
-  operands[5] = addr0;
-  operands[6] = addr1;
-
   operands[0] = gen_rtx_MEM (BLKmode, addr0);
   operands[1] = gen_rtx_MEM (BLKmode, addr1);
 }")
        (mem:BLK (match_operand:HI 1 "register_operand" "e")))
    (use (match_operand:QI 2 "register_operand" "r"))
    (use (match_operand:QI 3 "const_int_operand" "i"))
-   (clobber (match_dup 2))
-   (clobber (match_dup 0))
-   (clobber (match_dup 1))]
+   (clobber (match_scratch:HI 4 "=0"))
+   (clobber (match_scratch:HI 5 "=1"))
+   (clobber (match_scratch:QI 6 "=2"))]
   ""
   "ld __tmp_reg__,%a1+
        st %a0+,__tmp_reg__
        (mem:BLK (match_operand:HI 1 "register_operand" "e,e")))
    (use (match_operand:HI 2 "register_operand" "!w,d"))
    (use (match_operand:HI 3 "const_int_operand" ""))
-   (clobber (match_dup 2))
-   (clobber (match_dup 0))
-   (clobber (match_dup 1))]
+   (clobber (match_scratch:HI 4 "=0,0"))
+   (clobber (match_scratch:HI 5 "=1,1"))
+   (clobber (match_scratch:HI 6 "=2,2"))]
   ""
   "*{
      if (which_alternative==0)
                   (const_int 0))
              (use (match_operand:HI 1 "const_int_operand" ""))
              (use (match_operand:HI 2 "const_int_operand" "n"))
-             (clobber (match_dup 3))
+             (clobber (match_scratch:HI 3 ""))
              (clobber (match_dup 4))])]
   ""
   "{
 
   cnt8 = byte_immediate_operand (operands[1], GET_MODE (operands[1]));
   mode = cnt8 ? QImode : HImode;
+  operands[4] = gen_rtx_SCRATCH (mode);
   operands[1] = copy_to_mode_reg (mode,
                                   gen_int_mode (INTVAL (operands[1]), mode));
-  operands[3] = operands[1];
-
   addr0 = copy_to_mode_reg (Pmode, XEXP (operands[0], 0));
-  operands[4] = addr0;
-  
   operands[0] = gen_rtx_MEM (BLKmode, addr0);
 }")
 
        (const_int 0))
    (use (match_operand:QI 1 "register_operand" "r"))
    (use (match_operand:QI 2 "const_int_operand" "n"))
-   (clobber (match_dup 1))
-   (clobber (match_dup 0))]
+   (clobber (match_scratch:HI 3 "=0"))
+   (clobber (match_scratch:QI 4 "=1"))]
   ""
   "st %a0+,__zero_reg__
         dec %1
        (const_int 0))
    (use (match_operand:HI 1 "register_operand" "!w,d"))
    (use (match_operand:HI 2 "const_int_operand" "n,n"))
-   (clobber (match_dup 1))
-   (clobber (match_dup 0))]
+   (clobber (match_scratch:HI 3 "=0,0"))
+   (clobber (match_scratch:HI 4 "=1,1"))]
   ""
   "*{
      if (which_alternative==0)