aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to '15.0.0/gentoo/70_all_middle-end-check-explicitly-for-external-or-constant.patch')
-rw-r--r--15.0.0/gentoo/70_all_middle-end-check-explicitly-for-external-or-constant.patch88
1 files changed, 0 insertions, 88 deletions
diff --git a/15.0.0/gentoo/70_all_middle-end-check-explicitly-for-external-or-constant.patch b/15.0.0/gentoo/70_all_middle-end-check-explicitly-for-external-or-constant.patch
deleted file mode 100644
index 7dcf89d..0000000
--- a/15.0.0/gentoo/70_all_middle-end-check-explicitly-for-external-or-constant.patch
+++ /dev/null
@@ -1,88 +0,0 @@
-https://inbox.sourceware.org/gcc-patches/patch-18806-tamar@arm.com/T/#u
-https://gcc.gnu.org/PR116817
-
-From 9a5d1eb943dcaf26551b534eb62cbf1dd8443335 Mon Sep 17 00:00:00 2001
-Message-ID: <9a5d1eb943dcaf26551b534eb62cbf1dd8443335.1727104663.git.sam@gentoo.org>
-From: Tamar Christina <tamar.christina@arm.com>
-Date: Mon, 23 Sep 2024 15:29:52 +0100
-Subject: [PATCH] middle-end: check explicitly for external or constants when
- checking for loop invariant [PR116817]
-
-Hi All,
-
-The previous check if a value was external was checking
-!vect_get_internal_def (vinfo, var) but this of course isn't completely right
-as they could reductions etc.
-
-This changes the check to just explicitly look at externals and constants.
-Note that reductions remain unhandled here, but we don't support codegen of
-boolean reductions today anyway.
-
-So at the time we do then this would have the be handled as well in lowering.
-
-Bootstrapped Regtested on aarch64-none-linux-gnu and no issues.
-
-Ok for master?
-
-Thanks,
-Tamar
-
-gcc/ChangeLog:
-
- PR tree-optimization/116817
- * tree-vect-patterns.cc (vect_recog_bool_pattern): Check for const or
- externals.
-
-gcc/testsuite/ChangeLog:
-
-PR tree-optimization/116817
- * g++.dg/vect/pr116817.cc: New test.
----
- gcc/testsuite/g++.dg/vect/pr116817.cc | 16 ++++++++++++++++
- gcc/tree-vect-patterns.cc | 5 ++++-
- 2 files changed, 20 insertions(+), 1 deletion(-)
- create mode 100644 gcc/testsuite/g++.dg/vect/pr116817.cc
-
-diff --git a/gcc/testsuite/g++.dg/vect/pr116817.cc b/gcc/testsuite/g++.dg/vect/pr116817.cc
-new file mode 100644
-index 00000000000..7e28982fb13
---- /dev/null
-+++ b/gcc/testsuite/g++.dg/vect/pr116817.cc
-@@ -0,0 +1,16 @@
-+/* { dg-do compile } */
-+/* { dg-additional-options "-O3" } */
-+
-+int main_ulData0;
-+unsigned *main_pSrcBuffer;
-+int main(void) {
-+ int iSrc = 0;
-+ bool bData0;
-+ for (; iSrc < 4; iSrc++) {
-+ if (bData0)
-+ main_pSrcBuffer[iSrc] = main_ulData0;
-+ else
-+ main_pSrcBuffer[iSrc] = 0;
-+ bData0 = !bData0;
-+ }
-+}
-diff --git a/gcc/tree-vect-patterns.cc b/gcc/tree-vect-patterns.cc
-index e7e877dd2adb55262822f1660f8d92b42d44e6d0..f0298b2ab97a1e7dd0d943340e1389c3c0fa796e 100644
---- a/gcc/tree-vect-patterns.cc
-+++ b/gcc/tree-vect-patterns.cc
-@@ -6062,12 +6062,15 @@ vect_recog_bool_pattern (vec_info *vinfo,
- if (get_vectype_for_scalar_type (vinfo, type) == NULL_TREE)
- return NULL;
-
-+ stmt_vec_info var_def_info = vinfo->lookup_def (var);
- if (check_bool_pattern (var, vinfo, bool_stmts))
- var = adjust_bool_stmts (vinfo, bool_stmts, type, stmt_vinfo);
- else if (integer_type_for_mask (var, vinfo))
- return NULL;
- else if (TREE_CODE (TREE_TYPE (var)) == BOOLEAN_TYPE
-- && !vect_get_internal_def (vinfo, var))
-+ && (!var_def_info
-+ || STMT_VINFO_DEF_TYPE (var_def_info) == vect_external_def
-+ || STMT_VINFO_DEF_TYPE (var_def_info) == vect_constant_def))
- {
- /* If the condition is already a boolean then manually convert it to a
- mask of the given integer type but don't set a vectype. */