re PR rtl-optimization/89795 (wrong code with -O2 -fno-dce -fno-forward-propagate...
authorEric Botcazou <ebotcazou@adacore.com>
Wed, 11 Sep 2019 10:41:27 +0000 (10:41 +0000)
committerEric Botcazou <ebotcazou@gcc.gnu.org>
Wed, 11 Sep 2019 10:41:27 +0000 (10:41 +0000)
PR rtl-optimization/89795
* rtlanal.c (nonzero_bits1) <SUBREG>: Do not propagate results from
inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set.

From-SVN: r275635

gcc/ChangeLog
gcc/rtlanal.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.target/sparc/20161111-1.c

index 33b43862051622bccbfb95fdbc5de4df43298188..3452012a45c6f4d5f416658f1246932775eba007 100644 (file)
@@ -1,3 +1,9 @@
+2019-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+
+       PR rtl-optimization/89795
+       * rtlanal.c (nonzero_bits1) <SUBREG>: Do not propagate results from
+       inner REGs to paradoxical SUBREGs if WORD_REGISTER_OPERATIONS is set.
+
 2019-09-11  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/91723
index 1fbbeda88b26d5a8540ab7d7e785fe1fa8c4b993..3a72db7572d0474ffc8295f6323bdf5dfab9c59b 100644 (file)
@@ -4819,7 +4819,7 @@ nonzero_bits1 (const_rtx x, scalar_int_mode mode, const_rtx known_x,
               || ((extend_op = load_extend_op (inner_mode)) == SIGN_EXTEND
                   ? val_signbit_known_set_p (inner_mode, nonzero)
                   : extend_op != ZERO_EXTEND)
-              || (!MEM_P (SUBREG_REG (x)) && !REG_P (SUBREG_REG (x))))
+              || !MEM_P (SUBREG_REG (x)))
              && xmode_width > inner_width)
            nonzero
              |= (GET_MODE_MASK (GET_MODE (x)) & ~GET_MODE_MASK (inner_mode));
index d4488b6789c423a1f08f1d22bcf6b89445af058d..cd9821e09ff0213298f2281b5f799201bc24b9d9 100644 (file)
@@ -1,3 +1,7 @@
+2019-09-11  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * gcc.target/sparc/20161111-1.c: XFAIL redundant zero-extension test.
+
 2019-09-11  Jakub Jelinek  <jakub@redhat.com>
 
        PR tree-optimization/91723
index eda8b0a9f1252e1b199a665c8586741e0886108a..8195fec899029e98853a753e63b0b71b2f3481c0 100644 (file)
@@ -14,4 +14,4 @@ unsigned char ee_isdigit2(unsigned int i)
   return retval;
 }
 
-/* { dg-final { scan-assembler-not "and\t%" } } */
+/* { dg-final { scan-assembler-not "and\t%" { xfail *-*-* } } } */