12.0.1-0.6

This commit is contained in:
Jakub Jelinek 2022-02-05 11:37:58 +01:00
parent 3628c9a446
commit 62d2a570da
4 changed files with 19 additions and 114 deletions

1
.gitignore vendored
View File

@ -61,3 +61,4 @@
/gcc-12.0.1-20220125.tar.xz
/gcc-12.0.1-20220129.tar.xz
/gcc-12.0.1-20220202.tar.xz
/gcc-12.0.1-20220205.tar.xz

View File

@ -1,5 +1,5 @@
%global DATE 20220202
%global gitrev fb6057a2be99e071993fb54a5d338ab0febba8ff
%global DATE 20220205
%global gitrev 76de92944e8628662e44eab3065caad0a3c0e032
%global gcc_version 12.0.1
%global gcc_major 12
# Note, gcc_release must be integer, if you want to add suffixes to
@ -120,7 +120,7 @@
Summary: Various compilers (C, C++, Objective-C, ...)
Name: gcc
Version: %{gcc_version}
Release: %{gcc_release}.5%{?dist}
Release: %{gcc_release}.6%{?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
@ -270,9 +270,8 @@ Patch8: gcc12-no-add-needed.patch
Patch9: gcc12-Wno-format-security.patch
Patch10: gcc12-rh1574936.patch
Patch11: gcc12-d-shared-libphobos.patch
Patch12: gcc12-pr104334.patch
Patch13: gcc12-ifcvt-revert.patch
Patch14: gcc12-pr104253.patch
Patch12: gcc12-ifcvt-revert.patch
Patch13: gcc12-pr104253.patch
Patch100: gcc12-fortran-fdec-duplicates.patch
Patch101: gcc12-fortran-flogical-as-integer.patch
@ -794,9 +793,8 @@ to NVidia PTX capable devices if available.
%patch10 -p0 -b .rh1574936~
%endif
%patch11 -p0 -b .d-shared-libphobos~
%patch12 -p0 -b .pr104334~
%patch13 -p0 -b .ifcvt-revert~
%patch14 -p0 -b .pr104253~
%patch12 -p0 -b .ifcvt-revert~
%patch13 -p0 -b .pr104253~
%if 0%{?rhel} >= 9
%patch100 -p1 -b .fortran-fdec-duplicates~
@ -3169,6 +3167,16 @@ end
%endif
%changelog
* Sat Feb 5 2022 Jakub Jelinek <jakub@redhat.com> 12.0.1-0.6
- update from trunk
- PRs analyzer/104369, c++/92385, c++/104079, c++/104300, c++/104302,
debug/104337, debug/104366, fortran/104311, fortran/104328,
middle-end/90348, middle-end/104092, middle-end/104260,
rtl-optimization/101885, target/95082, target/100808, target/103686,
target/104219, target/104362, target/104380, tree-optimization/103641,
tree-optimization/104119, tree-optimization/104356,
tree-optimization/104389
* Wed Feb 2 2022 Jakub Jelinek <jakub@redhat.com> 12.0.1-0.5
- update from trunk
- PRs analyzer/104270, c++/101874, c++/102414, c++/102434, c++/103186,

View File

@ -1,104 +0,0 @@
2022-02-02 Jakub Jelinek <jakub@redhat.com>
PR tree-optimization/104334
* range-op.cc (range_operator::wi_fold_in_parts): Change lh_range
and rh_range type to widest_int and subtract in widest_int. Remove
ov_rh, ov_lh and sign vars, always perform comparisons as signed
and use >, < and == operators for it.
* g++.dg/opt/pr104334.C: New test.
--- gcc/range-op.cc.jj 2022-01-13 22:29:15.345831749 +0100
+++ gcc/range-op.cc 2022-02-02 16:10:07.422148772 +0100
@@ -144,22 +144,21 @@ range_operator::wi_fold_in_parts (irange
const wide_int &rh_lb,
const wide_int &rh_ub) const
{
- wi::overflow_type ov_rh, ov_lh;
int_range_max tmp;
- wide_int rh_range = wi::sub (rh_ub, rh_lb, TYPE_SIGN (type), &ov_rh);
- wide_int lh_range = wi::sub (lh_ub, lh_lb, TYPE_SIGN (type), &ov_lh);
- signop sign = TYPE_SIGN (type);;
+ widest_int rh_range = wi::sub (widest_int::from (rh_ub, TYPE_SIGN (type)),
+ widest_int::from (rh_lb, TYPE_SIGN (type)));
+ widest_int lh_range = wi::sub (widest_int::from (lh_ub, TYPE_SIGN (type)),
+ widest_int::from (lh_lb, TYPE_SIGN (type)));
// If there are 2, 3, or 4 values in the RH range, do them separately.
// Call wi_fold_in_parts to check the RH side.
- if (wi::gt_p (rh_range, 0, sign) && wi::lt_p (rh_range, 4, sign)
- && ov_rh == wi::OVF_NONE)
+ if (rh_range > 0 && rh_range < 4)
{
wi_fold_in_parts (r, type, lh_lb, lh_ub, rh_lb, rh_lb);
- if (wi::gt_p (rh_range, 1, sign))
+ if (rh_range > 1)
{
wi_fold_in_parts (tmp, type, lh_lb, lh_ub, rh_lb + 1, rh_lb + 1);
r.union_ (tmp);
- if (wi::eq_p (rh_range, 3))
+ if (rh_range == 3)
{
wi_fold_in_parts (tmp, type, lh_lb, lh_ub, rh_lb + 2, rh_lb + 2);
r.union_ (tmp);
@@ -170,15 +169,14 @@ range_operator::wi_fold_in_parts (irange
}
// Otherise check for 2, 3, or 4 values in the LH range and split them up.
// The RH side has been checked, so no recursion needed.
- else if (wi::gt_p (lh_range, 0, sign) && wi::lt_p (lh_range, 4, sign)
- && ov_lh == wi::OVF_NONE)
+ else if (lh_range > 0 && lh_range < 4)
{
wi_fold (r, type, lh_lb, lh_lb, rh_lb, rh_ub);
- if (wi::gt_p (lh_range, 1, sign))
+ if (lh_range > 1)
{
wi_fold (tmp, type, lh_lb + 1, lh_lb + 1, rh_lb, rh_ub);
r.union_ (tmp);
- if (wi::eq_p (lh_range, 3))
+ if (lh_range == 3)
{
wi_fold (tmp, type, lh_lb + 2, lh_lb + 2, rh_lb, rh_ub);
r.union_ (tmp);
--- gcc/testsuite/g++.dg/opt/pr104334.C.jj 2022-02-02 14:35:51.184657968 +0100
+++ gcc/testsuite/g++.dg/opt/pr104334.C 2022-02-02 14:37:14.888478594 +0100
@@ -0,0 +1,40 @@
+// PR tree-optimization/104334
+// { dg-do run { target c++11 } }
+// { dg-options "-O2 --param logical-op-non-short-circuit=0" }
+
+enum class A { A0, A1, A2, A3 };
+int x;
+
+__attribute__((noipa)) void
+baz ()
+{
+ x = 1;
+}
+
+struct B {
+ unsigned b : 2;
+
+ A
+ foo () const
+ {
+ return static_cast<A> (b);
+ }
+
+ __attribute__((noinline)) void
+ bar ()
+ {
+ if (foo () == A::A2 || foo () == A::A3)
+ baz ();
+ }
+};
+
+int
+main ()
+{
+ B c;
+ c.b = 2;
+ c.bar ();
+ if (x != 1)
+ __builtin_abort ();
+ return 0;
+}

View File

@ -1,4 +1,4 @@
SHA512 (gcc-12.0.1-20220202.tar.xz) = cc0a217d96107064adb121075303b359b16b40d32744eff8fa671255d5b9f34245385b10158a6d4558a1d2fbb2627525c1d50ec6e295541bb2334625b4ae9d30
SHA512 (gcc-12.0.1-20220205.tar.xz) = fdfcf57df5df9ec765c2017a76bfad1d1f02124f5e51078232c841cdb02848db3a55c3adf6f303e7545617b3df5a0ed84d9eee89f6e9b3fd1db27297736e44be
SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7