From 7ee3a099faa6c91c805c0bd6f79d409f320549cb Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Sat, 9 Feb 2019 12:03:21 +0100 Subject: [PATCH] 9.0.1-0.4 --- .gitignore | 1 + gcc.spec | 36 ++++++++++- gcc9-pr88714.patch | 146 +++++++++------------------------------------ gcc9-pr88977.patch | 48 +++++++++++++++ gcc9-pr89229.patch | 54 +++++++++++++++++ sources | 2 +- 6 files changed, 165 insertions(+), 122 deletions(-) create mode 100644 gcc9-pr88977.patch create mode 100644 gcc9-pr89229.patch diff --git a/.gitignore b/.gitignore index 84695d8..830f66f 100644 --- a/.gitignore +++ b/.gitignore @@ -62,3 +62,4 @@ /gcc-9.0.1-20190123.tar.xz /gcc-9.0.1-20190129.tar.xz /gcc-9.0.1-20190203.tar.xz +/gcc-9.0.1-20190209.tar.xz diff --git a/gcc.spec b/gcc.spec index 99378ca..16f8252 100644 --- a/gcc.spec +++ b/gcc.spec @@ -1,10 +1,10 @@ -%global DATE 20190203 -%global SVNREV 268371 +%global DATE 20190209 +%global SVNREV 268719 %global gcc_version 9.0.1 %global gcc_major 9 # Note, gcc_release must be integer, if you want to add suffixes to # %%{release}, append them after %%{gcc_release} on Release: line. -%global gcc_release 0.3 +%global gcc_release 0.4 %global nvptx_tools_gitrev c28050f60193b3b95a18866a96f03334e874e78f %global nvptx_newlib_gitrev aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24 %global _unpackaged_files_terminate_build 0 @@ -257,6 +257,8 @@ Patch11: gcc9-d-shared-libphobos.patch Patch12: gcc9-pr88714.patch Patch13: gcc9-pr89014.patch Patch14: gcc9-pr89093.patch +Patch15: gcc9-pr88977.patch +Patch16: gcc9-pr89229.patch Patch1000: nvptx-tools-no-ptxas.patch Patch1001: nvptx-tools-build.patch @@ -327,6 +329,8 @@ Summary: C++ support for GCC Requires: gcc = %{version}-%{release} Requires: libstdc++ = %{version}-%{release} Requires: libstdc++-devel = %{version}-%{release} +Provides: gcc-g++ = %{version}-%{release} +Provides: g++ = %{version}-%{release} Autoreq: true %description c++ @@ -404,6 +408,8 @@ Requires: libgfortran = %{version}-%{release} Requires: libquadmath = %{version}-%{release} Requires: libquadmath-devel = %{version}-%{release} %endif +Provides: gcc-fortran = %{version}-%{release} +Provides: gfortran = %{version}-%{release} Autoreq: true %description gfortran @@ -436,6 +442,8 @@ This package contains static Fortran libraries. Summary: D support Requires: gcc = %{version}-%{release} Requires: libgphobos = %{version}-%{release} +Provides: gcc-d = %{version}-%{release} +Provides: gdc = %{version}-%{release} Autoreq: true %description gdc @@ -688,6 +696,7 @@ Requires: libgo = %{version}-%{release} Requires: libgo-devel = %{version}-%{release} Requires(post): %{_sbindir}/update-alternatives Requires(postun): %{_sbindir}/update-alternatives +Provides: gccgo = %{version}-%{release} Autoreq: true %description go @@ -763,6 +772,8 @@ to NVidia PTX capable devices if available. %patch12 -p0 -b .pr88714~ %patch13 -p0 -b .pr89014~ %patch14 -p0 -b .pr89093~ +%patch15 -p0 -b .pr88977~ +%patch16 -p0 -b .pr89229~ cd nvptx-tools-%{nvptx_tools_gitrev} %patch1000 -p1 -b .nvptx-tools-no-ptxas~ @@ -2951,6 +2962,25 @@ end %endif %changelog +* Sat Feb 9 2019 Jakub Jelinek 9.0.1-0.4 +- update from trunk + - PRs c++/44648, c++/71302, c++/86218, c++/87770, c++/89158, c++/89187, + c/69661, c/88584, c/88606, c/88698, c/89211, debug/87451, + fortran/52789, fortran/71860, fortran/88912, fortran/89077, + fortran/89185, gcov-profile/89000, go/89019, ipa/88985, + libbacktrace/78063, libstdc++/71044, libstdc++/87106, libstdc++/89090, + libstdc++/89102, libstdc++/89128, libstdc++/89130, libstdc++/89194, + middle-end/88560, middle-end/89150, middle-end/89210, + middle-end/89223, middle-end/89246, rtl-optimization/11304, + rtl-optimization/89195, rtl-optimization/89225, + rtl-optimization/89234, target/88343, target/88856, target/89112, + target/89186, target/89188, target/89229, testsuite/89250, + testsuite/89258, tree-optimization/86637, tree-optimization/89182, + tree-optimization/89235, tree-optimization/89247 +- add gcc-g++ and g++ provides to gcc-c++, gcc-fortran and gfortran + provides to gcc-gfortran, gcc-d and gdc provides to gcc-gdc and gccgo + provides to gcc-go + * Sun Feb 3 2019 Jakub Jelinek 9.0.1-0.3 - update from trunk - PRs c++/80864, c++/86943, c++/87175, c++/88325, c++/88752, c++/88761, diff --git a/gcc9-pr88714.patch b/gcc9-pr88714.patch index 3a02e7e..4f1e255 100644 --- a/gcc9-pr88714.patch +++ b/gcc9-pr88714.patch @@ -1,122 +1,32 @@ -2019-01-17 Jakub Jelinek +2019-02-08 Jakub Jelinek PR bootstrap/88714 - * config/arm/ldrdstrd.md: If alias sets on the SImode MEMs are - different, clear alias set on the DImode MEM. Clear MEM_EXPR. + * config/arm/ldrdstrd.md (*arm_ldrd, *arm_strd): Use q constraint + instead of r. - * gcc.c-torture/execute/pr88714.c: New test. - ---- gcc/config/arm/ldrdstrd.md.jj 2019-01-16 09:35:03.851334889 +0100 -+++ gcc/config/arm/ldrdstrd.md 2019-01-17 17:37:40.860791779 +0100 -@@ -39,6 +39,10 @@ (define_peephole2 ; ldrd - /* In ARM state, the destination registers of LDRD/STRD must be - consecutive. We emit DImode access. */ - operands[0] = gen_rtx_REG (DImode, REGNO (operands[0])); -+ if (MEM_ALIAS_SET (operands[2]) -+ && MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3])) -+ set_mem_alias_set (operands[2], 0); -+ set_mem_expr (operands[2], NULL_TREE); - operands[2] = adjust_address (operands[2], DImode, 0); - /* Emit [(set (match_dup 0) (match_dup 2))] */ - emit_insn (gen_rtx_SET (operands[0], operands[2])); -@@ -71,6 +75,10 @@ (define_peephole2 ; strd - /* In ARM state, the destination registers of LDRD/STRD must be - consecutive. We emit DImode access. */ - operands[0] = gen_rtx_REG (DImode, REGNO (operands[0])); -+ if (MEM_ALIAS_SET (operands[2]) -+ && MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3])) -+ set_mem_alias_set (operands[2], 0); -+ set_mem_expr (operands[2], NULL_TREE); - operands[2] = adjust_address (operands[2], DImode, 0); - /* Emit [(set (match_dup 2) (match_dup 0))] */ - emit_insn (gen_rtx_SET (operands[2], operands[0])); -@@ -106,6 +114,10 @@ (define_peephole2 ; strd of constants - else if (TARGET_ARM) +--- gcc/config/arm/ldrdstrd.md.jj 2019-02-08 11:25:42.368916124 +0100 ++++ gcc/config/arm/ldrdstrd.md 2019-02-08 12:38:33.647585108 +0100 +@@ -157,9 +157,9 @@ (define_peephole2 ; swap the destination + ;; We use gen_operands_ldrd_strd() with a modify argument as false so that the + ;; operands are not changed. + (define_insn "*arm_ldrd" +- [(parallel [(set (match_operand:SI 0 "s_register_operand" "=r") ++ [(parallel [(set (match_operand:SI 0 "s_register_operand" "=q") + (match_operand:SI 2 "memory_operand" "m")) +- (set (match_operand:SI 1 "s_register_operand" "=r") ++ (set (match_operand:SI 1 "s_register_operand" "=q") + (match_operand:SI 3 "memory_operand" "m"))])] + "TARGET_LDRD && TARGET_ARM && reload_completed + && valid_operands_ldrd_strd (operands, true)" +@@ -178,9 +178,9 @@ (define_insn "*arm_ldrd" + + (define_insn "*arm_strd" + [(parallel [(set (match_operand:SI 2 "memory_operand" "=m") +- (match_operand:SI 0 "s_register_operand" "r")) ++ (match_operand:SI 0 "s_register_operand" "q")) + (set (match_operand:SI 3 "memory_operand" "=m") +- (match_operand:SI 1 "s_register_operand" "r"))])] ++ (match_operand:SI 1 "s_register_operand" "q"))])] + "TARGET_LDRD && TARGET_ARM && reload_completed + && valid_operands_ldrd_strd (operands, false)" { - rtx tmp = gen_rtx_REG (DImode, REGNO (operands[0])); -+ if (MEM_ALIAS_SET (operands[2]) -+ && MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3])) -+ set_mem_alias_set (operands[2], 0); -+ set_mem_expr (operands[2], NULL_TREE); - operands[2] = adjust_address (operands[2], DImode, 0); - /* Emit the pattern: - [(set (match_dup 0) (match_dup 4)) -@@ -149,6 +161,10 @@ (define_peephole2 ; strd of constants - else if (TARGET_ARM) - { - rtx tmp = gen_rtx_REG (DImode, REGNO (operands[0])); -+ if (MEM_ALIAS_SET (operands[2]) -+ && MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3])) -+ set_mem_alias_set (operands[2], 0); -+ set_mem_expr (operands[2], NULL_TREE); - operands[2] = adjust_address (operands[2], DImode, 0); - /* Emit the pattern - [(set (match_dup 0) (match_dup 4)) -@@ -203,6 +219,10 @@ (define_peephole2 ; swap the destination - else - { - operands[0] = gen_rtx_REG (DImode, REGNO (operands[0])); -+ if (MEM_ALIAS_SET (operands[2]) -+ && MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3])) -+ set_mem_alias_set (operands[2], 0); -+ set_mem_expr (operands[2], NULL_TREE); - operands[2] = adjust_address (operands[2], DImode, 0); - } - } -@@ -238,6 +258,10 @@ (define_peephole2 ; swap the destination - else - { - operands[0] = gen_rtx_REG (DImode, REGNO (operands[0])); -+ if (MEM_ALIAS_SET (operands[2]) -+ && MEM_ALIAS_SET (operands[2]) != MEM_ALIAS_SET (operands[3])) -+ set_mem_alias_set (operands[2], 0); -+ set_mem_expr (operands[2], NULL_TREE); - operands[2] = adjust_address (operands[2], DImode, 0); - } - } ---- gcc/testsuite/gcc.c-torture/execute/pr88714.c.jj 2019-01-17 17:39:42.074828164 +0100 -+++ gcc/testsuite/gcc.c-torture/execute/pr88714.c 2019-01-17 17:21:26.810575783 +0100 -@@ -0,0 +1,43 @@ -+/* PR bootstrap/88714 */ -+ -+struct S { int a, b, c; int *d; }; -+struct T { int *e, *f, *g; } *t = 0; -+int *o = 0; -+ -+__attribute__((noipa)) -+void bar (int *x, int y, int z, int w) -+{ -+ if (w == -1) -+ { -+ if (x != 0 || y != 0 || z != 0) -+ __builtin_abort (); -+ } -+ else if (w != 0 || x != t->g || y != 0 || z != 12) -+ __builtin_abort (); -+} -+ -+__attribute__((noipa)) void -+foo (struct S *x, struct S *y, int *z, int w) -+{ -+ *o = w; -+ if (w) -+ bar (0, 0, 0, -1); -+ x->d = z; -+ if (y->d) -+ y->c = y->c + y->d[0]; -+ bar (t->g, 0, y->c, 0); -+} -+ -+int -+main () -+{ -+ int a[4] = { 8, 9, 10, 11 }; -+ struct S s = { 1, 2, 3, &a[0] }; -+ struct T u = { 0, 0, &a[3] }; -+ o = &a[2]; -+ t = &u; -+ foo (&s, &s, &a[1], 5); -+ if (s.c != 12 || s.d != &a[1]) -+ __builtin_abort (); -+ return 0; -+} diff --git a/gcc9-pr88977.patch b/gcc9-pr88977.patch new file mode 100644 index 0000000..f60b984 --- /dev/null +++ b/gcc9-pr88977.patch @@ -0,0 +1,48 @@ +2019-02-08 Jakub Jelinek + + PR c++/88977 + * pt.c (convert_nontype_argument): Pass true as manifestly_const_eval + to maybe_constant_value calls. + + * g++.dg/cpp2a/is-constant-evaluated7.C: New test. + +--- gcc/cp/pt.c.jj 2019-02-05 10:04:19.038028029 +0100 ++++ gcc/cp/pt.c 2019-02-08 09:46:23.370257199 +0100 +@@ -6821,12 +6821,14 @@ convert_nontype_argument (tree type, tre + /* Make sure we return NULL_TREE only if we have really issued + an error, as described above. */ + return (complain & tf_error) ? NULL_TREE : error_mark_node; +- expr = maybe_constant_value (expr); ++ expr = maybe_constant_value (expr, NULL_TREE, ++ /*manifestly_const_eval=*/true); + expr = convert_from_reference (expr); + } + else if (TYPE_PTR_OR_PTRMEM_P (type)) + { +- tree folded = maybe_constant_value (expr); ++ tree folded = maybe_constant_value (expr, NULL_TREE, ++ /*manifestly_const_eval=*/true); + if (TYPE_PTR_P (type) ? integer_zerop (folded) + : null_member_pointer_value_p (folded)) + expr = folded; +--- gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated7.C.jj 2019-02-08 09:53:47.255935430 +0100 ++++ gcc/testsuite/g++.dg/cpp2a/is-constant-evaluated7.C 2019-02-08 09:49:45.159957823 +0100 +@@ -0,0 +1,18 @@ ++// P0595R2 ++// PR c++/88977 ++// { dg-do compile { target c++11 } } ++ ++namespace std { ++ constexpr inline bool ++ is_constant_evaluated () noexcept ++ { ++ return __builtin_is_constant_evaluated (); ++ } ++} ++ ++template constexpr bool foo () { return B; } ++ ++constexpr bool x = foo (); ++constexpr bool y = foo<__builtin_is_constant_evaluated ()> (); ++static_assert (x, ""); ++static_assert (y, ""); diff --git a/gcc9-pr89229.patch b/gcc9-pr89229.patch new file mode 100644 index 0000000..97e59e4 --- /dev/null +++ b/gcc9-pr89229.patch @@ -0,0 +1,54 @@ +2019-02-09 Jakub Jelinek + + Revert: + 2019-02-08 H.J. Lu + + PR target/89229 + * config/i386/i386.md (*movoi_internal_avx): Set mode to XI for + upper 16 vector registers without TARGET_AVX512VL. + (*movti_internal): Likewise. + + Revert: + 2019-02-07 H.J. Lu + + PR target/89229 + * config/i386/i386.md (*movoi_internal_avx): Set mode to OI + for TARGET_AVX512VL. + (*movti_internal): Set mode to TI for TARGET_AVX512VL. + +--- gcc/config/i386/i386.md (revision 268678) ++++ gcc/config/i386/i386.md (revision 268656) +@@ -1933,13 +1933,12 @@ (define_insn "*movoi_internal_avx" + (set_attr "type" "sselog1,sselog1,ssemov,ssemov") + (set_attr "prefix" "vex") + (set (attr "mode") +- (cond [(and (not (match_test "TARGET_AVX512VL")) +- (ior (match_operand 0 "ext_sse_reg_operand") +- (match_operand 1 "ext_sse_reg_operand"))) ++ (cond [(ior (match_operand 0 "ext_sse_reg_operand") ++ (match_operand 1 "ext_sse_reg_operand")) + (const_string "XI") + (and (eq_attr "alternative" "1") + (match_test "TARGET_AVX512VL")) +- (const_string "OI") ++ (const_string "XI") + (ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") + (and (eq_attr "alternative" "3") + (match_test "TARGET_SSE_TYPELESS_STORES"))) +@@ -2013,13 +2012,12 @@ (define_insn "*movti_internal" + (set (attr "mode") + (cond [(eq_attr "alternative" "0,1") + (const_string "DI") +- (and (not (match_test "TARGET_AVX512VL")) +- (ior (match_operand 0 "ext_sse_reg_operand") +- (match_operand 1 "ext_sse_reg_operand"))) ++ (ior (match_operand 0 "ext_sse_reg_operand") ++ (match_operand 1 "ext_sse_reg_operand")) + (const_string "XI") + (and (eq_attr "alternative" "3") + (match_test "TARGET_AVX512VL")) +- (const_string "TI") ++ (const_string "XI") + (ior (not (match_test "TARGET_SSE2")) + (ior (match_test "TARGET_SSE_PACKED_SINGLE_INSN_OPTIMAL") + (and (eq_attr "alternative" "5") diff --git a/sources b/sources index c984ae5..e5cbf71 100644 --- a/sources +++ b/sources @@ -1,3 +1,3 @@ -SHA512 (gcc-9.0.1-20190203.tar.xz) = e82e8f94fde788c57a688db80b7d763cf636621f588bea3ba807118c6fde0177262f72b150f918dcd892fec614400da5fecb15f432ae67cd0333aaca5d6640c9 +SHA512 (gcc-9.0.1-20190209.tar.xz) = d61c5b50c6dc1b3185dfe66261885612cbb0fddb4a150ddca9015b100aaf0ec78c9efa7c31c8278e0201d713ab150168abd293fa4881630f03ec35827d0a23b6 SHA512 (nvptx-newlib-aadc8eb0ec43b7cd0dd2dfb484bae63c8b05ef24.tar.xz) = 94f7089365296f7dfa485107b4143bebc850a81586f3460fd896bbbb6ba099a00217d4042133424fd2183b352132f4fd367e6a60599bdae2a26dfd48a77d0e04 SHA512 (nvptx-tools-c28050f60193b3b95a18866a96f03334e874e78f.tar.xz) = a688cb12cf805950a5abbb13b52f45c81dbee98e310b7ed57ae20e76dbfa5964a16270148374a6426d177db71909d28360490f091c86a5d19d4faa5127beeee1