diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 8 | ||||
-rw-r--r-- | gcc/combine.c | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 14 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr79388.c | 23 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/pr79450.c | 22 |
5 files changed, 69 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 113328c..814b784 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2017-02-13 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/79388 + PR rtl-optimization/79450 + * combine.c (distribute_notes): When removing TEM_INSN for which + corresponding dest has last value recorded, invalidate that last + value. + 2016-02-13 Kyrylo Tkachov <kyrylo.tkachov@arm.com> * config/arm/arm.c (arm_print_tune_info): Use ASM_COMMENT_START instead diff --git a/gcc/combine.c b/gcc/combine.c index 727299b..b5c0c18 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -14288,6 +14288,11 @@ distribute_notes (rtx notes, rtx_insn *from_insn, rtx_insn *i3, rtx_insn *i2, NULL_RTX, NULL_RTX, NULL_RTX); distribute_links (LOG_LINKS (tem_insn)); + unsigned int regno = REGNO (XEXP (note, 0)); + reg_stat_type *rsp = ®_stat[regno]; + if (rsp->last_set == tem_insn) + record_value_for_reg (XEXP (note, 0), NULL, NULL_RTX); + SET_INSN_DELETED (tem_insn); if (tem_insn == i2) i2 = NULL; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 429fe94..f4497d5 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,7 +1,14 @@ +2017-02-13 Jakub Jelinek <jakub@redhat.com> + + PR rtl-optimization/79388 + PR rtl-optimization/79450 + * gcc.c-torture/execute/pr79388.c: New test. + * gcc.c-torture/execute/pr79450.c: New test. + 2017-02-12 Thomas Koenig <tkoenig@gcc.gnu.org> PR fortran/65542 - * gfortran.dg/spread_init_expr_2.f90: New test case. + * gfortran.dg/spread_init_expr_2.f90: New test case. 2017-02-11 Jakub Jelinek <jakub@redhat.com> @@ -812,7 +819,8 @@ * gcc.dg/vect/vect-24.c: Remove xfail on ARM targets. 2017-01-25 Carl Love <cel@us.ibm.com> - * gcc.target/powerpc/builtins-3-p8.c: Add missing tests for the + + * gcc.target/powerpc/builtins-3-p8.c: Add missing tests for the vec_packs built-ins 2017-01-25 Christophe Lyon <christophe.lyon@linaro.org> @@ -1012,7 +1020,7 @@ 2017-01-23 Thomas Koenig <tkoenig@netcologne.de> - * gfortran.dg/integer_exponentiation_7.f90: New test. + * gfortran.dg/integer_exponentiation_7.f90: New test. 2017-01-23 Bernd Schmidt <bschmidt@redhat.com> diff --git a/gcc/testsuite/gcc.c-torture/execute/pr79388.c b/gcc/testsuite/gcc.c-torture/execute/pr79388.c new file mode 100644 index 0000000..07a75c9 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr79388.c @@ -0,0 +1,23 @@ +/* PR rtl-optimization/79388 */ +/* { dg-additional-options "-fno-tree-coalesce-vars" } */ + +unsigned int a, c; + +__attribute__ ((noinline, noclone)) unsigned int +foo (unsigned int p) +{ + p |= 1; + p &= 0xfffe; + p %= 0xffff; + c = p; + return a + p; +} + +int +main (void) +{ + int x = foo (6); + if (x != 6) + __builtin_abort(); + return 0; +} diff --git a/gcc/testsuite/gcc.c-torture/execute/pr79450.c b/gcc/testsuite/gcc.c-torture/execute/pr79450.c new file mode 100644 index 0000000..5ba7101 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr79450.c @@ -0,0 +1,22 @@ +/* PR rtl-optimization/79450 */ + +unsigned int +foo (unsigned char x, unsigned long long y) +{ + do + { + x &= !y; + x %= 24; + } + while (x < y); + return x + y; +} + +int +main (void) +{ + unsigned int x = foo (1, 0); + if (x != 1) + __builtin_abort (); + return 0; +} |