summaryrefslogtreecommitdiff
path: root/0091-phiopt2-Add-option-to-control-the-simplify.patch
diff options
context:
space:
mode:
Diffstat (limited to '0091-phiopt2-Add-option-to-control-the-simplify.patch')
-rw-r--r--0091-phiopt2-Add-option-to-control-the-simplify.patch183
1 files changed, 183 insertions, 0 deletions
diff --git a/0091-phiopt2-Add-option-to-control-the-simplify.patch b/0091-phiopt2-Add-option-to-control-the-simplify.patch
new file mode 100644
index 0000000..b37c1e8
--- /dev/null
+++ b/0091-phiopt2-Add-option-to-control-the-simplify.patch
@@ -0,0 +1,183 @@
+From bc6537191e91c854cc6bee3319290d7a86768957 Mon Sep 17 00:00:00 2001
+From: zhongyunde <zhongyunde@huawei.com>
+Date: Wed, 10 May 2023 18:39:47 +0800
+Subject: [PATCH 2/2] [phiopt2] Add option to control the simplify
+
+The phiopt is brought in https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=c4574d23cb07340918793a5a98ae7bb2988b3791
+But may be also has some bug fixed by later commit, so disable it default temporary.
+This optimization is expected to enable after we update the gcc'base to gcc12's release version.
+---
+ gcc/common.opt | 4 ++++
+ gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/bool-1.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/bool-2.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/phi-opt-22.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/phi-opt-8.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/pr18134.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/pr21829.c | 2 +-
+ gcc/testsuite/gcc.dg/tree-ssa/pr96928-1.c | 4 ++--
+ gcc/tree-ssa-phiopt.c | 3 +++
+ 13 files changed, 19 insertions(+), 12 deletions(-)
+
+diff --git a/gcc/common.opt b/gcc/common.opt
+index be7bfee60..5ad2def18 100644
+--- a/gcc/common.opt
++++ b/gcc/common.opt
+@@ -2781,6 +2781,10 @@ ftree-store-ccp
+ Common Ignore
+ Does nothing. Preserved for backward compatibility.
+
++ftree-fold-phiopt
++Common Report Var(flag_fold_phiopt) Init(0) Optimization
++Attempt to simply the phi node with ssa form.
++
+ ftree-ch
+ Common Report Var(flag_tree_ch) Optimization
+ Enable loop header copying on trees.
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c b/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c
+index 364ce6a69..b04316d55 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/20040514-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O1 -fdump-tree-phiopt2-details" } */
++/* { dg-options "-O1 -ftree-fold-phiopt -fdump-tree-phiopt2-details" } */
+
+ int t( int i)
+ {
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c b/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c
+index 401357f2f..892654108 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/bool-1.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O1 -fdump-tree-optimized" } */
++/* { dg-options "-O1 -ftree-fold-phiopt -fdump-tree-optimized" } */
+
+ int f(_Bool x)
+ {
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c b/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c
+index add9cca1e..5ead90f06 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/bool-2.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O1 -fdump-tree-optimized" } */
++/* { dg-options "-O1 -ftree-fold-phiopt -fdump-tree-optimized" } */
+
+ int f(_Bool x)
+ {
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
+index 4c190e6af..7b678fafc 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-10.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O1 -fdump-tree-optimized" } */
++/* { dg-options "-O1 -ftree-fold-phiopt -fdump-tree-optimized" } */
+
+ int nem1_phi (unsigned long a) { return a ? -1 : 0; }
+ int eqm1_phi (unsigned long a) { return a ? 0 : -1; }
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-22.c b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-22.c
+index fd3706666..23b679644 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-22.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-22.c
+@@ -1,6 +1,6 @@
+ /* PR tree-optimization/97690 */
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-phiopt2" } */
++/* { dg-options "-O2 -ftree-fold-phiopt -fdump-tree-phiopt2" } */
+
+ int foo (_Bool d) { return d ? 2 : 0; }
+ int bar (_Bool d) { return d ? 1 : 0; }
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c
+index 3bdb85609..4efd9afc4 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-4.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O1 -fdump-tree-optimized" } */
++/* { dg-options "-O1 -ftree-fold-phiopt -fdump-tree-optimized" } */
+
+ _Bool t();
+ _Bool t1();
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c
+index 18ecbd52a..60dcc6733 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-7.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O1 -fdump-tree-optimized" } */
++/* { dg-options "-O1 -ftree-fold-phiopt -fdump-tree-optimized" } */
+
+ int g(int,int);
+ int f(int t, int c)
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-8.c b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-8.c
+index 98c596b6a..aaa71a317 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-8.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/phi-opt-8.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O -fdump-tree-optimized -fdump-tree-phiopt2" } */
++/* { dg-options "-O -ftree-fold-phiopt -fdump-tree-optimized -fdump-tree-phiopt2" } */
+
+ int g(int,int);
+ int f(int t, int c)
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c b/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c
+index cd40ab2c1..efb1907cf 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/pr18134.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O1 -fdump-tree-optimized" } */
++/* { dg-options "-O1 -ftree-fold-phiopt -fdump-tree-optimized" } */
+
+ int foo (int a)
+ {
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c b/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c
+index 8f5ae5127..8c8ada905 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/pr21829.c
+@@ -1,5 +1,5 @@
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-optimized" } */
++/* { dg-options "-O2 -ftree-fold-phiopt -fdump-tree-optimized" } */
+
+ int test(int v)
+ {
+diff --git a/gcc/testsuite/gcc.dg/tree-ssa/pr96928-1.c b/gcc/testsuite/gcc.dg/tree-ssa/pr96928-1.c
+index a2770e5e8..88c13806a 100644
+--- a/gcc/testsuite/gcc.dg/tree-ssa/pr96928-1.c
++++ b/gcc/testsuite/gcc.dg/tree-ssa/pr96928-1.c
+@@ -1,9 +1,9 @@
+ /* PR tree-optimization/96928 */
+ /* { dg-do compile } */
+-/* { dg-options "-O2 -fdump-tree-phiopt2" } */
++/* { dg-options "-O2 -ftree-fold-phiopt -fdump-tree-phiopt2 -fdump-tree-optimized" } */
+ /* { dg-final { scan-tree-dump-times " = a_\[0-9]*\\\(D\\\) >> " 5 "phiopt2" } } */
+ /* { dg-final { scan-tree-dump-times " = ~c_\[0-9]*\\\(D\\\);" 1 "phiopt2" } } */
+-/* { dg-final { scan-tree-dump-times " = ~" 1 "phiopt2" } } */
++/* { dg-final { scan-tree-dump-times " = ~" 1 "optimized" } } */
+ /* { dg-final { scan-tree-dump-times " = \[abc_0-9\\\(\\\)D]* \\\^ " 5 "phiopt2" } } */
+ /* { dg-final { scan-tree-dump-not "a < 0" "phiopt2" } } */
+
+diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c
+index 51a2d3684..b7012932f 100644
+--- a/gcc/tree-ssa-phiopt.c
++++ b/gcc/tree-ssa-phiopt.c
+@@ -839,6 +839,9 @@ match_simplify_replacement (basic_block cond_bb, basic_block middle_bb,
+ tree result;
+ gimple *stmt_to_move = NULL;
+
++ if (!flag_fold_phiopt)
++ return false;
++
+ /* Special case A ? B : B as this will always simplify to B. */
+ if (operand_equal_for_phi_arg_p (arg0, arg1))
+ return false;
+--
+2.33.0
+