This patch series updates the tail-merging pass so that sequential comparisons
leading to equal blocks can be merged, allowing the generation of a ccmp
instruction on targets that support it.

We needed to use ifcombine's `same_phi_args_p` and `recognize_if_then_else`
functions. So, a new header file 'tree-ssa-ifcombine.h', with the functions'
prototypes, has been added and 'static' has been removed from the function
signatures in 'ifcombine'.

Bootstrapped/regtested on AArch64 and x86_64.


Konstantinos Eleftheriou (2):
  ifcombine: Add tree-ssa-ifcombine.h and update function signatures
  tail-merge: Combine sequential comparisons leading to the merged block

 gcc/testsuite/gcc.dg/guality/pr54693-2.c   |   2 +-
 gcc/testsuite/gcc.dg/tree-ssa/pr102793-1.c |  50 ++++
 gcc/testsuite/gcc.dg/tree-ssa/pr102793-2.c |  51 ++++
 gcc/tree-ssa-ifcombine.cc                  |   7 +-
 gcc/tree-ssa-ifcombine.h                   |  28 +++
 gcc/tree-ssa-tail-merge.cc                 | 258 +++++++++++++++++++++
 6 files changed, 392 insertions(+), 4 deletions(-)
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr102793-1.c
 create mode 100644 gcc/testsuite/gcc.dg/tree-ssa/pr102793-2.c
 create mode 100644 gcc/tree-ssa-ifcombine.h

-- 
2.51.1

Reply via email to