summaryrefslogtreecommitdiff
path: root/sys-devel/gcc/files
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2023-04-12 17:41:40 +0100
committerV3n3RiX <venerix@koprulu.sector>2023-04-12 17:41:40 +0100
commit5b36c18aaba339882ed70281371a1059d9e7943f (patch)
treeee1cf1ca0dffa2095e5f17a0f50578fee7f5562e /sys-devel/gcc/files
parentd15be4fe2ff3e70717117a938dbe5a11cec60a7b (diff)
gentoo auto-resync : 12:04:2023 - 17:41:40
Diffstat (limited to 'sys-devel/gcc/files')
-rw-r--r--sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109462-clang-LocalizationChecker-ranger-any-PHI.patch46
-rw-r--r--sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109473-ICE-reduction-epilog.patch58
2 files changed, 104 insertions, 0 deletions
diff --git a/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109462-clang-LocalizationChecker-ranger-any-PHI.patch b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109462-clang-LocalizationChecker-ranger-any-PHI.patch
new file mode 100644
index 000000000000..2b5ea5ad826a
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109462-clang-LocalizationChecker-ranger-any-PHI.patch
@@ -0,0 +1,46 @@
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109462
+https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git;h=24af552876eff707f75d30d3f0f0e7a5d62dd857
+
+From 24af552876eff707f75d30d3f0f0e7a5d62dd857 Mon Sep 17 00:00:00 2001
+From: Andrew MacLeod <amacleod@redhat.com>
+Date: Tue, 11 Apr 2023 17:29:03 -0400
+Subject: [PATCH] Don't use ANY PHI equivalences in range-on-entry.
+
+PR 108139 dissallows PHI equivalencies in the on-entry calculator, but
+it was only checking if the equivlaence was a PHI. In this case, NAME
+itself is a PHI with an equivlaence caused by an undefined value, so we
+also need to check that case. Unfortunately this un-fixes 101912.
+
+ PR tree-optimization/109462
+ gcc/
+ * gimple-range-cache.cc (ranger_cache::fill_block_cache): Don't
+ check for equivalences if NAME is a phi node.
+
+ gcc/testsuite/
+ * gcc.dg/uninit-pr101912.c: XFAIL the warning.
+--- a/gcc/gimple-range-cache.cc
++++ b/gcc/gimple-range-cache.cc
+@@ -1218,7 +1218,9 @@ ranger_cache::fill_block_cache (tree name, basic_block bb, basic_block def_bb)
+ fprintf (dump_file, "\n");
+ }
+ // See if any equivalences can refine it.
+- if (m_oracle)
++ // PR 109462, like 108139 below, a one way equivalence introduced
++ // by a PHI node can also be through the definition side. Disallow it.
++ if (m_oracle && !is_a<gphi *> (SSA_NAME_DEF_STMT (name)))
+ {
+ tree equiv_name;
+ relation_kind rel;
+--- a/gcc/testsuite/gcc.dg/uninit-pr101912.c
++++ b/gcc/testsuite/gcc.dg/uninit-pr101912.c
+@@ -11,7 +11,7 @@ tzloadbody (void)
+ for (int i = 0; i < n; i++)
+ {
+ int corr = getint ();
+- if (corr < 1 || (corr == 1 && !(leapcnt == 0 || (prevcorr < corr ? corr == prevcorr + 1 : (corr == prevcorr || corr == prevcorr - 1))))) /* { dg-bogus "uninitialized" } */
++ if (corr < 1 || (corr == 1 && !(leapcnt == 0 || (prevcorr < corr ? corr == prevcorr + 1 : (corr == prevcorr || corr == prevcorr - 1))))) /* { dg-bogus "uninitialized" "pr101912" { xfail *-*-* } } */
+ return -1;
+
+ prevcorr = corr;
+--
+2.31.1
diff --git a/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109473-ICE-reduction-epilog.patch b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109473-ICE-reduction-epilog.patch
new file mode 100644
index 000000000000..cab26653a09d
--- /dev/null
+++ b/sys-devel/gcc/files/gcc-13.0.1_pre20230409-PR109473-ICE-reduction-epilog.patch
@@ -0,0 +1,58 @@
+https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=df7f55cb2ae550adeda339a57b657ebe1ad39367
+https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109473
+
+From df7f55cb2ae550adeda339a57b657ebe1ad39367 Mon Sep 17 00:00:00 2001
+From: Richard Biener <rguenther@suse.de>
+Date: Wed, 12 Apr 2023 10:22:08 +0200
+Subject: [PATCH] tree-optimization/109473 - ICE with reduction epilog
+ adjustment op
+
+The following makes sure to carry out the reduction epilog adjustment
+in the original computation type which for pointers is an unsigned
+integer type. There's a similar issue with signed vs. unsigned ops
+and overflow which is fixed by this as well.
+
+ PR tree-optimization/109473
+ * tree-vect-loop.cc (vect_create_epilog_for_reduction):
+ Convert scalar result to the computation type before performing
+ the reduction adjustment.
+
+ * gcc.dg/vect/pr109473.c: New testcase.
+--- /dev/null
++++ b/gcc/testsuite/gcc.dg/vect/pr109473.c
+@@ -0,0 +1,16 @@
++/* { dg-do compile } */
++/* { dg-additional-options "-O" } */
++
++struct spa_buffer {
++ __UINT32_TYPE__ *metas;
++};
++void do_port_use_buffers(struct spa_buffer **buffers, void *endptr, void *mem)
++{
++ for (int i = 0; i < 128; i++)
++ {
++ for (int j = 0; j < 128; j++)
++ endptr = (void *)((__UINTPTR_TYPE__)endptr + buffers[i]->metas[j]);
++ if (endptr > mem)
++ return;
++ }
++}
+--- a/gcc/tree-vect-loop.cc
++++ b/gcc/tree-vect-loop.cc
+@@ -6297,9 +6297,12 @@ vect_create_epilog_for_reduction (loop_vec_info loop_vinfo,
+ {
+ new_temp = scalar_results[0];
+ gcc_assert (TREE_CODE (TREE_TYPE (adjustment_def)) != VECTOR_TYPE);
+- adjustment_def = gimple_convert (&stmts, scalar_type, adjustment_def);
+- new_temp = gimple_build (&stmts, code, scalar_type,
++ adjustment_def = gimple_convert (&stmts, TREE_TYPE (vectype),
++ adjustment_def);
++ new_temp = gimple_convert (&stmts, TREE_TYPE (vectype), new_temp);
++ new_temp = gimple_build (&stmts, code, TREE_TYPE (vectype),
+ new_temp, adjustment_def);
++ new_temp = gimple_convert (&stmts, scalar_type, new_temp);
+ }
+
+ epilog_stmt = gimple_seq_last_stmt (stmts);
+--
+2.31.1