public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] proj/gcc-patches:master commit in: 15.0.0/gentoo/
Date: Mon, 19 Aug 2024 18:43:38 +0000 (UTC)	[thread overview]
Message-ID: <1724092931.b151680d1549ca7429f970c87b7c11987a351527.sam@gentoo> (raw)

commit:     b151680d1549ca7429f970c87b7c11987a351527
Author:     Sam James <sam <AT> gentoo <DOT> org>
AuthorDate: Mon Aug 19 18:42:11 2024 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Mon Aug 19 18:42:11 2024 +0000
URL:        https://gitweb.gentoo.org/proj/gcc-patches.git/commit/?id=b151680d

15.0.0: pull in phiopt fixes

Bug: https://bugs.gentoo.org/938203
Bug: https://bugs.gentoo.org/938200
Bug: https://bugs.gentoo.org/938199
Bug: https://bugs.gentoo.org/938198
Bug: https://bugs.gentoo.org/938196
Bug: https://bugs.gentoo.org/938194
Bug: https://bugs.gentoo.org/938193
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, 167 insertions(+), 2 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
new file mode 100644
index 0000000..1920001
--- /dev/null
+++ b/15.0.0/gentoo/32_all_phi-opt-Fix-for-non-const-functions-for-factor_out_c.patch
@@ -0,0 +1,100 @@
+From 8d5c584e088109e39402221f59c2330b24bed142 Mon Sep 17 00:00:00 2001
+Message-ID: <8d5c584e088109e39402221f59c2330b24bed142.1724092858.git.sam@gentoo.org>
+From: Andrew Pinski <quic_apinski@quicinc.com>
+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 <quic_apinski@quicinc.com>
+---
+ 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
new file mode 100644
index 0000000..b3f96ae
--- /dev/null
+++ b/15.0.0/gentoo/33_all_phiopt-Reject-non-gimple-val-inside-factor_out_condi.patch
@@ -0,0 +1,64 @@
+From 555a5e896480884c3fe2c6c117654a798b8ffd3f Mon Sep 17 00:00:00 2001
+Message-ID: <555a5e896480884c3fe2c6c117654a798b8ffd3f.1724092858.git.sam@gentoo.org>
+In-Reply-To: <8d5c584e088109e39402221f59c2330b24bed142.1724092858.git.sam@gentoo.org>
+References: <8d5c584e088109e39402221f59c2330b24bed142.1724092858.git.sam@gentoo.org>
+From: Andrew Pinski <quic_apinski@quicinc.com>
+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 <quic_apinski@quicinc.com>
+---
+ 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 1849089..0c430eb 100644
--- a/15.0.0/gentoo/README.history
+++ b/15.0.0/gentoo/README.history
@@ -1,6 +1,7 @@
-10	????
+10	19 August 2024
 
-	+ 32_all_genoutput-speedup.patch
+	+ 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
 
 9	11 August 2024
 


             reply	other threads:[~2024-08-19 18:43 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-08-19 18:43 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-10-07  2:45 [gentoo-commits] proj/gcc-patches:master commit in: 15.0.0/gentoo/ Sam James
2024-10-04 10:37 Sam James
2024-10-04  9:28 Sam James
2024-10-02 19:45 Sam James
2024-09-30 14:05 Sam James
2024-09-29 22:56 Sam James
2024-09-24  1:41 Sam James
2024-09-23 15:23 Sam James
2024-09-02  2:28 Sam James
2024-08-26 13:44 Sam James
2024-08-26  6:24 Sam James
2024-08-23 13:51 Sam James
2024-08-20 20:31 Sam James
2024-08-14  9:48 Sam James
2024-08-14  2:57 Sam James
2024-08-11 22:40 Sam James
2024-08-09 19:54 Sam James
2024-08-09 19:54 Sam James
2024-08-09 19:47 Sam James
2024-08-09 19:25 Sam James
2024-08-08 11:10 Sam James
2024-08-08 11:06 Sam James
2024-08-08 11:03 Sam James
2024-08-05  9:09 Sam James
2024-08-05  1:54 Sam James
2024-08-05  1:51 Sam James
2024-08-02 20:39 Sam James
2024-08-01 14:40 Sam James
2024-07-28 23:34 Sam James
2024-07-22  1:11 Sam James
2024-07-19 11:14 Sam James
2024-07-18  0:45 Sam James
2024-07-14 23:36 Sam James
2024-06-28 12:49 Sam James
2024-06-27  0:02 Sam James
2024-06-26 23:57 Sam James
2024-06-16 22:45 Sam James
2024-06-10 20:18 Sam James
2024-06-10 17:28 Sam James
2024-06-10 17:28 Sam James
2024-06-10  2:08 Sam James
2024-06-08 17:03 Sam James
2024-06-08 17:03 Sam James

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1724092931.b151680d1549ca7429f970c87b7c11987a351527.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox