aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog8
-rw-r--r--gcc/combine.c5
-rw-r--r--gcc/testsuite/ChangeLog14
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr79388.c23
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/pr79450.c22
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 = &reg_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;
+}