diff options
author | Eric Botcazou <ebotcazou@adacore.com> | 2019-09-11 10:41:27 +0000 |
---|---|---|
committer | Eric Botcazou <ebotcazou@gcc.gnu.org> | 2019-09-11 10:41:27 +0000 |
commit | 0a237a94c206b53eb73baad2d75fbcca518df65e (patch) | |
tree | 8dfd7a8f5c6dc824fb59632ad688516eeb8cebff /gcc | |
parent | 26d815a3e587ac04dbd63eec3fb5aecb04db7242 (diff) | |
download | gcc-0a237a94c206b53eb73baad2d75fbcca518df65e.zip gcc-0a237a94c206b53eb73baad2d75fbcca518df65e.tar.gz gcc-0a237a94c206b53eb73baad2d75fbcca518df65e.tar.bz2 |
re PR rtl-optimization/89795 (wrong code with -O2 -fno-dce -fno-forward-propagate -fno-sched-pressure)
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/rtlanal.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/sparc/20161111-1.c | 2 |
4 files changed, 12 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 33b4386..3452012 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -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 diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index 1fbbeda..3a72db7 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -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)); diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index d4488b6..cd9821e 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -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 diff --git a/gcc/testsuite/gcc.target/sparc/20161111-1.c b/gcc/testsuite/gcc.target/sparc/20161111-1.c index eda8b0a..8195fec 100644 --- a/gcc/testsuite/gcc.target/sparc/20161111-1.c +++ b/gcc/testsuite/gcc.target/sparc/20161111-1.c @@ -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 *-*-* } } } */ |