commit:     0d98cab225ecb321bc18d894951bb2d3b7b45bd0
Author:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 17 21:26:01 2020 +0000
Commit:     Sergei Trofimovich <slyfox <AT> gentoo <DOT> org>
CommitDate: Mon Aug 17 21:26:01 2020 +0000
URL:        https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=0d98cab2

10.2.0: backport ipa-cp bit fix, part 2 (PR/96482)

Reported-by: Johannes Hirte
Bug: https://bugs.gentoo.org/736685
Bug: https://gcc.gnu.org/PR96482
Signed-off-by: Sergei Trofimovich <slyfox <AT> gentoo.org>

 10.2.0/gentoo/36_all_ipa-fix-bit-CP-p2.patch | 80 ++++++++++++++++++++++++++++
 10.2.0/gentoo/README.history                 |  1 +
 2 files changed, 81 insertions(+)

diff --git a/10.2.0/gentoo/36_all_ipa-fix-bit-CP-p2.patch 
b/10.2.0/gentoo/36_all_ipa-fix-bit-CP-p2.patch
new file mode 100644
index 0000000..1183b57
--- /dev/null
+++ b/10.2.0/gentoo/36_all_ipa-fix-bit-CP-p2.patch
@@ -0,0 +1,80 @@
+https://bugs.gentoo.org/736685
+https://gcc.gnu.org/PR96482
+
+From 4a2371497e9bed64aa4f46169127f3ea8e32e726 Mon Sep 17 00:00:00 2001
+From: Martin Liska <[email protected]>
+Date: Thu, 13 Aug 2020 09:38:41 +0200
+Subject: [PATCH] ipa: fix ICE in get_default_value
+
+The patch aligns code with ipcp_bits_lattice::set_to_constant
+where we properly mask m_value with m_mask. The same should
+be done here.
+
+gcc/ChangeLog:
+
+       PR ipa/96482
+       * ipa-cp.c (ipcp_bits_lattice::meet_with_1): Mask m_value
+       with m_mask.
+
+gcc/testsuite/ChangeLog:
+
+       PR ipa/96482
+       * gcc.dg/ipa/pr96482-2.c: New test.
+
+(cherry picked from commit f91770216eade83f068528c1e4f00e2ac3b23044)
+---
+ gcc/ipa-cp.c                         |  2 +-
+ gcc/testsuite/gcc.dg/ipa/pr96482-2.c | 33 ++++++++++++++++++++++++++++
+ 2 files changed, 34 insertions(+), 1 deletion(-)
+ create mode 100644 gcc/testsuite/gcc.dg/ipa/pr96482-2.c
+
+--- a/gcc/ipa-cp.c
++++ b/gcc/ipa-cp.c
+@@ -1047,7 +1047,7 @@ ipcp_bits_lattice::meet_with_1 (widest_int value, 
widest_int mask,
+ 
+   widest_int old_mask = m_mask;
+   m_mask = (m_mask | mask) | (m_value ^ value);
+-  m_value &= value;
++  m_value &= ~m_mask;
+ 
+   if (wi::sext (m_mask, precision) == -1)
+     return set_to_bottom ();
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/ipa/pr96482-2.c
+@@ -0,0 +1,33 @@
++/* PR ipa/96482 */
++/* { dg-do compile } */
++/* { dg-options "-O2"  } */
++
++int i2c_transfer();
++void _dev_err();
++
++struct i2c_msg {
++  char bufaddr;
++  int adapterdev;
++} wdt87xx_i2c_xfer_client;
++
++int wdt87xx_i2c_xfer_client_0, wdt87xx_i2c_xfer_rxdata, 
wdt87xx_get_string_str_idx;
++
++void
++static wdt87xx_i2c_xfer(void *txdata, unsigned rxlen) {
++  struct i2c_msg msgs[] = {wdt87xx_i2c_xfer_client_0, rxlen,
++                           wdt87xx_i2c_xfer_rxdata};
++  int error = i2c_transfer(wdt87xx_i2c_xfer_client, msgs);
++  _dev_err("", __func__, error);
++}
++static void wdt87xx_get_string(unsigned len) {
++  char tx_buf[] = {wdt87xx_get_string_str_idx, 3};
++  int rx_len = len + 2;
++  wdt87xx_i2c_xfer(tx_buf, rx_len);
++}
++
++void
++wdt87xx_ts_probe_tx_buf() {
++  wdt87xx_get_string(34);
++  wdt87xx_get_string(8);
++  wdt87xx_i2c_xfer(wdt87xx_ts_probe_tx_buf, 2);
++}
+-- 
+2.28.0
+

diff --git a/10.2.0/gentoo/README.history b/10.2.0/gentoo/README.history
index 49edda3..8be215b 100644
--- a/10.2.0/gentoo/README.history
+++ b/10.2.0/gentoo/README.history
@@ -2,6 +2,7 @@
        + 33_all_lto-O0-mix-ICE-ipa-PR96291.patch
        + 34_all_fundecl-ICE-PR95820.patch
        + 35_all_ipa-fix-bit-CP.patch
+       + 36_all_ipa-fix-bit-CP-p2.patch
 
 1              23 July 2020
        + 01_all_default-fortify-source.patch

Reply via email to