Hi,
this patch series adds IPA support for outlined IFN_ASSUME bodies,
primarily focusing on ipa-cp and ipa-sra.  It introduces internal
callback edges and a lot of logic to work with them.

Instead of one large patch, I decided to split the feature into
this series.  I am aware that 19 patches is a little much, but most of
the patches are (hopefully) easy changes.

The first 17 patches prepare the logic for the new edges, which are
added in patch 18.  I tried to keep the patches as inert as possible,
i.e. they shouldn't have an effect until patch 18 is committed.

I did an incremental bootstrap (apply in order,
bootstrap after each patch), bootstrapped and LTO-bootstrapped the
series as a whole and regtested both of those without any new
regressions on x86_64-linux.

Josef Melcr (19):
  cgraph: Add assume_function field to cgraph_node
  Add vector streaming functions to callback_info
  Add inverted_mapping field to callback_info
  Add supporting functions for IFN_ASSUME IPA support
  cgraph: Move printing logic to include callback edges
  cgraph: Add callback_with_carrying_edge_p method
  cgraph: Replace callback redirection logic with a function
  middle-end: Don't disable optimizations for assume bodies
  cgraph: Add functions for internal callback edge creation
  ipa: Adjust jump function computations for callback edges
  ipa: Adjust fnsummary for internal callback edges
  ipa: Adjust ipa-sra for IFN_ASSUME bodies
  cgraph: Adjust callback edge sanity checks
  ipa: Copy over assume_function when cloning
  cgraph, ipa: Internal callback edge redirection logic and call adjustments
  ipa: Don't merge assume bodies with non-assume functions
  ipa: Help passes make decisions about assume bodies
  ipa: Create a callback edge when encountering an internal .ASSUME call
  testsuite: Add testcases for IPA for IFN_ASSUME changes

 gcc/attr-callback.cc                        |  13 ++
 gcc/attr-callback.h                         |   4 +
 gcc/callback-info.cc                        | 142 +++++++++++++++++---
 gcc/callback-info.h                         |  29 +++-
 gcc/cgraph.cc                               | 112 +++++++++++----
 gcc/cgraph.h                                |  18 ++-
 gcc/cgraphclones.cc                         |   1 +
 gcc/gimple-low.cc                           |  15 +--
 gcc/ipa-cp.cc                               |  10 ++
 gcc/ipa-fnsummary.cc                        |  22 ++-
 gcc/ipa-icf.cc                              |  11 +-
 gcc/ipa-param-manipulation.cc               |  54 +++++++-
 gcc/ipa-polymorphic-call.cc                 |   7 +
 gcc/ipa-prop.cc                             |  27 +++-
 gcc/ipa-sra.cc                              | 119 +++++++++++++---
 gcc/lto-cgraph.cc                           |   2 +
 gcc/testsuite/g++.dg/ipa/ipa-cp-assume-2.C  |  40 ++++++
 gcc/testsuite/g++.dg/ipa/ipa-cp-assume-3.C  |  51 +++++++
 gcc/testsuite/g++.dg/ipa/ipa-cp-assume.C    |  26 ++++
 gcc/testsuite/g++.dg/ipa/ipa-sra-assume-2.C |  33 +++++
 gcc/testsuite/g++.dg/ipa/ipa-sra-assume-3.C |  34 +++++
 gcc/testsuite/g++.dg/ipa/ipa-sra-assume.C   |  37 +++++
 gcc/testsuite/g++.dg/lto/ipa-cp-assume_0.C  |  27 ++++
 gcc/testsuite/g++.dg/lto/ipa-cp-assume_1.C  |  13 ++
 gcc/testsuite/g++.dg/lto/ipa-sra-assume_0.C |  28 ++++
 gcc/testsuite/g++.dg/lto/ipa-sra-assume_1.C |  11 ++
 gcc/tree-inline.cc                          |   1 +
 gcc/tree-sra.cc                             |   4 +-
 28 files changed, 803 insertions(+), 88 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/ipa/ipa-cp-assume-2.C
 create mode 100644 gcc/testsuite/g++.dg/ipa/ipa-cp-assume-3.C
 create mode 100644 gcc/testsuite/g++.dg/ipa/ipa-cp-assume.C
 create mode 100644 gcc/testsuite/g++.dg/ipa/ipa-sra-assume-2.C
 create mode 100644 gcc/testsuite/g++.dg/ipa/ipa-sra-assume-3.C
 create mode 100644 gcc/testsuite/g++.dg/ipa/ipa-sra-assume.C
 create mode 100644 gcc/testsuite/g++.dg/lto/ipa-cp-assume_0.C
 create mode 100644 gcc/testsuite/g++.dg/lto/ipa-cp-assume_1.C
 create mode 100644 gcc/testsuite/g++.dg/lto/ipa-sra-assume_0.C
 create mode 100644 gcc/testsuite/g++.dg/lto/ipa-sra-assume_1.C

-- 
2.55.0

Reply via email to