12.0.1-0.3

This commit is contained in:
Jakub Jelinek 2022-01-25 14:02:53 +01:00
parent dc6e17c8c2
commit 067e0a8c2e
9 changed files with 1226 additions and 192 deletions

1
.gitignore vendored
View File

@ -58,3 +58,4 @@
/gcc-12.0.0-20220112.tar.xz
/gcc-12.0.0-20220115.tar.xz
/gcc-12.0.1-20220118.tar.xz
/gcc-12.0.1-20220125.tar.xz

View File

@ -1,4 +1,4 @@
%global DATE 20220118
%global DATE 20220125
%global gitrev c682bc883d1a29c3f697f065af23759f3d6757bc
%global gcc_version 12.0.1
%global gcc_major 12
@ -11,6 +11,7 @@
%global _performance_build 1
# Hardening slows the compiler way too much.
%undefine _hardened_build
%undefine _auto_set_build_flags
%if 0%{?fedora} > 27 || 0%{?rhel} > 7
# Until annobin is fixed (#1519165).
%undefine _annotated_build
@ -119,7 +120,7 @@
Summary: Various compilers (C, C++, Objective-C, ...)
Name: gcc
Version: %{gcc_version}
Release: %{gcc_release}.2%{?dist}
Release: %{gcc_release}.3%{?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
@ -269,9 +270,9 @@ Patch8: gcc12-no-add-needed.patch
Patch9: gcc12-Wno-format-security.patch
Patch10: gcc12-rh1574936.patch
Patch11: gcc12-d-shared-libphobos.patch
Patch12: gcc12-pr104025.patch
Patch13: gcc12-pr104103.patch
Patch14: gcc12-pr104104.patch
Patch12: gcc12-pr104194.patch
Patch13: gcc12-pr94193.patch
Patch14: gcc12-ifcvt-revert.patch
Patch100: gcc12-fortran-fdec-duplicates.patch
Patch101: gcc12-fortran-flogical-as-integer.patch
@ -793,9 +794,9 @@ to NVidia PTX capable devices if available.
%patch10 -p0 -b .rh1574936~
%endif
%patch11 -p0 -b .d-shared-libphobos~
%patch12 -p0 -b .pr104025~
%patch13 -p0 -b .pr104103~
%patch14 -p0 -b .pr104104~
%patch12 -p0 -b .pr104194~
%patch13 -p0 -b .pr94193~
%patch14 -p0 -b .ifcvt-revert~
%if 0%{?rhel} >= 9
%patch100 -p1 -b .fortran-fdec-duplicates~
@ -3155,6 +3156,36 @@ end
%endif
%changelog
* Tue Jan 24 2022 Jakub Jelinek <jakub@redhat.com> 12.0.1-0.3
- update from trunk
- PRs ada/103538, analyzer/94362, analyzer/103685, analyzer/104062,
analyzer/104089, analyzer/104150, analyzer/104159, bootstrap/104135,
bootstrap/104170, c++/20040, c++/55227, c++/91911, c++/101072,
c++/101405, c++/101715, c++/102300, c++/102338, c++/103631,
c++/103672, c++/103681, c++/104025, c++/104055, c++/104084,
c++/104134, c++/104139, c++/104148, c++/104173, c++/104182,
c++/104197, c/104115, debug/103874, fortran/102621, fortran/103695,
fortran/104127, libgcc/104207, libstdc++/87193, libstdc++/104019,
libstdc++/104032, libstdc++/104099, libstdc++/104101,
libstdc++/104123, libstdc++/104174, middle-end/100786,
middle-end/102860, middle-end/104069, middle-end/104076,
middle-end/104140, other/104176, other/104181, preprocessor/104030,
rtl-optimization/102478, sanitizer/99673, sanitizer/104158,
target/64821, target/94193, target/100784, target/102517,
target/103676, target/103771, target/104090, target/104136,
target/104188, testsuite/102833, testsuite/103763, testsuite/104021,
testsuite/104022, testsuite/104109, tree-optimization/100089,
tree-optimization/100740, tree-optimization/101508,
tree-optimization/101972, tree-optimization/102087,
tree-optimization/102131, tree-optimization/103721,
tree-optimization/103997, tree-optimization/104112,
tree-optimization/104114, tree-optimization/104152,
tree-optimization/104156, tree-optimization/104214
- don't emit C++ mangling aliases for compatibility with GCC 8.1 ppc64le
IEEE quad long double (PR target/104172)
- mark IEEE quad long double in DWARF as implicit typedef to _Float128
(PR debug/104194)
* Tue Jan 18 2022 Jakub Jelinek <jakub@redhat.com> 12.0.1-0.2
- update from trunk
- PRs c++/104007, c++/104074, fortran/103692, ipa/103989, libstdc++/101124,

1054
gcc12-ifcvt-revert.patch Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,42 +0,0 @@
2022-01-18 Jakub Jelinek <jakub@redhat.com>
PR c++/104025
* parser.cc (cp_parser_id_expression): Save and restore input_location
around cp_parser_skip_entire_template_parameter_list call for
-Wmissing-template-keyword.
* g++.dg/warn/pr104025.C: New test.
--- gcc/cp/parser.cc.jj 2022-01-17 18:05:04.797307506 +0100
+++ gcc/cp/parser.cc 2022-01-17 20:27:33.642711859 +0100
@@ -6254,6 +6254,7 @@ cp_parser_id_expression (cp_parser *pars
OPT_Wmissing_template_keyword))
{
saved_token_sentinel toks (parser->lexer, STS_ROLLBACK);
+ iloc_sentinel ils (UNKNOWN_LOCATION);
if (cp_parser_skip_entire_template_parameter_list (parser)
/* An operator after the > suggests that the > ends a
template-id; a name or literal suggests that the > is an
--- gcc/testsuite/g++.dg/warn/pr104025.C.jj 2022-01-17 20:31:17.320591249 +0100
+++ gcc/testsuite/g++.dg/warn/pr104025.C 2022-01-17 20:31:09.068706373 +0100
@@ -0,0 +1,20 @@
+// PR c++/104025
+// { dg-do compile }
+// { dg-options "-Wmissing-template-keyword -fcompare-debug" }
+
+void bar (int);
+
+struct S { int i; };
+
+template <class C>
+struct T
+{
+ int m;
+ C c;
+ void foo ()
+ {
+ bar (c.i < m);
+ }
+};
+
+template void T<S>::foo ();

View File

@ -1,20 +0,0 @@
2022-01-18 Jakub Jelinek <jakub@redhat.com>
PR middle-end/104103
* gimple-ssa-warn-access.cc (pass_waccess::check_call): Don't check
.ASAN_MARK calls.
--- gcc/gimple-ssa-warn-access.cc.jj 2022-01-16 20:55:46.783932110 +0100
+++ gcc/gimple-ssa-warn-access.cc 2022-01-18 20:56:13.697780325 +0100
@@ -4232,6 +4232,11 @@ pass_waccess::check_call (gcall *stmt)
if (gimple_call_builtin_p (stmt, BUILT_IN_NORMAL))
check_builtin (stmt);
+ /* .ASAN_MARK doesn't access any vars, only modifies shadow memory. */
+ if (gimple_call_internal_p (stmt)
+ && gimple_call_internal_fn (stmt) == IFN_ASAN_MARK)
+ return;
+
if (!m_early_checks_p)
if (tree callee = gimple_call_fndecl (stmt))
{

View File

@ -1,121 +0,0 @@
2022-01-18 Jakub Jelinek <jakub@redhat.com>
PR target/104104
* config/i386/sse.md
(<avx512>_<complexopname>_<mode><maskc_name><round_name>,
avx512fp16_<complexopname>sh_v8hf<mask_scalarc_name><round_scalarcz_name>,
avx512dq_mul<mode>3<mask_name>, <avx2_avx512>_permvar<mode><mask_name>,
avx2_perm<mode>_1<mask_name>, avx512f_perm<mode>_1<mask_name>,
avx512dq_rangep<mode><mask_name><round_saeonly_name>,
avx512dq_ranges<mode><mask_scalar_name><round_saeonly_scalar_name>,
<avx512>_getmant<mode><mask_name><round_saeonly_name>,
avx512f_vgetmant<mode><mask_scalar_name><round_saeonly_scalar_name>):
Use vxorps\t%x0, %x0, %x0 instead of vxorps\t{%x0, %x0, %x0}.
* gcc.target/i386/pr104104.c: New test.
--- gcc/config/i386/sse.md.jj 2022-01-18 11:58:59.156988142 +0100
+++ gcc/config/i386/sse.md 2022-01-18 21:20:40.022477778 +0100
@@ -6539,7 +6539,7 @@ (define_insn "<avx512>_<complexopname>_<
{
if (TARGET_DEST_FALSE_DEP_FOR_GLC
&& <maskc_dest_false_dep_for_glc_cond>)
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "v<complexopname><ssemodesuffix>\t{<round_maskc_op3>%2, %1, %0<maskc_operand3>|%0<maskc_operand3>, %1, %2<round_maskc_op3>}";
}
[(set_attr "type" "ssemul")
@@ -6750,7 +6750,7 @@ (define_insn "avx512fp16_<complexopname>
{
if (TARGET_DEST_FALSE_DEP_FOR_GLC
&& <mask_scalarc_dest_false_dep_for_glc_cond>)
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "v<complexopname>sh\t{<round_scalarc_mask_op3>%2, %1, %0<mask_scalarc_operand3>|%0<mask_scalarc_operand3>, %1, %2<round_scalarc_mask_op3>}";
}
[(set_attr "type" "ssemul")
@@ -15222,7 +15222,7 @@ (define_insn "avx512dq_mul<mode>3<mask_n
&& <mask3_dest_false_dep_for_glc_cond>
&& !reg_mentioned_p (operands[0], operands[1])
&& !reg_mentioned_p (operands[0], operands[2]))
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "vpmullq\t{%2, %1, %0<mask_operand3>|%0<mask_operand3>, %1, %2}";
}
[(set_attr "type" "sseimul")
@@ -24658,7 +24658,7 @@ (define_insn "<avx2_avx512>_permvar<mode
&& <mask3_dest_false_dep_for_glc_cond>
&& !reg_mentioned_p (operands[0], operands[1])
&& !reg_mentioned_p (operands[0], operands[2]))
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "vperm<ssemodesuffix>\t{%1, %2, %0<mask_operand3>|%0<mask_operand3>, %2, %1}";
}
[(set_attr "type" "sselog")
@@ -24900,7 +24900,7 @@ (define_insn "avx2_perm<mode>_1<mask_nam
if (TARGET_DEST_FALSE_DEP_FOR_GLC
&& <mask6_dest_false_dep_for_glc_cond>
&& !reg_mentioned_p (operands[0], operands[1]))
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "vperm<ssemodesuffix>\t{%2, %1, %0<mask_operand6>|%0<mask_operand6>, %1, %2}";
}
[(set_attr "type" "sselog")
@@ -24975,7 +24975,7 @@ (define_insn "avx512f_perm<mode>_1<mask_
if (TARGET_DEST_FALSE_DEP_FOR_GLC
&& <mask10_dest_false_dep_for_glc_cond>
&& !reg_mentioned_p (operands[0], operands[1]))
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "vperm<ssemodesuffix>\t{%2, %1, %0<mask_operand10>|%0<mask_operand10>, %1, %2}";
}
[(set_attr "type" "sselog")
@@ -26880,7 +26880,7 @@ (define_insn "avx512dq_rangep<mode><mask
&& <mask4_dest_false_dep_for_glc_cond>
&& !reg_mentioned_p (operands[0], operands[1])
&& !reg_mentioned_p (operands[0], operands[2]))
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "vrange<ssemodesuffix>\t{%3, <round_saeonly_mask_op4>%2, %1, %0<mask_operand4>|%0<mask_operand4>, %1, %2<round_saeonly_mask_op4>, %3}";
}
[(set_attr "type" "sse")
@@ -26903,7 +26903,7 @@ (define_insn "avx512dq_ranges<mode><mask
&& <mask_scalar4_dest_false_dep_for_glc_cond>
&& !reg_mentioned_p (operands[0], operands[1])
&& !reg_mentioned_p (operands[0], operands[2]))
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "vrange<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1, %<iptr>2<round_saeonly_scalar_mask_op4>, %3}";
}
[(set_attr "type" "sse")
@@ -26949,7 +26949,7 @@ (define_insn "<avx512>_getmant<mode><mas
if (TARGET_DEST_FALSE_DEP_FOR_GLC
&& <mask3_dest_false_dep_for_glc_cond>
&& MEM_P (operands[1]))
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "vgetmant<ssemodesuffix>\t{%2, <round_saeonly_mask_op3>%1, %0<mask_operand3>|%0<mask_operand3>, %1<round_saeonly_mask_op3>, %2}";
}
[(set_attr "prefix" "evex")
@@ -26971,7 +26971,7 @@ (define_insn "avx512f_vgetmant<mode><mas
&& <mask_scalar4_dest_false_dep_for_glc_cond>
&& !reg_mentioned_p (operands[0], operands[1])
&& !reg_mentioned_p (operands[0], operands[2]))
- output_asm_insn ("vxorps\t{%x0, %x0, %x0}", operands);
+ output_asm_insn ("vxorps\t%x0, %x0, %x0", operands);
return "vgetmant<ssescalarmodesuffix>\t{%3, <round_saeonly_scalar_mask_op4>%2, %1, %0<mask_scalar_operand4>|%0<mask_scalar_operand4>, %1, %<iptr>2<round_saeonly_scalar_mask_op4>, %3}";
}
[(set_attr "prefix" "evex")
--- gcc/testsuite/gcc.target/i386/pr104104.c.jj 2022-01-18 21:38:17.007906673 +0100
+++ gcc/testsuite/gcc.target/i386/pr104104.c 2022-01-18 21:36:10.475623148 +0100
@@ -0,0 +1,10 @@
+/* PR target/104104 */
+/* { dg-do assemble { target vect_simd_clones } } */
+/* { dg-require-effective-target masm_intel } */
+/* { dg-options "-march=alderlake -masm=intel -O1 -fallow-store-data-races -funroll-all-loops" } */
+
+__attribute__ ((simd)) short int
+foo (void)
+{
+ return 0;
+}

92
gcc12-pr104194.patch Normal file
View File

@ -0,0 +1,92 @@
2022-01-25 Jakub Jelinek <jakub@redhat.com>
PR debug/104194
* dwarf2out.cc (long_double_as_float128): New function.
(modified_type_die): For powerpc64le IEEE 754 quad long double
and complex long double emit those as DW_TAG_typedef to
_Float128 or complex _Float128 base type.
--- gcc/dwarf2out.cc.jj 2022-01-25 05:47:53.987454934 +0100
+++ gcc/dwarf2out.cc 2022-01-25 11:54:25.100522089 +0100
@@ -13568,6 +13568,47 @@ qualified_die_p (dw_die_ref die, int *ma
return type;
}
+/* If TYPE is long double or complex long double that
+ should be emitted as artificial typedef to _Float128 or
+ complex _Float128, return the type it should be emitted as.
+ This is done in case the target already supports 16-byte
+ composite floating point type (ibm_extended_format). */
+
+static tree
+long_double_as_float128 (tree type)
+{
+ if (type != long_double_type_node
+ && type != complex_long_double_type_node)
+ return NULL_TREE;
+
+ machine_mode mode, fmode;
+ if (TREE_CODE (type) == COMPLEX_TYPE)
+ mode = TYPE_MODE (TREE_TYPE (type));
+ else
+ mode = TYPE_MODE (type);
+ if (known_eq (GET_MODE_SIZE (mode), 16) && !MODE_COMPOSITE_P (mode))
+ FOR_EACH_MODE_IN_CLASS (fmode, MODE_FLOAT)
+ if (known_eq (GET_MODE_SIZE (fmode), 16)
+ && MODE_COMPOSITE_P (fmode))
+ {
+ if (type == long_double_type_node)
+ {
+ if (float128_type_node
+ && (TYPE_MODE (float128_type_node)
+ == TYPE_MODE (type)))
+ return float128_type_node;
+ return NULL_TREE;
+ }
+ for (int i = 0; i < NUM_FLOATN_NX_TYPES; i++)
+ if (COMPLEX_FLOATN_NX_TYPE_NODE (i) != NULL_TREE
+ && (TYPE_MODE (COMPLEX_FLOATN_NX_TYPE_NODE (i))
+ == TYPE_MODE (type)))
+ return COMPLEX_FLOATN_NX_TYPE_NODE (i);
+ }
+
+ return NULL_TREE;
+}
+
/* Given a pointer to an arbitrary ..._TYPE tree node, return a debugging
entry that chains the modifiers specified by CV_QUALS in front of the
given type. REVERSE is true if the type is to be interpreted in the
@@ -13848,7 +13889,32 @@ modified_type_die (tree type, int cv_qua
}
else if (is_base_type (type))
{
- mod_type_die = base_type_die (type, reverse);
+ /* If a target supports long double as different floating point
+ modes with the same 16-byte size, use normal DW_TAG_base_type
+ only for the composite (ibm_extended_real_format) type and
+ for the other for the time being emit instead a "_Float128"
+ or "complex _Float128" DW_TAG_base_type and a "long double"
+ or "complex long double" typedef to it. */
+ if (tree other_type = long_double_as_float128 (type))
+ {
+ dw_die_ref other_die;
+ if (TYPE_NAME (other_type))
+ other_die
+ = modified_type_die (other_type, TYPE_UNQUALIFIED, reverse,
+ context_die);
+ else
+ {
+ other_die = base_type_die (type, reverse);
+ add_child_die (comp_unit_die (), other_die);
+ add_name_attribute (other_die,
+ TREE_CODE (type) == COMPLEX_TYPE
+ ? "complex _Float128" : "_Float128");
+ }
+ mod_type_die = new_die_raw (DW_TAG_typedef);
+ add_AT_die_ref (mod_type_die, DW_AT_type, other_die);
+ }
+ else
+ mod_type_die = base_type_die (type, reverse);
/* The DIE with DW_AT_endianity is placed right after the naked DIE. */
if (reverse_base_type)

39
gcc12-pr94193.patch Normal file
View File

@ -0,0 +1,39 @@
2022-01-25 Jakub Jelinek <jakub@redhat.com>
PR target/94193
* config/rs6000/rs6000.md (feclearexceptsi, feraiseexceptsi):
Use general_operand instead of const_int_operand, drop constraint
and FAIL if operands[1] is not CONST_INT_P.
--- gcc/config/rs6000/rs6000.md.jj 2022-01-25 05:48:01.497340303 +0100
+++ gcc/config/rs6000/rs6000.md 2022-01-25 13:48:13.752709482 +0100
@@ -6959,12 +6959,12 @@ (define_expand "fegetroundsi"
;; Because of these restrictions, this only expands on the desired
;; cases and fallback to a call to libc on any other case.
(define_expand "feclearexceptsi"
- [(use (match_operand:SI 1 "const_int_operand" "n"))
+ [(use (match_operand:SI 1 "general_operand"))
(set (match_operand:SI 0 "gpc_reg_operand")
(const_int 0))]
"TARGET_HARD_FLOAT"
{
- if (!OPTION_GLIBC)
+ if (!OPTION_GLIBC || !CONST_INT_P (operands[1]))
FAIL;
unsigned int fe = INTVAL (operands[1]);
@@ -6999,12 +6999,12 @@ (define_expand "feclearexceptsi"
;; Because of these restrictions, this only expands on the desired
;; cases and fallback to a call to libc on any other case.
(define_expand "feraiseexceptsi"
- [(use (match_operand:SI 1 "const_int_operand" "n"))
+ [(use (match_operand:SI 1 "general_operand"))
(set (match_operand:SI 0 "gpc_reg_operand")
(const_int 0))]
"TARGET_HARD_FLOAT"
{
- if (!OPTION_GLIBC)
+ if (!OPTION_GLIBC || !CONST_INT_P (operands[1]))
FAIL;
unsigned int fe = INTVAL (operands[1]);

View File

@ -1,4 +1,4 @@
SHA512 (gcc-12.0.1-20220118.tar.xz) = 5fab239e915e71a8986a122e3f897f2236f21f0f183da33cad2ace8f34823cd8f32c7c0dfceffbfeae17cd99b656f242d30ddeb94eaafe3edf858ea88ec59016
SHA512 (gcc-12.0.1-20220125.tar.xz) = 09c4b7d7fe3e8a2c0f4181da717e476c0868b2bb1c86cdd22482ee4235aebb9eb0c89b5f87b9a0e6852e0cc2876b652c60457996a86dc6e9b9b02ca2ff87613f
SHA512 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7