PR target/52496
authorgjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 22 Mar 2012 13:17:16 +0000 (13:17 +0000)
committergjl <gjl@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 22 Mar 2012 13:17:16 +0000 (13:17 +0000)
* config/avr/avr.md (unspec): Remove UNSPEC_MEMORY_BARRIER.
(unspecv): Add UNSPECV_MEMORY_BARRIER.
(cli_sei): Use unspec_volatile instead of unspec for memory barrier.
(delay_cycles_1, delay_cycles_2): Ditto.
(delay_cycles_3, delay_cycles_4): Ditto.
(nopv, *nopv): Ditto.
(sleep, *sleep): Ditto.
(wdr, *wdr): Ditto.

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

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

index 0ec46e4..f2da615 100644 (file)
@@ -1,3 +1,15 @@
+2012-03-22  Georg-Johann Lay  <avr@gjlay.de>
+
+       PR target/52496
+       * config/avr/avr.md (unspec): Remove UNSPEC_MEMORY_BARRIER.
+       (unspecv): Add UNSPECV_MEMORY_BARRIER.
+       (cli_sei): Use unspec_volatile instead of unspec for memory barrier.
+       (delay_cycles_1, delay_cycles_2): Ditto.
+       (delay_cycles_3, delay_cycles_4): Ditto.
+       (nopv, *nopv): Ditto.
+       (sleep, *sleep): Ditto.
+       (wdr, *wdr): Ditto.
+
 2012-03-22  Richard Guenther  <rguenther@suse.de>
 
        PR tree-optimization/52548
index 85a0f28..3fe06da 100644 (file)
@@ -70,7 +70,6 @@
    UNSPEC_COPYSIGN
    UNSPEC_IDENTITY
    UNSPEC_INSERT_BITS
-   UNSPEC_MEMORY_BARRIER
    ])
 
 (define_c_enum "unspecv"
@@ -79,6 +78,7 @@
    UNSPECV_WRITE_SP
    UNSPECV_GOTO_RECEIVER
    UNSPECV_ENABLE_IRQS
+   UNSPECV_MEMORY_BARRIER
    UNSPECV_NOP
    UNSPECV_SLEEP
    UNSPECV_WDR
   [(unspec_volatile [(match_operand:QI 0 "const_int_operand" "L,P")]
                     UNSPECV_ENABLE_IRQS)
    (set (match_operand:BLK 1 "" "")
-       (unspec:BLK [(match_dup 1)] UNSPEC_MEMORY_BARRIER))]
+       (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))]
   ""
   "@
        cli
                      (const_int 1)]
                     UNSPECV_DELAY_CYCLES)
    (set (match_operand:BLK 1 "" "")
-       (unspec:BLK [(match_dup 1)] UNSPEC_MEMORY_BARRIER))
+       (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))
    (clobber (match_scratch:QI 2 "=&d"))]
   ""
   "ldi %2,lo8(%0)
                      (const_int 2)]
                     UNSPECV_DELAY_CYCLES)
    (set (match_operand:BLK 1 "" "")
-       (unspec:BLK [(match_dup 1)] UNSPEC_MEMORY_BARRIER))
+       (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))
    (clobber (match_scratch:HI 2 "=&w"))]
   ""
   "ldi %A2,lo8(%0)
                      (const_int 3)]
                     UNSPECV_DELAY_CYCLES)
    (set (match_operand:BLK 1 "" "")
-       (unspec:BLK [(match_dup 1)] UNSPEC_MEMORY_BARRIER))
+       (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))
    (clobber (match_scratch:QI 2 "=&d"))
    (clobber (match_scratch:QI 3 "=&d"))
    (clobber (match_scratch:QI 4 "=&d"))]
                      (const_int 4)]
                     UNSPECV_DELAY_CYCLES)
    (set (match_operand:BLK 1 "" "")
-       (unspec:BLK [(match_dup 1)] UNSPEC_MEMORY_BARRIER))
+       (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))
    (clobber (match_scratch:QI 2 "=&d"))
    (clobber (match_scratch:QI 3 "=&d"))
    (clobber (match_scratch:QI 4 "=&d"))
   [(parallel [(unspec_volatile [(match_operand:SI 0 "const_int_operand" "")] 
                                UNSPECV_NOP)
               (set (match_dup 1)
-                   (unspec:BLK [(match_dup 1)] UNSPEC_MEMORY_BARRIER))])]
+                   (unspec_volatile:BLK [(match_dup 1)]
+                                        UNSPECV_MEMORY_BARRIER))])]
   ""
   {
     operands[1] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
   [(unspec_volatile [(match_operand:SI 0 "const_int_operand" "P,K")] 
                     UNSPECV_NOP)
    (set (match_operand:BLK 1 "" "")
-       (unspec:BLK [(match_dup 1)] UNSPEC_MEMORY_BARRIER))]
+       (unspec_volatile:BLK [(match_dup 1)] UNSPECV_MEMORY_BARRIER))]
   ""
   "@
        nop
 (define_expand "sleep"
   [(parallel [(unspec_volatile [(const_int 0)] UNSPECV_SLEEP)
               (set (match_dup 0)
-                   (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))])]
+                   (unspec_volatile:BLK [(match_dup 0)]
+                                        UNSPECV_MEMORY_BARRIER))])]
   ""
   {
     operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
 (define_insn "*sleep"
   [(unspec_volatile [(const_int 0)] UNSPECV_SLEEP)
    (set (match_operand:BLK 0 "" "")
-       (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
+       (unspec_volatile:BLK [(match_dup 0)] UNSPECV_MEMORY_BARRIER))]
   ""
   "sleep"
   [(set_attr "length" "1")
 (define_expand "wdr"
   [(parallel [(unspec_volatile [(const_int 0)] UNSPECV_WDR)
               (set (match_dup 0)
-                   (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))])]
+                   (unspec_volatile:BLK [(match_dup 0)]
+                                        UNSPECV_MEMORY_BARRIER))])]
   ""
   {
     operands[0] = gen_rtx_MEM (BLKmode, gen_rtx_SCRATCH (Pmode));
 (define_insn "*wdr"
   [(unspec_volatile [(const_int 0)] UNSPECV_WDR)
    (set (match_operand:BLK 0 "" "")
-       (unspec:BLK [(match_dup 0)] UNSPEC_MEMORY_BARRIER))]
+       (unspec_volatile:BLK [(match_dup 0)] UNSPECV_MEMORY_BARRIER))]
   ""
   "wdr"
   [(set_attr "length" "1")