IBM Z: Remove match_scratch workaround
Since commit dd1ef00c45
("Fix bug in the define_subst handling that
made match_scratch unusable for multi-alternative patterns.") the
workaround for that bug in *ashrdi3_31<setcc><cconly> is not only no
longer necessary, but actually breaks the build.
Get rid of it by using only one alternative in (match_scratch). It
will be replicated as many times as needed in order to match the
pattern with which (define_subst) is used.
gcc/ChangeLog:
* config/s390/s390.md(*ashrdi3_31<setcc><cconly>): Use a single
constraint.
* config/s390/subst.md(cconly_subst): Use a single constraint
in (match_scratch).
gcc/testsuite/ChangeLog:
* gcc.target/s390/ashr.c: New test.
This commit is contained in:
parent
9ca24bd34b
commit
22d834e32b
3 changed files with 16 additions and 11 deletions
|
@ -9328,19 +9328,13 @@
|
|||
""
|
||||
"")
|
||||
|
||||
; FIXME: The number of alternatives is doubled here to match the fix
|
||||
; number of 2 in the subst pattern for the (clobber (match_scratch...
|
||||
; The right fix should be to support match_scratch in the output
|
||||
; pattern of a define_subst.
|
||||
(define_insn "*ashrdi3_31<setcc><cconly>"
|
||||
[(set (match_operand:DI 0 "register_operand" "=d, d")
|
||||
(ashiftrt:DI (match_operand:DI 1 "register_operand" "0, 0")
|
||||
(match_operand:QI 2 "shift_count_operand" "jsc,jsc")))
|
||||
[(set (match_operand:DI 0 "register_operand" "=d")
|
||||
(ashiftrt:DI (match_operand:DI 1 "register_operand" "0")
|
||||
(match_operand:QI 2 "shift_count_operand" "jsc")))
|
||||
(clobber (reg:CC CC_REGNUM))]
|
||||
"!TARGET_ZARCH"
|
||||
"@
|
||||
srda\t%0,%Y2
|
||||
srda\t%0,%Y2"
|
||||
"srda\t%0,%Y2"
|
||||
[(set_attr "op_type" "RS")
|
||||
(set_attr "atype" "reg")])
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@
|
|||
"s390_match_ccmode(insn, CCSmode)"
|
||||
[(set (reg CC_REGNUM)
|
||||
(compare (match_dup 1) (const_int 0)))
|
||||
(clobber (match_scratch:DSI 0 "=d,d"))])
|
||||
(clobber (match_scratch:DSI 0 "=d"))])
|
||||
|
||||
(define_subst_attr "cconly" "cconly_subst" "" "_cconly")
|
||||
|
||||
|
|
11
gcc/testsuite/gcc.target/s390/ashr.c
Normal file
11
gcc/testsuite/gcc.target/s390/ashr.c
Normal file
|
@ -0,0 +1,11 @@
|
|||
/* Test the arithmetic shift right pattern. */
|
||||
|
||||
/* { dg-do compile } */
|
||||
/* { dg-options "-O2" } */
|
||||
|
||||
int e(void);
|
||||
|
||||
int f (long c, int b)
|
||||
{
|
||||
return (c >> b) && e ();
|
||||
}
|
Loading…
Add table
Reference in a new issue