public inbox for gcc-patches@gcc.gnu.org
 help / color / mirror / Atom feed
* [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
@ 2016-04-28 19:16 Uros Bizjak
  2016-04-29  7:47 ` Eric Botcazou
  0 siblings, 1 reply; 11+ messages in thread
From: Uros Bizjak @ 2016-04-28 19:16 UTC (permalink / raw)
  To: gcc-patches; +Cc: Eric Botcazou

[-- Attachment #1: Type: text/plain, Size: 739 bytes --]

Hello!

Attached patch extends TARGET_READ_MODIFY{,_WRITE} peepholes to handle
all integer modes, while also taking care not to introduce additional
QImode register stalls.

While looking at the insn enable condition, I noticed that we don't
use "probe_stack" pattern any more, as the stack check loop is now
implemented in a different way.

2016-04-28  Uros Bizjak  <ubizjak@gmail.com>

    * config/i386/i386.md (peephole2s for operations with memory inputs):
    Use SWI mode iterator.
    (peephole2s for operations with memory outputs): Ditto.
    Do not check for stack checking probe.

    (probe_stack): Remove expander.

Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

Committed to mainline SVN.

Uros.

[-- Attachment #2: p.diff.txt --]
[-- Type: text/plain, Size: 4043 bytes --]

Index: config/i386/i386.md
===================================================================
--- config/i386/i386.md	(revision 235582)
+++ config/i386/i386.md	(working copy)
@@ -17552,20 +17552,6 @@
   DONE;
 })
 
-;; Use IOR for stack probes, this is shorter.
-(define_expand "probe_stack"
-  [(match_operand 0 "memory_operand")]
-  ""
-{
-  rtx (*gen_ior3) (rtx, rtx, rtx);
-
-  gen_ior3 = (GET_MODE (operands[0]) == DImode
-	      ? gen_iordi3 : gen_iorsi3);
-
-  emit_insn (gen_ior3 (operands[0], operands[0], const0_rtx));
-  DONE;
-})
-
 (define_insn "adjust_stack_and_probe<mode>"
   [(set (match_operand:P 0 "register_operand" "=r")
 	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]
@@ -17894,11 +17880,11 @@
 
 ;; Don't do logical operations with memory inputs.
 (define_peephole2
-  [(match_scratch:SI 2 "r")
-   (parallel [(set (match_operand:SI 0 "register_operand")
-                   (match_operator:SI 3 "arith_or_logical_operator"
+  [(match_scratch:SWI 2 "<r>")
+   (parallel [(set (match_operand:SWI 0 "register_operand")
+		   (match_operator:SWI 3 "arith_or_logical_operator"
                      [(match_dup 0)
-                      (match_operand:SI 1 "memory_operand")]))
+		      (match_operand:SWI 1 "memory_operand")]))
               (clobber (reg:CC FLAGS_REG))])]
   "!(TARGET_READ_MODIFY || optimize_insn_for_size_p ())"
   [(set (match_dup 2) (match_dup 1))
@@ -17907,10 +17893,10 @@
               (clobber (reg:CC FLAGS_REG))])])
 
 (define_peephole2
-  [(match_scratch:SI 2 "r")
-   (parallel [(set (match_operand:SI 0 "register_operand")
-                   (match_operator:SI 3 "arith_or_logical_operator"
-                     [(match_operand:SI 1 "memory_operand")
+  [(match_scratch:SWI 2 "<r>")
+   (parallel [(set (match_operand:SWI 0 "register_operand")
+		   (match_operator:SWI 3 "arith_or_logical_operator"
+		     [(match_operand:SWI 1 "memory_operand")
                       (match_dup 0)]))
               (clobber (reg:CC FLAGS_REG))])]
   "!(TARGET_READ_MODIFY || optimize_insn_for_size_p ())"
@@ -17962,15 +17948,13 @@
 ; the same decoder scheduling characteristics as the original.
 
 (define_peephole2
-  [(match_scratch:SI 2 "r")
-   (parallel [(set (match_operand:SI 0 "memory_operand")
-                   (match_operator:SI 3 "arith_or_logical_operator"
+  [(match_scratch:SWI 2 "<r>")
+   (parallel [(set (match_operand:SWI 0 "memory_operand")
+		   (match_operator:SWI 3 "arith_or_logical_operator"
                      [(match_dup 0)
-                      (match_operand:SI 1 "nonmemory_operand")]))
+		      (match_operand:SWI 1 "<nonmemory_operand>")]))
               (clobber (reg:CC FLAGS_REG))])]
-  "!(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())
-   /* Do not split stack checking probes.  */
-   && GET_CODE (operands[3]) != IOR && operands[1] != const0_rtx"
+  "!(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())"
   [(set (match_dup 2) (match_dup 0))
    (parallel [(set (match_dup 2)
                    (match_op_dup 3 [(match_dup 2) (match_dup 1)]))
@@ -17978,15 +17962,13 @@
    (set (match_dup 0) (match_dup 2))])
 
 (define_peephole2
-  [(match_scratch:SI 2 "r")
-   (parallel [(set (match_operand:SI 0 "memory_operand")
-                   (match_operator:SI 3 "arith_or_logical_operator"
-                     [(match_operand:SI 1 "nonmemory_operand")
+  [(match_scratch:SWI 2 "<r>")
+   (parallel [(set (match_operand:SWI 0 "memory_operand")
+		   (match_operator:SWI 3 "arith_or_logical_operator"
+		     [(match_operand:SWI 1 "<nonmemory_operand>")
                       (match_dup 0)]))
               (clobber (reg:CC FLAGS_REG))])]
-  "!(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())
-   /* Do not split stack checking probes.  */
-   && GET_CODE (operands[3]) != IOR && operands[1] != const0_rtx"
+  "!(TARGET_READ_MODIFY_WRITE || optimize_insn_for_size_p ())"
   [(set (match_dup 2) (match_dup 0))
    (parallel [(set (match_dup 2)
                    (match_op_dup 3 [(match_dup 1) (match_dup 2)]))

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-28 19:16 [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes Uros Bizjak
@ 2016-04-29  7:47 ` Eric Botcazou
  2016-04-29  7:50   ` Uros Bizjak
  0 siblings, 1 reply; 11+ messages in thread
From: Eric Botcazou @ 2016-04-29  7:47 UTC (permalink / raw)
  To: gcc-patches, Uros Bizjak

> While looking at the insn enable condition, I noticed that we don't
> use "probe_stack" pattern any more, as the stack check loop is now
> implemented in a different way.

Yes, we do, probe_stack is a standard pattern called by the middle-end.

> 2016-04-28  Uros Bizjak  <ubizjak@gmail.com>
> 
>     * config/i386/i386.md (peephole2s for operations with memory inputs):
>     Use SWI mode iterator.
>     (peephole2s for operations with memory outputs): Ditto.
>     Do not check for stack checking probe.
> 
>     (probe_stack): Remove expander.
> 
> Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.

How did you test it exactly?

                === acats tests ===
FAIL:   c52103x
FAIL:   c52104x

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29  7:47 ` Eric Botcazou
@ 2016-04-29  7:50   ` Uros Bizjak
  2016-04-29  7:58     ` Eric Botcazou
  0 siblings, 1 reply; 11+ messages in thread
From: Uros Bizjak @ 2016-04-29  7:50 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: gcc-patches

On Fri, Apr 29, 2016 at 9:47 AM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> While looking at the insn enable condition, I noticed that we don't
>> use "probe_stack" pattern any more, as the stack check loop is now
>> implemented in a different way.
>
> Yes, we do, probe_stack is a standard pattern called by the middle-end.
>
>> 2016-04-28  Uros Bizjak  <ubizjak@gmail.com>
>>
>>     * config/i386/i386.md (peephole2s for operations with memory inputs):
>>     Use SWI mode iterator.
>>     (peephole2s for operations with memory outputs): Ditto.
>>     Do not check for stack checking probe.
>>
>>     (probe_stack): Remove expander.
>>
>> Patch was bootstrapped and regression tested on x86_64-linux-gnu {,-m32}.
>
> How did you test it exactly?
>
>                 === acats tests ===
> FAIL:   c52103x
> FAIL:   c52104x

Apparently without ada...

We can put it back, but prehaps implemented as unspec, so it won't
interfere with peepholes?

Uros.

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29  7:50   ` Uros Bizjak
@ 2016-04-29  7:58     ` Eric Botcazou
  2016-04-29  9:30       ` Uros Bizjak
  0 siblings, 1 reply; 11+ messages in thread
From: Eric Botcazou @ 2016-04-29  7:58 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches

> We can put it back, but prehaps implemented as unspec, so it won't
> interfere with peepholes?

No strong opinion, as long as the final assembly is the same as before.

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29  7:58     ` Eric Botcazou
@ 2016-04-29  9:30       ` Uros Bizjak
  2016-04-29 10:17         ` Eric Botcazou
  0 siblings, 1 reply; 11+ messages in thread
From: Uros Bizjak @ 2016-04-29  9:30 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 324 bytes --]

