From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from lists.gentoo.org (pigeon.gentoo.org [208.92.234.80]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by finch.gentoo.org (Postfix) with ESMTPS id 44D7C15852A for ; Mon, 19 Aug 2024 18:43:42 +0000 (UTC) Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 732192BC013; Mon, 19 Aug 2024 18:43:41 +0000 (UTC) Received: from smtp.gentoo.org (dev.gentoo.org [IPv6:2001:470:ea4a:1:5054:ff:fec7:86e4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by pigeon.gentoo.org (Postfix) with ESMTPS id 521F72BC013 for ; Mon, 19 Aug 2024 18:43:41 +0000 (UTC) Received: from oystercatcher.gentoo.org (oystercatcher.gentoo.org [148.251.78.52]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by smtp.gentoo.org (Postfix) with ESMTPS id 6C2D4340C57 for ; Mon, 19 Aug 2024 18:43:40 +0000 (UTC) Received: from localhost.localdomain (localhost [IPv6:::1]) by oystercatcher.gentoo.org (Postfix) with ESMTP id C27F81B89 for ; Mon, 19 Aug 2024 18:43:38 +0000 (UTC) From: "Sam James" To: gentoo-commits@lists.gentoo.org Content-Transfer-Encoding: 8bit Content-type: text/plain; charset=UTF-8 Reply-To: gentoo-dev@lists.gentoo.org, "Sam James" Message-ID: <1724092931.b151680d1549ca7429f970c87b7c11987a351527.sam@gentoo> Subject: [gentoo-commits] proj/gcc-patches:master commit in: 15.0.0/gentoo/ X-VCS-Repository: proj/gcc-patches X-VCS-Files: 15.0.0/gentoo/32_all_phi-opt-Fix-for-non-const-functions-for-factor_out_c.patch 15.0.0/gentoo/33_all_phiopt-Reject-non-gimple-val-inside-factor_out_condi.patch 15.0.0/gentoo/README.history X-VCS-Directories: 15.0.0/gentoo/ X-VCS-Committer: sam X-VCS-Committer-Name: Sam James X-VCS-Revision: b151680d1549ca7429f970c87b7c11987a351527 X-VCS-Branch: master Date: Mon, 19 Aug 2024 18:43:38 +0000 (UTC) Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-Id: Gentoo Linux mail X-BeenThere: gentoo-commits@lists.gentoo.org X-Auto-Response-Suppress: DR, RN, NRN, OOF, AutoReply X-Archives-Salt: 9cc6fcd5-8255-421a-9b99-d9f0b2ac1be7 X-Archives-Hash: 3f03836294cc4b0567aaefddf5cda3aa commit: b151680d1549ca7429f970c87b7c11987a351527 Author: Sam James gentoo org> AuthorDate: Mon Aug 19 18:42:11 2024 +0000 Commit: Sam James gentoo 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 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 +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 +--- + 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 +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 +--- + 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