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