On Fri, Apr 29, 2016 at 9:58 AM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> We can put it back, but prehaps implemented as unspec, so it won't
>> interfere with peepholes?
>
> No strong opinion, as long as the final assembly is the same as before.

I'm testing the attached patch. Does it fix your ada failures?

Uros.

[-- Attachment #2: r.diff.txt --]
[-- Type: text/plain, Size: 1038 bytes --]

Index: i386.md
===================================================================
--- i386.md	(revision 235620)
+++ i386.md	(working copy)
@@ -88,6 +88,7 @@
   UNSPEC_SET_GOT_OFFSET
   UNSPEC_MEMORY_BLOCKAGE
   UNSPEC_STACK_CHECK
+  UNSPEC_PROBE_STACK
 
   ;; TLS support
   UNSPEC_TP
@@ -17552,6 +17553,23 @@
   DONE;
 })
 
+(define_expand "probe_stack"
+  [(parallel
+     [(set (match_operand 0 "memory_operand")
+	   (unspec [(const_int 0)] UNSPEC_PROBE_STACK))
+      (clobber (reg:CC FLAGS_REG))])])
+
+;; Use OR for stack probes, this is shorter.
+(define_insn "*probe_stack_<mode>"
+  [(set (match_operand:W 0 "memory_operand" "=m")
+	(unspec:W [(const_int 0)] UNSPEC_PROBE_STACK))
+   (clobber (reg:CC FLAGS_REG))]
+  ""
+  "or{<imodesuffix>}\t{$0, %0|%0, 0}"
+  [(set_attr "type" "alu1")
+   (set_attr "mode" "<MODE>")
+   (set_attr "length_immediate" "1")])
+  
 (define_insn "adjust_stack_and_probe<mode>"
   [(set (match_operand:P 0 "register_operand" "=r")
 	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29  9:30       ` Uros Bizjak
@ 2016-04-29 10:17         ` Eric Botcazou
  2016-04-29 10:51           ` Uros Bizjak
  0 siblings, 1 reply; 11+ messages in thread
From: Eric Botcazou @ 2016-04-29 10:17 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches

> I'm testing the attached patch. Does it fix your ada failures?

No, it totally breaks stack checking. :-(

                === acats tests ===
 FAIL:  c52103x
 FAIL:  c52104x
+FAIL:  c52104y
+FAIL:  cb1010a
+FAIL:  cb1010c
+FAIL:  cb1010d
 
                === acats Summary ===
-# of expected passes           2318
-# of unexpected failures       2
+# of expected passes           2314
+# of unexpected failures       6
 Native configuration is x86_64-suse-linux-gnu
 
                === gcc tests ===
@@ -133,11 +137,24 @@
 
 
 Running target unix
+FAIL: gnat.dg/opt49.adb 3 blank line(s) in output
+FAIL: gnat.dg/opt49.adb (test for excess errors)
+UNRESOLVED: gnat.dg/opt49.adb compilation failed to produce executable
+FAIL: gnat.dg/stack_check1.adb 3 blank line(s) in output
+FAIL: gnat.dg/stack_check1.adb (test for excess errors)
+UNRESOLVED: gnat.dg/stack_check1.adb compilation failed to produce executable
+FAIL: gnat.dg/stack_check2.adb 3 blank line(s) in output
+FAIL: gnat.dg/stack_check2.adb (test for excess errors)
+UNRESOLVED: gnat.dg/stack_check2.adb compilation failed to produce executable
+FAIL: gnat.dg/stack_check3.adb 3 blank line(s) in output
+FAIL: gnat.dg/stack_check3.adb (test for excess errors)


/home/eric/svn/gcc/gcc/testsuite/gnat.dg/opt49.adb:31:4: error: unrecognizable 
insn:
(insn 33 32 34 8 (parallel [
            (set (mem/v:DI (reg/f:DI 7 sp) [0  S8 A8])
                (unspec [
                        (const_int 0 [0])
                    ] UNSPEC_PROBE_STACK))
            (clobber (reg:CC 17 flags))
        ]) /home/eric/svn/gcc/gcc/testsuite/gnat.dg/opt49.adb:17 -1
     (nil))
+===========================GNAT BUG DETECTED==============================+
| 7.0.0 20160429 (experimental) [trunk revision 235619] (x86_64-suse-linux) 
GCC error:|
| in extract_insn, at recog.c:2287                                         |
| Error detected around 
/home/eric/svn/gcc/gcc/testsuite/gnat.dg/opt49.adb:31:4|

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29 10:17         ` Eric Botcazou
@ 2016-04-29 10:51           ` Uros Bizjak
  2016-04-29 11:23             ` Eric Botcazou
  0 siblings, 1 reply; 11+ messages in thread
From: Uros Bizjak @ 2016-04-29 10:51 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 334 bytes --]

On Fri, Apr 29, 2016 at 12:17 PM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> I'm testing the attached patch. Does it fix your ada failures?
>
> No, it totally breaks stack checking. :-(

Eh, I was trying to be too clever.

Attached patch was actually tested on a couple of cases. It generates
the same assembly as before.

Uros.

[-- Attachment #2: r.diff.txt --]
[-- Type: text/plain, Size: 1099 bytes --]

Index: i386.md
===================================================================
--- i386.md	(revision 235620)
+++ i386.md	(working copy)
@@ -88,6 +88,7 @@
   UNSPEC_SET_GOT_OFFSET
   UNSPEC_MEMORY_BLOCKAGE
   UNSPEC_STACK_CHECK
+  UNSPEC_PROBE_STACK
 
   ;; TLS support
   UNSPEC_TP
@@ -17552,6 +17553,29 @@
   DONE;
 })
 
+(define_expand "probe_stack"
+  [(match_operand 0 "memory_operand")]
+  ""
+{
+  rtx (*insn) (rtx)
+    = (GET_MODE (operands[0]) == DImode
+       ? gen_probe_stack_di : gen_probe_stack_si);
+
+  emit_insn (insn (operands[0]));
+  DONE;
+})
+
+;; Use OR for stack probes, this is shorter.
+(define_insn "probe_stack_<mode>"
+  [(set (match_operand:W 0 "memory_operand" "=m")
+	(unspec:W [(const_int 0)] UNSPEC_PROBE_STACK))
+   (clobber (reg:CC FLAGS_REG))]
+  ""
+  "or{<imodesuffix>}\t{$0, %0|%0, 0}"
+  [(set_attr "type" "alu1")
+   (set_attr "mode" "<MODE>")
+   (set_attr "length_immediate" "1")])
+  
 (define_insn "adjust_stack_and_probe<mode>"
   [(set (match_operand:P 0 "register_operand" "=r")
 	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29 10:51           ` Uros Bizjak
@ 2016-04-29 11:23             ` Eric Botcazou
  2016-04-29 11:52               ` Uros Bizjak
  0 siblings, 1 reply; 11+ messages in thread
From: Eric Botcazou @ 2016-04-29 11:23 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches

> Attached patch was actually tested on a couple of cases. It generates
> the same assembly as before.

Note that you could just remove the second ":W" in the define_insn pattern.

That's better, but not quite it because this segfaults at -O2:

#0  memory_operand (op=0xabababababababab, mode=mode@entry=VOIDmode)
    at /home/eric/svn/gcc/gcc/recog.c:1360
#1  0x00000000014388b1 in get_attr_memory (insn=insn@entry=0x7ffff697b8c0)
    at /home/eric/svn/gcc/gcc/config/i386/i386.md:2120
#2  0x0000000001636fb8 in insn_default_latency_generic (insn=0x7ffff697b8c0)
    at /home/eric/svn/gcc/gcc/config/i386/i386.md:27394
#3  0x00000000017f9695 in insn_cost (insn=0x7ffff697b8c0)
    at /home/eric/svn/gcc/gcc/haifa-sched.c:1415
#4  0x00000000017feb75 in dep_cost_1 (link=link@entry=0x2e962e8, 
dw=dw@entry=0)
    at /home/eric/svn/gcc/gcc/haifa-sched.c:1468
#5  0x0000000001800d7a in dep_cost (link=0x2e962e8)
    at /home/eric/svn/gcc/gcc/haifa-sched.c:1523
#6  priority (insn=0x7ffff697b8c0) at /home/eric/svn/gcc/gcc/haifa-
sched.c:1674
#7  0x0000000001800e6f in set_priorities (head=<optimized out>, 
    tail=<optimized out>) at /home/eric/svn/gcc/gcc/haifa-sched.c:7209
#8  0x0000000000f689e3 in compute_priorities ()
    at /home/eric/svn/gcc/gcc/sched-rgn.c:3022
#9  0x0000000000f6bc46 in schedule_region (rgn=0)
    at /home/eric/svn/gcc/gcc/sched-rgn.c:3115
#10 schedule_insns () at /home/eric/svn/gcc/gcc/sched-rgn.c:3513
#11 0x0000000000f6c4de in schedule_insns ()

(gdb) frame 1
#1  0x00000000014388b1 in get_attr_memory (insn=insn@entry=0x7ffff697b8c0)
    at /home/eric/svn/gcc/gcc/config/i386/i386.md:2120
2120                   (match_test "TARGET_AVX")
(gdb) p debug_rtx(insn)
(insn 779 927 928 2 (parallel [
            (set (mem/v:DI (reg/f:DI 7 sp) [0  S8 A8])
                (unspec:DI [
                        (const_int 0 [0])
                    ] UNSPEC_PROBE_STACK))
            (clobber (reg:CC 17 flags))
        ]) c52104y.adb:57 1005 {probe_stack_di}
     (expr_list:REG_UNUSED (reg:CC 17 flags)
        (nil)))
$1 = void

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29 11:23             ` Eric Botcazou
@ 2016-04-29 11:52               ` Uros Bizjak
  2016-04-29 14:30                 ` Eric Botcazou
  0 siblings, 1 reply; 11+ messages in thread
From: Uros Bizjak @ 2016-04-29 11:52 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: gcc-patches

[-- Attachment #1: Type: text/plain, Size: 532 bytes --]

On Fri, Apr 29, 2016 at 1:23 PM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> Attached patch was actually tested on a couple of cases. It generates
>> the same assembly as before.
>
> Note that you could just remove the second ":W" in the define_insn pattern.

Eh, then the build yawns about the missing mode of the input operand.

> That's better, but not quite it because this segfaults at -O2:

This is getting a bit frustrating, but attached patch should solve
this failure. Again lightly tested, regtest in progress.

Uros.

[-- Attachment #2: r.diff.txt --]
[-- Type: text/plain, Size: 1145 bytes --]

Index: i386.md
===================================================================
--- i386.md	(revision 235620)
+++ i386.md	(working copy)
@@ -88,6 +88,7 @@
   UNSPEC_SET_GOT_OFFSET
   UNSPEC_MEMORY_BLOCKAGE
   UNSPEC_STACK_CHECK
+  UNSPEC_PROBE_STACK
 
   ;; TLS support
   UNSPEC_TP
@@ -17552,6 +17553,30 @@
   DONE;
 })
 
+(define_expand "probe_stack"
+  [(match_operand 0 "memory_operand")]
+  ""
+{
+  rtx (*insn) (rtx, rtx)
+    = (GET_MODE (operands[0]) == DImode
+       ? gen_probe_stack_di : gen_probe_stack_si);
+
+  emit_insn (insn (operands[0], const0_rtx));
+  DONE;
+})
+
+;; Use OR for stack probes, this is shorter.
+(define_insn "probe_stack_<mode>"
+  [(set (match_operand:W 0 "memory_operand" "=m")
+	(unspec:W [(match_operand:W 1 "const0_operand")]
+		  UNSPEC_PROBE_STACK))
+   (clobber (reg:CC FLAGS_REG))]
+  ""
+  "or{<imodesuffix>}\t{%1, %0|%0, %1}"
+  [(set_attr "type" "alu1")
+   (set_attr "mode" "<MODE>")
+   (set_attr "length_immediate" "1")])
+  
 (define_insn "adjust_stack_and_probe<mode>"
   [(set (match_operand:P 0 "register_operand" "=r")
 	(unspec_volatile:P [(match_operand:P 1 "register_operand" "0")]

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29 11:52               ` Uros Bizjak
@ 2016-04-29 14:30                 ` Eric Botcazou
  2016-04-29 14:44                   ` Uros Bizjak
  0 siblings, 1 reply; 11+ messages in thread
From: Eric Botcazou @ 2016-04-29 14:30 UTC (permalink / raw)
  To: Uros Bizjak; +Cc: gcc-patches

> Eh, then the build yawns about the missing mode of the input operand.

Every good back-end has at least an example of this. ;-)

> This is getting a bit frustrating, but attached patch should solve
> this failure. Again lightly tested, regtest in progress.

Everything is back to normal with this one, thanks!

-- 
Eric Botcazou

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes
  2016-04-29 14:30                 ` Eric Botcazou
@ 2016-04-29 14:44                   ` Uros Bizjak
  0 siblings, 0 replies; 11+ messages in thread
From: Uros Bizjak @ 2016-04-29 14:44 UTC (permalink / raw)
  To: Eric Botcazou; +Cc: gcc-patches

On Fri, Apr 29, 2016 at 4:30 PM, Eric Botcazou <ebotcazou@adacore.com> wrote:
>> Eh, then the build yawns about the missing mode of the input operand.
>
> Every good back-end has at least an example of this. ;-)
>
>> This is getting a bit frustrating, but attached patch should solve
>> this failure. Again lightly tested, regtest in progress.
>
> Everything is back to normal with this one, thanks!

Thanks for testing, committed to mainline with following ChangeLog:

2016-04-29  Uros Bizjak  <ubizjak@gmail.com>

    * config/i386/i386.md (unspec): Add UNSPEC_PROBE_STACK.
    (probe_stack): New expander.
    (probe_stack_<mode>): New insn pattern.

Uros.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2016-04-29 14:44 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-28 19:16 [PATCH, i386]: Extend TARGET_READ_MODIFY{,_WRITE} peepholes to all integer modes Uros Bizjak
2016-04-29  7:47 ` Eric Botcazou
2016-04-29  7:50   ` Uros Bizjak
2016-04-29  7:58     ` Eric Botcazou
2016-04-29  9:30       ` Uros Bizjak
2016-04-29 10:17         ` Eric Botcazou
2016-04-29 10:51           ` Uros Bizjak
2016-04-29 11:23             ` Eric Botcazou
2016-04-29 11:52               ` Uros Bizjak
2016-04-29 14:30                 ` Eric Botcazou
2016-04-29 14:44                   ` Uros Bizjak

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).