12.0.1-0.7

This commit is contained in:
Jakub Jelinek 2022-02-12 19:36:08 +01:00
parent 62d2a570da
commit f58fc62400
5 changed files with 178 additions and 16 deletions

1
.gitignore vendored
View File

@ -62,3 +62,4 @@
/gcc-12.0.1-20220129.tar.xz
/gcc-12.0.1-20220202.tar.xz
/gcc-12.0.1-20220205.tar.xz
/gcc-12.0.1-20220212.tar.xz

View File

@ -1,5 +1,5 @@
%global DATE 20220205
%global gitrev 76de92944e8628662e44eab3065caad0a3c0e032
%global DATE 20220212
%global gitrev dfda32cd0cba98db0f084f7d4ded68140e925e41
%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}.6%{?dist}
Release: %{gcc_release}.7%{?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
@ -304,7 +304,7 @@ Patch109: gcc12-fortran-fdec-add-missing-indexes.patch
%if %{build_go}
# Avoid stripping these libraries and binaries.
%global __os_install_post \
chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.* \
chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.* \
chmod 644 %{buildroot}%{_prefix}/bin/go.gcc \
chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc \
chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \
@ -312,7 +312,7 @@ chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}
chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/test2json \
chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/vet \
%__os_install_post \
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.* \
chmod 755 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.* \
chmod 755 %{buildroot}%{_prefix}/bin/go.gcc \
chmod 755 %{buildroot}%{_prefix}/bin/gofmt.gcc \
chmod 755 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo \
@ -1464,7 +1464,7 @@ ln -sf ../../../libstdc++.so.6.*[0-9] libstdc++.so
ln -sf ../../../libgfortran.so.5.* libgfortran.so
ln -sf ../../../libgomp.so.1.* libgomp.so
%if %{build_go}
ln -sf ../../../libgo.so.20.* libgo.so
ln -sf ../../../libgo.so.21.* libgo.so
%endif
%if %{build_libquadmath}
ln -sf ../../../libquadmath.so.0.* libquadmath.so
@ -1494,7 +1494,7 @@ ln -sf ../../../../%{_lib}/libstdc++.so.6.*[0-9] libstdc++.so
ln -sf ../../../../%{_lib}/libgfortran.so.5.* libgfortran.so
ln -sf ../../../../%{_lib}/libgomp.so.1.* libgomp.so
%if %{build_go}
ln -sf ../../../../%{_lib}/libgo.so.20.* libgo.so
ln -sf ../../../../%{_lib}/libgo.so.21.* libgo.so
%endif
%if %{build_libquadmath}
ln -sf ../../../../%{_lib}/libquadmath.so.0.* libquadmath.so
@ -1615,8 +1615,8 @@ ln -sf ../`echo ../../../../lib/libgfortran.so.5.* | sed s~/lib/~/lib64/~` 64/li
ln -sf ../`echo ../../../../lib/libgomp.so.1.* | sed s~/lib/~/lib64/~` 64/libgomp.so
%if %{build_go}
rm -f libgo.so
echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > libgo.so
echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > libgo.so
echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > 64/libgo.so
%endif
%if %{build_libquadmath}
rm -f libquadmath.so
@ -1716,8 +1716,8 @@ ln -sf ../`echo ../../../../lib64/libgfortran.so.5.* | sed s~/../lib64/~/~` 32/l
ln -sf ../`echo ../../../../lib64/libgomp.so.1.* | sed s~/../lib64/~/~` 32/libgomp.so
%if %{build_go}
rm -f libgo.so
echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > libgo.so
echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.20.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
echo 'INPUT ( %{_prefix}/lib64/'`echo ../../../../lib64/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > libgo.so
echo 'INPUT ( %{_prefix}/lib/'`echo ../../../../lib64/libgo.so.21.* | sed 's,^.*libg,libg,'`' )' > 32/libgo.so
%endif
%if %{build_libquadmath}
rm -f libquadmath.so
@ -1907,7 +1907,7 @@ chmod 755 %{buildroot}%{_prefix}/%{_lib}/liblsan.so.0.*
%endif
%if %{build_go}
# Avoid stripping these libraries and binaries.
chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.20.*
chmod 644 %{buildroot}%{_prefix}/%{_lib}/libgo.so.21.*
chmod 644 %{buildroot}%{_prefix}/bin/go.gcc
chmod 644 %{buildroot}%{_prefix}/bin/gofmt.gcc
chmod 644 %{buildroot}%{_prefix}/libexec/gcc/%{gcc_target_platform}/%{gcc_major}/cgo
@ -3059,7 +3059,7 @@ end
%doc rpm.doc/go/*
%files -n libgo
%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.20*
%attr(755,root,root) %{_prefix}/%{_lib}/libgo.so.21*
%doc rpm.doc/libgo/*
%files -n libgo-devel
@ -3167,6 +3167,31 @@ end
%endif
%changelog
* Sat Feb 12 2022 Jakub Jelinek <jakub@redhat.com> 12.0.1-0.7
- update from trunk
- PRs analyzer/98797, analyzer/101081, analyzer/102052, analyzer/103872,
analyzer/104274, analyzer/104417, analyzer/104452, c++/80951,
c++/96242, c++/96876, c++/102204, c++/103706, c++/103752, c++/104033,
c++/104379, c++/104403, c++/104410, c++/104425, c++/104432,
c++/104472, c/104427, debug/104407, fortran/66193, fortran/104329,
libgomp/104385, libstdc++/104442, middle-end/100775,
middle-end/104402, middle-end/104446, middle-end/104450,
middle-end/104464, middle-end/104467, middle-end/104496,
rtl-optimization/104059, rtl-optimization/104153,
rtl-optimization/104198, rtl-optimization/104400,
rtl-optimization/104459, sanitizer/104449, target/35513, target/79754,
target/97005, target/97040, target/100593, target/102140,
target/103627, target/104117, target/104283, target/104327,
target/104345, target/104364, target/104441, target/104451,
target/104453, target/104456, target/104458, target/104462,
target/104469, target/104474, target/104502, testsuite/104481,
tree-optimization/102832, tree-optimization/104288,
tree-optimization/104373, tree-optimization/104420,
tree-optimization/104445, tree-optimization/104466,
tree-optimization/104479, tree-optimization/104499
- fix handling of return in arm constexpr ctors and on all arches return in
constexpr dtors (PR c++/104513)
* 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,

View File

@ -1,6 +1,93 @@
Revert r12-674{3,4,5,6,7,8,9}, as there are several PRs reported against
those changes: PR104153, PR104154 and PR104198 at least.
Revert r12-674{3,4,5,6,7,8,9} and r12-7114, as there are several PRs reported
against those changes still unresolved.
--- gcc/ifcvt.cc
+++ gcc/ifcvt.cc
@@ -3391,11 +3391,7 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
rtx cond = noce_get_condition (jump, &cond_earliest, false);
rtx cc_cmp = cond_exec_get_condition (jump);
- if (cc_cmp)
- cc_cmp = copy_rtx (cc_cmp);
rtx rev_cc_cmp = cond_exec_get_condition (jump, /* get_reversed */ true);
- if (rev_cc_cmp)
- rev_cc_cmp = copy_rtx (rev_cc_cmp);
rtx_insn *insn;
int count = 0;
@@ -3519,7 +3515,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
unsigned cost1 = 0, cost2 = 0;
rtx_insn *seq, *seq1, *seq2;
rtx temp_dest = NULL_RTX, temp_dest1 = NULL_RTX, temp_dest2 = NULL_RTX;
- bool read_comparison = false;
seq1 = try_emit_cmove_seq (if_info, temp, cond,
new_val, old_val, need_cmov,
@@ -3529,41 +3524,10 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
as well. This allows the backend to emit a cmov directly without
creating an additional compare for each. If successful, costing
is easier and this sequence is usually preferred. */
- seq2 = try_emit_cmove_seq (if_info, temp, cond,
+ seq2 = try_emit_cmove_seq (if_info, target, cond,
new_val, old_val, need_cmov,
&cost2, &temp_dest2, cc_cmp, rev_cc_cmp);
- /* The backend might have created a sequence that uses the
- condition. Check this. */
- rtx_insn *walk = seq2;
- while (walk)
- {
- rtx set = single_set (walk);
-
- if (!set || !SET_SRC (set))
- {
- walk = NEXT_INSN (walk);
- continue;
- }
-
- rtx src = SET_SRC (set);
-
- if (XEXP (set, 1) && GET_CODE (XEXP (set, 1)) == IF_THEN_ELSE)
- ; /* We assume that this is the cmove created by the backend that
- naturally uses the condition. Therefore we ignore it. */
- else
- {
- if (reg_mentioned_p (XEXP (cond, 0), src)
- || reg_mentioned_p (XEXP (cond, 1), src))
- {
- read_comparison = true;
- break;
- }
- }
-
- walk = NEXT_INSN (walk);
- }
-
/* Check which version is less expensive. */
if (seq1 != NULL_RTX && (cost1 <= cost2 || seq2 == NULL_RTX))
{
@@ -3576,8 +3540,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
{
seq = seq2;
temp_dest = temp_dest2;
- if (!second_try && read_comparison)
- *last_needs_comparison = count;
}
else
{
@@ -3596,12 +3558,6 @@ noce_convert_multiple_sets_1 (struct noce_if_info *if_info,
unmodified_insns->safe_push (insn);
}
- /* Even if we did not actually need the comparison, we want to make sure
- to try a second time in order to get rid of the temporaries. */
- if (*last_needs_comparison == -1)
- *last_needs_comparison = 0;
-
-
return true;
}
--- gcc/config/rs6000/rs6000.cc
+++ gcc/config/rs6000/rs6000.cc
@@ -16373,10 +16373,10 @@ rs6000_emit_minmax (rtx dest, enum rtx_code code, rtx op0, rtx op1)

49
gcc12-pr104513.patch Normal file
View File

@ -0,0 +1,49 @@
2022-02-12 Jakub Jelinek <jakub@redhat.com>
PR c++/104513
* constexpr.cc (potential_constant_expression_1) <case GOTO_EXPR>:
Don't punt if returns (target).
* g++.dg/cpp1y/constexpr-104513.C: New test.
* g++.dg/cpp2a/constexpr-dtor12.C: New test.
--- gcc/cp/constexpr.cc.jj 2022-02-11 13:52:32.697425776 +0100
+++ gcc/cp/constexpr.cc 2022-02-12 13:51:21.000274390 +0100
@@ -9364,7 +9364,7 @@ potential_constant_expression_1 (tree t,
{
tree *target = &TREE_OPERAND (t, 0);
/* Gotos representing break and continue are OK. */
- if (breaks (target) || continues (target))
+ if (breaks (target) || continues (target) || returns (target))
{
*jump_target = *target;
return true;
--- gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C.jj 2022-02-12 19:05:14.374101202 +0100
+++ gcc/testsuite/g++.dg/cpp1y/constexpr-104513.C 2022-02-12 19:06:09.745332658 +0100
@@ -0,0 +1,10 @@
+// PR c++/104513
+// { dg-do compile { target c++14 } }
+
+struct A {
+ int a1;
+ short a2, a3;
+ long a4;
+ constexpr A() : a1(42), a2(42), a3(42), a4(42) { return; }
+};
+constexpr A a;
--- gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C.jj 2022-02-12 19:04:41.610555957 +0100
+++ gcc/testsuite/g++.dg/cpp2a/constexpr-dtor12.C 2022-02-12 19:04:18.473877087 +0100
@@ -0,0 +1,13 @@
+// PR c++/104513
+// { dg-do compile { target c++20 } }
+
+struct S {
+ constexpr S () : s (nullptr) {}
+ constexpr ~S () { delete s; }
+ int *s;
+};
+struct T : S {
+ constexpr T () : S () {}
+ constexpr ~T () { s = new int (42); return; }
+};
+constexpr T t;

View File

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