commit:     fce599abdf3636cf28c4f3396bb8c889166553a9
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Fri Feb 27 13:29:17 2026 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Fri Feb 27 13:29:17 2026 +0000
URL:        https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=fce599ab

16.0.0: drop upstream patch

Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...set-param_index-of-indir.-edge-when-there.patch | 129 ---------------------
 16.0.0/gentoo/README.history                       |   4 -
 2 files changed, 133 deletions(-)

diff --git 
a/16.0.0/gentoo/89_all_PR123229-ipa-prop-Reset-param_index-of-indir.-edge-when-there.patch
 
b/16.0.0/gentoo/89_all_PR123229-ipa-prop-Reset-param_index-of-indir.-edge-when-there.patch
deleted file mode 100644
index ab738fd..0000000
--- 
a/16.0.0/gentoo/89_all_PR123229-ipa-prop-Reset-param_index-of-indir.-edge-when-there.patch
+++ /dev/null
@@ -1,129 +0,0 @@
-From df63b520e9739c07448fd600a6a905391b5e8728 Mon Sep 17 00:00:00 2001
-Message-ID: 
<df63b520e9739c07448fd600a6a905391b5e8728.1772195584.git....@gentoo.org>
-From: Martin Jambor <[email protected]>
-Date: Fri, 27 Feb 2026 11:20:02 +0100
-Subject: [PATCH] ipa-prop: Reset param_index of indir. edge when there are no
- jfuncs (PR123229)
-
-Hi,
-
-in my commit r16-6149-g14ee9a2b41bafa I have added an early exit to
-update_indirect_edges_after_inlining which was however wrong, as
-demonstrated by the PR123229 testcase.  This patch reverts that change,
-restoring the previous behavior in this regard.
-
-In the testcase, the edge being inlined is a call to a thunk, which do
-not have jump functions associated with them.  This means that with
-the early exit we neither reset the parameter index associated with
-the indirect edge nor update the edges and the usage flags associated
-with them
-
-In the testcase, this meant that the param_used_by_indirect_call flag
-was not updated, which in turn meant that the inlining edge cost cache
-did not copy necessary information into the context which led to the
-fact that two contexts which were not the same were considered the
-same, and the checking code that evaluations in the cache should match
-a re-evaluation triggered.  But unfortunately this bug can probably
-have all sorts of weird and unexpected consequences.
-
-The testcase also shows that inlined thunks are a barrier to
-devirtualization which is something I will try to address next stage1.
-
-I'm currently bootstrapping&testing and O3-lto-bootstrapping this on
-x86_64-linux.  I plan to commit it if they pass because it is
-essentially a revert of my own change, even if only of a small bit of
-the patch.
-
-Martin
-
-gcc/ChangeLog:
-
-2026-02-27  Martin Jambor  <[email protected]>
-
-       PR ipa/123229
-       * ipa-prop.cc (update_indirect_edges_after_inlining): Reset parameter
-       index associated with an indirect edge if the inlined edge does not
-       have any jump functions.
-
-gcc/testsuite/ChangeLog:
-
-2026-02-27  Martin Jambor  <[email protected]>
-
-PR ipa/123229
-       * g++.dg/ipa/pr123229.C: New test.
----
- gcc/ipa-prop.cc                     |  5 ++--
- gcc/testsuite/g++.dg/ipa/pr123229.C | 36 +++++++++++++++++++++++++++++
- 2 files changed, 38 insertions(+), 3 deletions(-)
- create mode 100644 gcc/testsuite/g++.dg/ipa/pr123229.C
-
-diff --git a/gcc/ipa-prop.cc b/gcc/ipa-prop.cc
-index 12e936ba29bf..385912c37901 100644
---- a/gcc/ipa-prop.cc
-+++ b/gcc/ipa-prop.cc
-@@ -4539,8 +4539,6 @@ update_indirect_edges_after_inlining (struct cgraph_edge 
*cs,
- 
-   ipa_check_create_edge_args ();
-   class ipa_edge_args *top = ipa_edge_args_sum->get (cs);
--  if (!top)
--    return res;
-   cgraph_node *new_root
-     = cs->caller->inlined_to ? cs->caller->inlined_to : cs->caller;
-   ipa_node_params *new_root_info = ipa_node_params_sum->get (new_root);
-@@ -4552,7 +4550,8 @@ update_indirect_edges_after_inlining (struct cgraph_edge 
*cs,
-     {
-       next_ie = ie->next_callee;
- 
--      if (ie->indirect_info->param_index < 0
-+      if (!top
-+        || ie->indirect_info->param_index < 0
-         || ie->indirect_info->param_index >= ipa_get_cs_argument_count (top))
-       {
-         ie->indirect_info->param_index = -1;
-diff --git a/gcc/testsuite/g++.dg/ipa/pr123229.C 
b/gcc/testsuite/g++.dg/ipa/pr123229.C
-new file mode 100644
-index 000000000000..7c4931871d9a
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/ipa/pr123229.C
-@@ -0,0 +1,36 @@
-+/* { dg-do compile } */
-+/* { dg-options "-O3 -fno-exceptions" } */
-+
-+class a {
-+  virtual int c();
-+};
-+struct e {
-+  virtual e *d(unsigned) const;
-+  void m_fn3() { d(0); }
-+} *f, *g;
-+struct h : a, e {
-+  e *d(unsigned) const { return i(); }
-+  virtual h *i() const;
-+};
-+struct j {
-+  virtual void k(e *);
-+};
-+void l(j &m) {
-+  m.k(g);
-+  while (1) {
-+    m.k(f);
-+    f->m_fn3();
-+  }
-+}
-+struct n : j {
-+  void k(e *m) {
-+    if (o)
-+      m->m_fn3();
-+  }
-+  bool o;
-+};
-+void p() {
-+  n b;
-+  l(b);
-+}
-+
-
-base-commit: 622b68c6e14b9c289f64709ca772b02cb5855cb1
--- 
-2.53.0
-

diff --git a/16.0.0/gentoo/README.history b/16.0.0/gentoo/README.history
index 1397421..ab90f24 100644
--- a/16.0.0/gentoo/README.history
+++ b/16.0.0/gentoo/README.history
@@ -1,7 +1,3 @@
-39     ????
-
-       + 
89_all_PR123229-ipa-prop-Reset-param_index-of-indir.-edge-when-there.patch
-
 38     22 February 2026
 
        + 87_all_fix_host_pie.patch

Reply via email to