13.0.1-0.4

This commit is contained in:
Jakub Jelinek 2023-02-15 16:51:32 +01:00
parent 6f673bac47
commit 5fe996562e
5 changed files with 23 additions and 148 deletions

1
.gitignore vendored
View File

@ -89,3 +89,4 @@
/gcc-13.0.1-20230127.tar.xz
/newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz
/gcc-13.0.1-20230208.tar.xz
/gcc-13.0.1-20230215.tar.xz

View File

@ -1,5 +1,5 @@
%global DATE 20230208
%global gitrev 88db57a1779f3c620653a2a791e54301645befbf
%global DATE 20230215
%global gitrev 76b508266ac7460db2e4fe9eba298520ae1eda70
%global gcc_version 13.0.1
%global gcc_major 13
# Note, gcc_release must be integer, if you want to add suffixes to
@ -136,7 +136,7 @@
Summary: Various compilers (C, C++, Objective-C, ...)
Name: gcc
Version: %{gcc_version}
Release: %{gcc_release}.3%{?dist}
Release: %{gcc_release}.4%{?dist}
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
# GCC Runtime Exception.
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
@ -286,8 +286,6 @@ Patch8: gcc13-no-add-needed.patch
Patch9: gcc13-Wno-format-security.patch
Patch10: gcc13-rh1574936.patch
Patch11: gcc13-d-shared-libphobos.patch
Patch12: gcc13-pr108692.patch
Patch13: gcc13-pr108316.patch
Patch50: isl-rh2155127.patch
@ -864,8 +862,6 @@ so that there cannot be any synchronization problems.
%patch10 -p0 -b .rh1574936~
%endif
%patch11 -p0 -b .d-shared-libphobos~
%patch12 -p0 -b .pr108692~
%patch13 -p0 -b .pr108316~
%patch50 -p0 -b .rh2155127~
touch -r isl-0.24/m4/ax_prog_cxx_for_build.m4 isl-0.24/m4/ax_prog_cc_for_build.m4
@ -3462,6 +3458,24 @@ end
%endif
%changelog
* Wed Feb 15 2023 Jakub Jelinek <jakub@redhat.com> 13.0.1-0.4
- update from trunk
- PRs analyzer/108704, analyzer/108733, analyzer/108745, c++/106675,
c++/107079, c++/108698, d/107469, fortran/69636, fortran/103259,
fortran/103475, fortran/103779, fortran/107424, fortran/108512,
ipa/108605, ipa/108679, libstdc++/103934, middle-end/26854,
middle-end/106080, rtl-optimization/108681, sanitizer/108777,
target/96373, target/100758, target/103109, target/108102,
target/108516, target/108723, target/108738, target/108787,
target/108790, testsuite/106120, tree-optimization/28614,
tree-optimization/96921, tree-optimization/106722,
tree-optimization/107561, tree-optimization/108316,
tree-optimization/108355, tree-optimization/108520,
tree-optimization/108571, tree-optimization/108684,
tree-optimization/108687, tree-optimization/108688,
tree-optimization/108691, tree-optimization/108692,
tree-optimization/108724, tree-optimization/108782
* Wed Feb 8 2023 Jakub Jelinek <jakub@redhat.com> 13.0.1-0.3
- update from trunk
- PRs analyzer/108616, analyzer/108633, analyzer/108661, c++/101071,

View File

