12.0.1-0.3
This commit is contained in:
parent
dc6e17c8c2
commit
067e0a8c2e
1
.gitignore
vendored
1
.gitignore
vendored
@ -58,3 +58,4 @@
|
|||||||
/gcc-12.0.0-20220112.tar.xz
|
/gcc-12.0.0-20220112.tar.xz
|
||||||
/gcc-12.0.0-20220115.tar.xz
|
/gcc-12.0.0-20220115.tar.xz
|
||||||
/gcc-12.0.1-20220118.tar.xz
|
/gcc-12.0.1-20220118.tar.xz
|
||||||
|
/gcc-12.0.1-20220125.tar.xz
|
||||||
|
47
gcc.spec
47
gcc.spec
@ -1,4 +1,4 @@
|
|||||||
%global DATE 20220118
|
%global DATE 20220125
|
||||||
%global gitrev c682bc883d1a29c3f697f065af23759f3d6757bc
|
%global gitrev c682bc883d1a29c3f697f065af23759f3d6757bc
|
||||||
%global gcc_version 12.0.1
|
%global gcc_version 12.0.1
|
||||||
%global gcc_major 12
|
%global gcc_major 12
|
||||||
@ -11,6 +11,7 @@
|
|||||||
%global _performance_build 1
|
%global _performance_build 1
|
||||||
# Hardening slows the compiler way too much.
|
# Hardening slows the compiler way too much.
|
||||||
%undefine _hardened_build
|
%undefine _hardened_build
|
||||||
|
%undefine _auto_set_build_flags
|
||||||
%if 0%{?fedora} > 27 || 0%{?rhel} > 7
|
%if 0%{?fedora} > 27 || 0%{?rhel} > 7
|
||||||
# Until annobin is fixed (#1519165).
|
# Until annobin is fixed (#1519165).
|
||||||
%undefine _annotated_build
|
%undefine _annotated_build
|
||||||
@ -119,7 +120,7 @@
|
|||||||
Summary: Various compilers (C, C++, Objective-C, ...)
|
Summary: Various compilers (C, C++, Objective-C, ...)
|
||||||
Name: gcc
|
Name: gcc
|
||||||
Version: %{gcc_version}
|
Version: %{gcc_version}
|
||||||
Release: %{gcc_release}.2%{?dist}
|
Release: %{gcc_release}.3%{?dist}
|
||||||
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
|
# libgcc, libgfortran, libgomp, libstdc++ and crtstuff have
|
||||||
# GCC Runtime Exception.
|
# GCC Runtime Exception.
|
||||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ with exceptions and LGPLv2+ and BSD
|
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
|
Patch9: gcc12-Wno-format-security.patch
|
||||||
Patch10: gcc12-rh1574936.patch
|
Patch10: gcc12-rh1574936.patch
|
||||||
Patch11: gcc12-d-shared-libphobos.patch
|
Patch11: gcc12-d-shared-libphobos.patch
|
||||||
Patch12: gcc12-pr104025.patch
|
Patch12: gcc12-pr104194.patch
|
||||||
Patch13: gcc12-pr104103.patch
|
Patch13: gcc12-pr94193.patch
|
||||||
Patch14: gcc12-pr104104.patch
|
Patch14: gcc12-ifcvt-revert.patch
|
||||||
|
|
||||||
Patch100: gcc12-fortran-fdec-duplicates.patch
|
Patch100: gcc12-fortran-fdec-duplicates.patch
|
||||||
Patch101: gcc12-fortran-flogical-as-integer.patch
|
Patch101: gcc12-fortran-flogical-as-integer.patch
|
||||||
@ -793,9 +794,9 @@ to NVidia PTX capable devices if available.
|
|||||||
%patch10 -p0 -b .rh1574936~
|
%patch10 -p0 -b .rh1574936~
|
||||||
%endif
|
%endif
|
||||||
%patch11 -p0 -b .d-shared-libphobos~
|
%patch11 -p0 -b .d-shared-libphobos~
|
||||||
%patch12 -p0 -b .pr104025~
|
%patch12 -p0 -b .pr104194~
|
||||||
%patch13 -p0 -b .pr104103~
|
%patch13 -p0 -b .pr94193~
|
||||||
%patch14 -p0 -b .pr104104~
|
%patch14 -p0 -b .ifcvt-revert~
|
||||||
|
|
||||||
%if 0%{?rhel} >= 9
|
%if 0%{?rhel} >= 9
|
||||||
%patch100 -p1 -b .fortran-fdec-duplicates~
|
%patch100 -p1 -b .fortran-fdec-duplicates~
|
||||||
@ -3155,6 +3156,36 @@ end
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%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
|
* Tue Jan 18 2022 Jakub Jelinek <jakub@redhat.com> 12.0.1-0.2
|
||||||
- update from trunk
|
- update from trunk
|
||||||
- PRs c++/104007, c++/104074, fortran/103692, ipa/103989, libstdc++/101124,
|
- PRs c++/104007, c++/104074, fortran/103692, ipa/103989, libstdc++/101124,
|
||||||
|
1054
gcc12-ifcvt-revert.patch
Normal file
1054
gcc12-ifcvt-revert.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -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 ();
|
|
@ -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))
|
|
||||||
{
|
|
@ -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
92
gcc12-pr104194.patch
Normal 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
39
gcc12-pr94193.patch
Normal 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]);
|
2
sources
2
sources
@ -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 (isl-0.18.tar.bz2) = 85d0b40f4dbf14cb99d17aa07048cdcab2dc3eb527d2fbb1e84c41b2de5f351025370e57448b63b2b8a8cf8a0843a089c3263f9baee1542d5c2e1cb37ed39d94
|
||||||
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c
|
SHA512 (newlib-cygwin-50e2a63b04bdd018484605fbb954fd1bd5147fa0.tar.xz) = 002a48a7b689a81abbf16161bcaec001a842e67dfbe372e9e109092703bfc666675f16198f60ca429370e8850d564547dc505df81bc3aaca4ce6defbc014ad6c
|
||||||
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7
|
SHA512 (nvptx-tools-5f6f343a302d620b0868edab376c00b15741e39e.tar.xz) = f6d10db94fa1570ae0f94df073fa3c73c8e5ee16d59070b53d94f7db0de8a031bc44d7f3f1852533da04b625ce758e022263855ed43cfc6867e0708d001e53c7
|
||||||
|
Loading…
Reference in New Issue
Block a user