commit: c9cf4331e4dfb52d6752adf48c161060fe6ef00a Author: Sam James <sam <AT> gentoo <DOT> org> AuthorDate: Tue Aug 20 20:30:42 2024 +0000 Commit: Sam James <sam <AT> gentoo <DOT> org> CommitDate: Tue Aug 20 20:30:42 2024 +0000 URL: https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=c9cf4331
15.0.0: drop now-upstream phiopt patches Signed-off-by: Sam James <sam <AT> gentoo.org> ...-for-non-const-functions-for-factor_out_c.patch | 100 --------------------- ...ct-non-gimple-val-inside-factor_out_condi.patch | 64 ------------- 15.0.0/gentoo/README.history | 5 ++ 3 files changed, 5 insertions(+), 164 deletions(-) diff --git a/15.0.0/gentoo/32_all_phi-opt-Fix-for-non-const-functions-for-factor_out_c.patch b/15.0.0/gentoo/32_all_phi-opt-Fix-for-non-const-functions-for-factor_out_c.patch deleted file mode 100644 index 1920001..0000000 --- a/15.0.0/gentoo/32_all_phi-opt-Fix-for-non-const-functions-for-factor_out_c.patch +++ /dev/null @@ -1,100 +0,0 @@ -From 8d5c584e088109e39402221f59c2330b24bed142 Mon Sep 17 00:00:00 2001 -Message-ID: <8d5c584e088109e39402221f59c2330b24bed142.1724092858.git....@gentoo.org> -From: Andrew Pinski <[email protected]> -Date: Mon, 19 Aug 2024 11:37:13 -0700 -Subject: [PATCH 1/2] phi-opt: Fix for non-const functions for - factor_out_conditional_operation [PR 116409] - -Currently maybe_push_res_to_seq does not handle non-const builtins (it does handle internal -functions though). So we need to disable factoring out non-const builtins. This will be fixed in -a better way later but this fixes the regression at hand and does not change what was goal on -moving factor_out_conditional_operation over to use gimple_match_op. - -Bootstrapped and tested on x86_64-linux-gnu with no regressions. - - PR tree-optimization/116409 - -gcc/ChangeLog: - - * tree-ssa-phiopt.cc (factor_out_conditional_operation): Reject - non const builtins (except for internal functions). - -gcc/testsuite/ChangeLog: - - * gcc.dg/torture/pr116409-1.c: New test. - * gcc.dg/torture/pr116409-2.c: New test. - -Signed-off-by: Andrew Pinski <[email protected]> ---- - gcc/testsuite/gcc.dg/torture/pr116409-1.c | 7 +++++++ - gcc/testsuite/gcc.dg/torture/pr116409-2.c | 7 +++++++ - gcc/tree-ssa-phiopt.cc | 18 ++++++++++++++++++ - 3 files changed, 32 insertions(+) - create mode 100644 gcc/testsuite/gcc.dg/torture/pr116409-1.c - create mode 100644 gcc/testsuite/gcc.dg/torture/pr116409-2.c - -diff --git a/gcc/testsuite/gcc.dg/torture/pr116409-1.c b/gcc/testsuite/gcc.dg/torture/pr116409-1.c -new file mode 100644 -index 000000000000..7bf8d49c9a01 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr116409-1.c -@@ -0,0 +1,7 @@ -+/* { dg-do compile } */ -+/* { dg-additional-options "-frounding-math -fno-math-errno" } */ -+double f(int c, double a, double b) { -+ if (c) -+ return __builtin_sqrt(a); -+ return __builtin_sqrt(b); -+} -diff --git a/gcc/testsuite/gcc.dg/torture/pr116409-2.c b/gcc/testsuite/gcc.dg/torture/pr116409-2.c -new file mode 100644 -index 000000000000..c27f11312d98 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr116409-2.c -@@ -0,0 +1,7 @@ -+/* { dg-do compile } */ -+ -+int f (int t, char *a, char *b) { -+ if (t) -+ return __builtin_strlen (a); -+ return __builtin_strlen (b); -+} -diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc -index 2d4aba5b0872..770f3629fe1d 100644 ---- a/gcc/tree-ssa-phiopt.cc -+++ b/gcc/tree-ssa-phiopt.cc -@@ -54,6 +54,7 @@ along with GCC; see the file COPYING3. If not see - #include "dbgcnt.h" - #include "tree-ssa-propagate.h" - #include "tree-ssa-dce.h" -+#include "calls.h" - - /* Return the singleton PHI in the SEQ of PHIs for edges E0 and E1. */ - -@@ -367,6 +368,23 @@ factor_out_conditional_operation (edge e0, edge e1, gphi *phi, - if (!types_compatible_p (TREE_TYPE (new_arg0), TREE_TYPE (new_arg1))) - return NULL; - -+ /* Function calls can only be const or an internal function -+ as maybe_push_res_to_seq only handles those currently. */ -+ if (!arg0_op.code.is_tree_code ()) -+ { -+ auto fn = combined_fn (arg0_op.code); -+ if (!internal_fn_p (fn)) -+ { -+ tree decl = builtin_decl_implicit (as_builtin_fn (fn)); -+ if (!decl) -+ return NULL; -+ -+ /* Non-const functions are not supported currently. */ -+ if (!(flags_from_decl_or_type (decl) & ECF_CONST)) -+ return NULL; -+ } -+ } -+ - /* Create a new PHI stmt. */ - result = PHI_RESULT (phi); - temp = make_ssa_name (TREE_TYPE (new_arg0), NULL); --- -2.46.0 - diff --git a/15.0.0/gentoo/33_all_phiopt-Reject-non-gimple-val-inside-factor_out_condi.patch b/15.0.0/gentoo/33_all_phiopt-Reject-non-gimple-val-inside-factor_out_condi.patch deleted file mode 100644 index b3f96ae..0000000 --- a/15.0.0/gentoo/33_all_phiopt-Reject-non-gimple-val-inside-factor_out_condi.patch +++ /dev/null @@ -1,64 +0,0 @@ -From 555a5e896480884c3fe2c6c117654a798b8ffd3f Mon Sep 17 00:00:00 2001 -Message-ID: <555a5e896480884c3fe2c6c117654a798b8ffd3f.1724092858.git....@gentoo.org> -In-Reply-To: <8d5c584e088109e39402221f59c2330b24bed142.1724092858.git....@gentoo.org> -References: <8d5c584e088109e39402221f59c2330b24bed142.1724092858.git....@gentoo.org> -From: Andrew Pinski <[email protected]> -Date: Mon, 19 Aug 2024 11:37:14 -0700 -Subject: [PATCH 2/2] phiopt: Reject non gimple val inside - factor_out_conditional_operation [PR116412] - -After the conversion to use maybe_push_res_to_seq, sometimes (REALPART_EXPR -and IMAGPART_EXPR and VCE) the argument will not be a gimple value and -then phiopt here would create an invalid PHI. -Just add a check for gimple val is the way to fix this. - -Bootstrapped and tested on x86_64-linux-gnu. - - PR tree-optimization/116412 - -gcc/ChangeLog: - - * tree-ssa-phiopt.cc (factor_out_conditional_operation): Make sure new_arg0 - and new_arg1 are both gimple values. - -gcc/testsuite/ChangeLog: - - * gcc.dg/torture/pr116412-1.c: New test. - -Signed-off-by: Andrew Pinski <[email protected]> ---- - gcc/testsuite/gcc.dg/torture/pr116412-1.c | 6 ++++++ - gcc/tree-ssa-phiopt.cc | 4 ++++ - 2 files changed, 10 insertions(+) - create mode 100644 gcc/testsuite/gcc.dg/torture/pr116412-1.c - -diff --git a/gcc/testsuite/gcc.dg/torture/pr116412-1.c b/gcc/testsuite/gcc.dg/torture/pr116412-1.c -new file mode 100644 -index 000000000000..3bc26ecd8b83 ---- /dev/null -+++ b/gcc/testsuite/gcc.dg/torture/pr116412-1.c -@@ -0,0 +1,6 @@ -+/* { dg-do compile } */ -+double f(_Complex double a, _Complex double *b, int c) -+{ -+ if (c) return __real__ a; -+ return __real__ *b; -+} -diff --git a/gcc/tree-ssa-phiopt.cc b/gcc/tree-ssa-phiopt.cc -index 770f3629fe1d..be95798a065b 100644 ---- a/gcc/tree-ssa-phiopt.cc -+++ b/gcc/tree-ssa-phiopt.cc -@@ -368,6 +368,10 @@ factor_out_conditional_operation (edge e0, edge e1, gphi *phi, - if (!types_compatible_p (TREE_TYPE (new_arg0), TREE_TYPE (new_arg1))) - return NULL; - -+ /* The new args need to be both gimple values. */ -+ if (!is_gimple_val (new_arg0) || !is_gimple_val (new_arg1)) -+ return NULL; -+ - /* Function calls can only be const or an internal function - as maybe_push_res_to_seq only handles those currently. */ - if (!arg0_op.code.is_tree_code ()) --- -2.46.0 - diff --git a/15.0.0/gentoo/README.history b/15.0.0/gentoo/README.history index 0c430eb..82e55aa 100644 --- a/15.0.0/gentoo/README.history +++ b/15.0.0/gentoo/README.history @@ -1,3 +1,8 @@ +11 ???? + + - 32_all_phi-opt-Fix-for-non-const-functions-for-factor_out_c.patch + - 33_all_phiopt-Reject-non-gimple-val-inside-factor_out_condi.patch + 10 19 August 2024 + 32_all_phi-opt-Fix-for-non-const-functions-for-factor_out_c.patch