@ -1,66 +0,0 @@
vect: Check gather/scatter offset types [PR108316]
The gather/scatter support can over-widen an offset if the target
requires it, but this relies on using a pattern sequence to add
the widening conversion. That failed in the testcase because an
earlier pattern (bool) took priority.
I think we should allow patterns to be applied to other patterns,
but that's quite an invasive change and isn't suitable for stage 4.
This patch instead punts if the offset type doesn't match the
expected one.
If we switched to using the SLP representation for everything,
we would probably handle both patterns by rewriting the graph,
which should be much easier.
gcc/
PR tree-optimization/108316
* tree-vect-stmts.cc (get_load_store_type): When using
internal functions for gather/scatter, make sure that the type
of the offset argument is consistent with the offset vector type.
gcc/testsuite/
PR tree-optimization/108316
* gcc.dg/vect/pr108316.c: New test.
--- gcc/tree-vect-stmts.cc
+++ gcc/tree-vect-stmts.cc
@@ -2474,6 +2474,23 @@ get_load_store_type (vec_info *vinfo, stmt_vec_info stmt_info,
*memory_access_type = VMAT_GATHER_SCATTER;
if (!vect_check_gather_scatter (stmt_info, loop_vinfo, gs_info))
gcc_unreachable ();
+ /* When using internal functions, we rely on pattern recognition
+ to convert the type of the offset to the type that the target
+ requires, with the result being a call to an internal function.
+ If that failed for some reason (e.g. because another pattern
+ took priority), just handle cases in which the offset already
+ has the right type. */
+ else if (gs_info->ifn != IFN_LAST
+ && !is_gimple_call (stmt_info->stmt)
+ && !tree_nop_conversion_p (TREE_TYPE (gs_info->offset),
+ TREE_TYPE (gs_info->offset_vectype)))
+ {
+ if (dump_enabled_p ())
+ dump_printf_loc (MSG_MISSED_OPTIMIZATION, vect_location,
+ "%s offset requires a conversion\n",
+ vls_type == VLS_LOAD ? "gather" : "scatter");
+ return false;
+ }
else if (!vect_is_simple_use (gs_info->offset, vinfo,
&gs_info->offset_dt,
&gs_info->offset_vectype))
--- gcc/testsuite/gcc.dg/vect/pr108316.c
+++ gcc/testsuite/gcc.dg/vect/pr108316.c
@@ -0,0 +1,11 @@
+/* { dg-do compile } */
+/* { dg-options "-O3" } */
+
+extern _Bool a[];
+
+void
+foo (short i, int b[][64][1])
+{
+ for (; i < 64; i += 4)
+ a[i] = b[0][i] != 0;
+}

View File

@ -1,74 +0,0 @@
2023-02-07 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/108692
* tree-vect-patterns.cc (vect_widened_op_tree): If rhs_code is
widened_code which is different from code, don't call
vect_look_through_possible_promotion but instead just check op is
SSA_NAME with integral type for which vect_is_simple_use is true
and call set_op on this_unprom.
* gcc.dg/pr108692.c: New test.
--- gcc/tree-vect-patterns.cc.jj 2023-01-02 09:32:45.635949342 +0100
+++ gcc/tree-vect-patterns.cc 2023-02-07 15:27:33.214608837 +0100
@@ -601,7 +601,25 @@ vect_widened_op_tree (vec_info *vinfo, s
if (shift_p && i == 1)
return 0;
- if (!vect_look_through_possible_promotion (vinfo, op, this_unprom))
+ if (rhs_code != code)
+ {
+ /* If rhs_code is widened_code, don't look through further
+ possible promotions, there is a promotion already embedded
+ in the WIDEN_*_EXPR. */
+ if (TREE_CODE (op) != SSA_NAME
+ || !INTEGRAL_TYPE_P (TREE_TYPE (op)))
+ return 0;
+
+ stmt_vec_info def_stmt_info;
+ gimple *def_stmt;
+ vect_def_type dt;
+ if (!vect_is_simple_use (op, vinfo, &dt, &def_stmt_info,
+ &def_stmt))
+ return 0;
+ this_unprom->set_op (op, dt, NULL);
+ }
+ else if (!vect_look_through_possible_promotion (vinfo, op,
+ this_unprom))
return 0;
if (TYPE_PRECISION (this_unprom->type) == TYPE_PRECISION (type))
--- gcc/testsuite/gcc.dg/pr108692.c.jj 2023-02-07 15:47:20.329076264 +0100
+++ gcc/testsuite/gcc.dg/pr108692.c 2023-02-07 15:46:15.623031983 +0100
@@ -0,0 +1,31 @@
+/* PR tree-optimization/108692 */
+/* { dg-do compile } */
+/* { dg-options "-O2 -ftree-vectorize" } */
+
+__attribute__((noipa)) int
+foo (signed char *x, signed char *y, int n)
+{
+ int i, r = 0;
+ signed char a, b;
+ for (i = 0; i < n; i++)
+ {
+ a = x[i];
+ b = y[i];
+ int c = (unsigned char) a - (unsigned char) b;
+ r = r + (c < 0 ? -c : c);
+ }
+ return r;
+}
+
+int
+main ()
+{
+ signed char x[64] = {}, y[64] = {};
+ if (__CHAR_BIT__ != 8 || __SIZEOF_INT__ != 4)
+ return 0;
+ x[32] = -128;
+ y[32] = 1;
+ if (foo (x, y, 64) != 127)
+ __builtin_abort ();
+ return 0;
+}

View File

@ -1,4 +1,4 @@
SHA512 (gcc-13.0.1-20230208.tar.xz) = 55a0d2b5ec00fa83c96b4df9fff77d93020aad808682d9c1bd87f7aed8ecc259b044ae800957ff6fa42c8f6e77cbb2f2cd2f83ff824f584de10bdd1caf201f40
SHA512 (gcc-13.0.1-20230215.tar.xz) = 630b739424128b17bbde6826164f01fff7a639598881f63c95921168bb35cc7393ceaa63f423bdfb5692ab8ad5a30b99d5681837e05f1b013671373adb2b0b71
SHA512 (isl-0.24.tar.bz2) = aab3bddbda96b801d0f56d2869f943157aad52a6f6e6a61745edd740234c635c38231af20bc3f1a08d416a5e973a90e18249078ed8e4ae2f1d5de57658738e95
SHA512 (newlib-cygwin-9e09d6ed83cce4777a5950412647ccc603040409.tar.xz) = bef3fa04f7b1a915fc1356ebed114698b5cc835e9fa04b0becff05a9efc76c59fb376482990873d222d7acdcfee3c4f30f5a4cb7f3be1f291f1fa5f1c7a9d983
SHA512 (nvptx-tools-472b6e78b3ba918d727698f79911360b7c808247.tar.xz) = 91690321bf96460c3b3e229199a6f752ed1c27c6933d4345dc7e237dc068f604ad211bb3a0373e14d4f332bee05b6227d6933e14e0b475ffdfea8b511ab735e6