Revert g-465c7c89e92a6d6d582173e505cb16dcb9873034
authorRichard Sandiford <richard.sandiford@arm.com>
Wed, 29 Jan 2020 18:56:35 +0000 (18:56 +0000)
committerRichard Sandiford <richard.sandiford@arm.com>
Wed, 29 Jan 2020 19:15:29 +0000 (19:15 +0000)
The patch caused regressions in gcc.target/sh/pr64345-1.c on
sh3-linux-gnu and gcc.target/m68k/pr39726.c on m68k-linux-gnu.
It didn't look like they would be fixable in an acceptably
non-invasive and unhacky way, so punting till future releases.

2020-01-29  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
Revert:

2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>

PR rtl-optimization/87763
* simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
simplification to handle subregs as well as bare regs.
* config/i386/i386.md (*testqi_ext_3): Match QI extracts too.

gcc/ChangeLog
gcc/config/i386/i386.md
gcc/simplify-rtx.c

index 67d24c74c3d5c7f2d9c009ae0c3f6fddf01296f3..e2838c053a3e1ff8c51d356a262dd98dffcce324 100644 (file)
@@ -1,3 +1,14 @@
+2020-01-29  Richard Sandiford  <richard.sandiford@arm.com>
+
+       Revert:
+
+       2020-01-28  Richard Sandiford  <richard.sandiford@arm.com>
+
+       PR rtl-optimization/87763
+       * simplify-rtx.c (simplify_truncation): Extend sign/zero_extract
+       simplification to handle subregs as well as bare regs.
+       * config/i386/i386.md (*testqi_ext_3): Match QI extracts too.
+
 2020-01-29  Joel Hutton  <Joel.Hutton@arm.com>
 
        PR target/93221
index 9f0077d59a973e8561c1f3cf5ef6255f7fb3ef37..f83b3702c8e318366c74b176ff3d42d110c1c4ff 100644 (file)
 (define_insn_and_split "*testqi_ext_3"
   [(set (match_operand 0 "flags_reg_operand")
         (match_operator 1 "compare_operator"
-         [(zero_extract:SWI
+         [(zero_extract:SWI248
             (match_operand 2 "nonimmediate_operand" "rm")
             (match_operand 3 "const_int_operand" "n")
             (match_operand 4 "const_int_operand" "n"))
index db4f9339c157b1d032a25677d1af08aab9c15749..eff1d07a2533c7bda5f0529cd318f08e6d5209d6 100644 (file)
@@ -736,9 +736,7 @@ simplify_truncation (machine_mode mode, rtx op,
      (*_extract:M1 (truncate:M1 (reg:M2)) (len) (pos')) if possible without
      changing len.  */
   if ((GET_CODE (op) == ZERO_EXTRACT || GET_CODE (op) == SIGN_EXTRACT)
-      && (REG_P (XEXP (op, 0))
-         || (SUBREG_P (XEXP (op, 0))
-             && REG_P (SUBREG_REG (XEXP (op, 0)))))
+      && REG_P (XEXP (op, 0))
       && GET_MODE (XEXP (op, 0)) == GET_MODE (op)
       && CONST_INT_P (XEXP (op, 1))
       && CONST_INT_P (XEXP (op, 2)))