Hello community, here is the log from the commit of package gcc7 for openSUSE:Factory checked in at 2019-11-18 20:04:17 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/gcc7 (Old) and /work/SRC/openSUSE:Factory/.gcc7.new.26869 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "gcc7" Mon Nov 18 20:04:17 2019 rev:26 rq:748682 version:7.5.0+r278197 Changes: -------- --- /work/SRC/openSUSE:Factory/gcc7/cross-aarch64-gcc7.changes 2019-09-27 14:42:43.089658800 +0200 +++ /work/SRC/openSUSE:Factory/.gcc7.new.26869/cross-aarch64-gcc7.changes 2019-11-18 20:04:24.293773233 +0100 @@ -1,0 +2,13 @@ +Thu Nov 14 09:29:39 UTC 2019 - Richard Biener <[email protected]> + +- Update to GCC 7.5.0 release. +- Add gcc7-pr85887.patch to fix miscompilation with thread-safe local + static initialization. [gcc#85887] + +------------------------------------------------------------------- +Wed Oct 2 07:46:40 UTC 2019 - Richard Biener <[email protected]> + +- Add gcc7-bsc1146475.patch to fix debug info created for array + definitions that complete an earlier declaration. [bsc#1146475] + +------------------------------------------------------------------- cross-arm-gcc7.changes: same change cross-arm-none-gcc7-bootstrap.changes: same change cross-arm-none-gcc7.changes: same change cross-avr-gcc7-bootstrap.changes: same change cross-avr-gcc7.changes: same change cross-epiphany-gcc7-bootstrap.changes: same change cross-epiphany-gcc7.changes: same change cross-hppa-gcc7.changes: same change cross-i386-gcc7.changes: same change cross-m68k-gcc7.changes: same change cross-mips-gcc7.changes: same change cross-nvptx-gcc7.changes: same change cross-ppc64-gcc7.changes: same change cross-ppc64le-gcc7.changes: same change cross-rx-gcc7-bootstrap.changes: same change cross-rx-gcc7.changes: same change cross-s390x-gcc7.changes: same change cross-sparc-gcc7.changes: same change cross-sparc64-gcc7.changes: same change cross-x86_64-gcc7.changes: same change gcc7-testresults.changes: same change gcc7.changes: same change Old: ---- gcc-7.4.1+r275405.tar.xz New: ---- gcc-7.5.0+r278197.tar.xz gcc7-bsc1146475.patch gcc7-pr85887.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ cross-aarch64-gcc7.spec ++++++ --- /var/tmp/diff_new_pack.vveMit/_old 2019-11-18 20:05:20.005745267 +0100 +++ /var/tmp/diff_new_pack.vveMit/_new 2019-11-18 20:05:20.009745265 +0100 @@ -102,7 +102,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 7.4.1+r275405 +Version: 7.5.0+r278197 Release: 0 %define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1) %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/') @@ -124,6 +124,8 @@ Patch14: gcc7-pr82248.diff Patch15: gcc7-avoid-fixinc-error.diff Patch17: gcc7-flive-patching.patch +Patch18: gcc7-bsc1146475.patch +Patch19: gcc7-pr85887.patch # A set of patches from the RH srpm Patch51: gcc41-ppc32-retaddr.patch # Some patches taken from Debian @@ -269,6 +271,8 @@ %patch14 %patch15 %patch17 -p1 +%patch18 +%patch19 %patch51 %patch60 %patch61 cross-arm-gcc7.spec: same change cross-arm-none-gcc7-bootstrap.spec: same change cross-arm-none-gcc7.spec: same change cross-avr-gcc7-bootstrap.spec: same change cross-avr-gcc7.spec: same change cross-epiphany-gcc7-bootstrap.spec: same change cross-epiphany-gcc7.spec: same change cross-hppa-gcc7.spec: same change cross-i386-gcc7.spec: same change cross-m68k-gcc7.spec: same change cross-mips-gcc7.spec: same change cross-nvptx-gcc7.spec: same change cross-ppc64-gcc7.spec: same change cross-ppc64le-gcc7.spec: same change cross-rx-gcc7-bootstrap.spec: same change cross-rx-gcc7.spec: same change cross-s390x-gcc7.spec: same change cross-sparc-gcc7.spec: same change cross-sparc64-gcc7.spec: same change cross-x86_64-gcc7.spec: same change gcc7-testresults.spec: same change ++++++ gcc7.spec ++++++ --- /var/tmp/diff_new_pack.vveMit/_old 2019-11-18 20:05:20.513745013 +0100 +++ /var/tmp/diff_new_pack.vveMit/_new 2019-11-18 20:05:20.513745013 +0100 @@ -235,7 +235,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 7.4.1+r275405 +Version: 7.5.0+r278197 Release: 0 %define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1) %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/') @@ -299,6 +299,8 @@ Patch14: gcc7-pr82248.diff Patch15: gcc7-avoid-fixinc-error.diff Patch17: gcc7-flive-patching.patch +Patch18: gcc7-bsc1146475.patch +Patch19: gcc7-pr85887.patch # A set of patches from the RH srpm Patch51: gcc41-ppc32-retaddr.patch # Some patches taken from Debian @@ -1750,6 +1752,8 @@ %patch14 %patch15 %patch17 -p1 +%patch18 +%patch19 %patch51 %patch60 %patch61 ++++++ gcc-7.4.1+r275405.tar.xz -> gcc-7.5.0+r278197.tar.xz ++++++ /work/SRC/openSUSE:Factory/gcc7/gcc-7.4.1+r275405.tar.xz /work/SRC/openSUSE:Factory/.gcc7.new.26869/gcc-7.5.0+r278197.tar.xz differ: char 26, line 1 ++++++ gcc.spec.in ++++++ --- /var/tmp/diff_new_pack.vveMit/_old 2019-11-18 20:05:20.689744924 +0100 +++ /var/tmp/diff_new_pack.vveMit/_new 2019-11-18 20:05:20.689744924 +0100 @@ -239,7 +239,7 @@ %define biarch_targets x86_64 s390x powerpc64 powerpc sparc sparc64 URL: https://gcc.gnu.org/ -Version: 7.4.1+r275405 +Version: 7.5.0+r278197 Release: 1 %define gcc_dir_version %(echo %version | sed 's/+.*//' | cut -d '.' -f 1) %define gcc_snapshot_revision %(echo %version | sed 's/[3-9]\.[0-9]\.[0-6]//' | sed 's/+/-/') @@ -304,7 +304,9 @@ Patch12: gcc7-stack-probe.diff Patch14: gcc7-pr82248.diff Patch15: gcc7-avoid-fixinc-error.diff -Patch17: gcc7-flive-patching.patch +Patch17: gcc7-flive-patching.patch +Patch18: gcc7-bsc1146475.patch +Patch19: gcc7-pr85887.patch # A set of patches from the RH srpm Patch51: gcc41-ppc32-retaddr.patch # Some patches taken from Debian @@ -1060,6 +1062,8 @@ %patch14 %patch15 %patch17 -p1 +%patch18 +%patch19 %patch51 %patch60 %patch61 ++++++ gcc7-bsc1146475.patch ++++++ 2019-10-01 Alexandre Oliva <[email protected]> PR debug/91507 * dwarf2out.c (override_type_for_decl_p): New. (gen_variable_die): Use it. * gcc.dg/debug/dwarf2/array-0.c: New. * gcc.dg/debug/dwarf2/array-1.c: New. * gcc.dg/debug/dwarf2/array-2.c: New. * gcc.dg/debug/dwarf2/array-3.c: New. * g++.dg/debug/dwarf2/array-0.C: New. * g++.dg/debug/dwarf2/array-1.C: New. * g++.dg/debug/dwarf2/array-2.C: New. Based on libstdc++-v3's src/c++98/pool_allocator.cc:__pool_alloc_base::_S_heap_size. * g++.dg/debug/dwarf2/array-3.C: New. Based on gcc's config/i386/i386-features.c:xlogue_layout::s_instances. * g++.dg/debug/dwarf2/array-4.C: New. Index: gcc/testsuite/gcc.dg/debug/dwarf2/array-0.c =================================================================== --- gcc/testsuite/gcc.dg/debug/dwarf2/array-0.c (nonexistent) +++ gcc/testsuite/gcc.dg/debug/dwarf2/array-0.c (revision 276403) @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +extern int array[42]; + +int array[42]; + +/* Verify that we get only one DW_TAG_subtrange_type (plus abbrev), + with a DW_AT_upper_bound. */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 2 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 1 } } */ Index: gcc/testsuite/gcc.dg/debug/dwarf2/array-2.c =================================================================== --- gcc/testsuite/gcc.dg/debug/dwarf2/array-2.c (nonexistent) +++ gcc/testsuite/gcc.dg/debug/dwarf2/array-2.c (revision 276403) @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +int array[42]; + +/* Verify that we get only one DW_TAG_subtrange_type (plus abbrev) + with DW_AT_upper_bound. */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 2 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 1 } } */ Index: gcc/testsuite/gcc.dg/debug/dwarf2/array-1.c =================================================================== --- gcc/testsuite/gcc.dg/debug/dwarf2/array-1.c (nonexistent) +++ gcc/testsuite/gcc.dg/debug/dwarf2/array-1.c (revision 276403) @@ -0,0 +1,10 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +extern int array[]; + +int array[42]; + +/* Verify that we get two DW_TAG_subtrange_type (each with an abbrev), + but only one DW_AT_upper_bound. */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 4 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 1 } } */ Index: gcc/testsuite/gcc.dg/debug/dwarf2/array-3.c =================================================================== --- gcc/testsuite/gcc.dg/debug/dwarf2/array-3.c (nonexistent) +++ gcc/testsuite/gcc.dg/debug/dwarf2/array-3.c (revision 276403) @@ -0,0 +1,8 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +int array[] = { 0, 1, 2 }; + +/* Verify that we get only one DW_TAG_subtrange_type (plus abbrev) + with DW_AT_upper_bound. */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 2 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 1 } } */ Index: gcc/testsuite/g++.dg/debug/dwarf2/array-1.C =================================================================== --- gcc/testsuite/g++.dg/debug/dwarf2/array-1.C (nonexistent) +++ gcc/testsuite/g++.dg/debug/dwarf2/array-1.C (revision 276403) @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +struct S +{ + static int array[]; +}; + +int S::array[42]; + +/* Verify that we get two DW_TAG_subrange_type, only one of which with + a DW_AT_upper_bound. */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 4 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 1 } } */ Index: gcc/testsuite/g++.dg/debug/dwarf2/array-2.C =================================================================== --- gcc/testsuite/g++.dg/debug/dwarf2/array-2.C (nonexistent) +++ gcc/testsuite/g++.dg/debug/dwarf2/array-2.C (revision 276403) @@ -0,0 +1,15 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +struct S +{ + typedef int i_t; + static i_t array[42]; +}; + +int S::array[42]; + +/* Verify that we get two DW_TAG_subrange_type (plus abbrev), and two + DW_AT_upper_bound, because a different symbolic name is used for + the array element type. */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 3 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 2 } } */ Index: gcc/testsuite/g++.dg/debug/dwarf2/array-3.C =================================================================== --- gcc/testsuite/g++.dg/debug/dwarf2/array-3.C (nonexistent) +++ gcc/testsuite/g++.dg/debug/dwarf2/array-3.C (revision 276403) @@ -0,0 +1,20 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +struct S +{ + S() {} + ~S() {} + static const S array[2]; +}; + +const S S::array[2] = { S(), S() }; + +/* Verify that we get only one DW_TAG_subrange_type (plus the abbrev), + and one DW_AT_upper_bound (non-abbrev), because the array + definition loses the readonly wrapper for the array type because of + the dynamic initializers. The const types are 4: S, S*, int, and + S[4], plus the abbrev. A const version of S[4] doesn't make sense, + but we output it. */ +/* { dg-final { scan-assembler-times " DW_TAG_const_type" 5 } } */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 2 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 1 } } */ Index: gcc/testsuite/g++.dg/debug/dwarf2/array-0.C =================================================================== --- gcc/testsuite/g++.dg/debug/dwarf2/array-0.C (nonexistent) +++ gcc/testsuite/g++.dg/debug/dwarf2/array-0.C (revision 276403) @@ -0,0 +1,13 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +struct S +{ + static int array[42]; +}; + +int S::array[42]; + +/* Verify that we get only one DW_TAG_subrange_type with a + DW_AT_upper_bound. */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 2 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 1 } } */ Index: gcc/testsuite/g++.dg/debug/dwarf2/array-4.C =================================================================== --- gcc/testsuite/g++.dg/debug/dwarf2/array-4.C (nonexistent) +++ gcc/testsuite/g++.dg/debug/dwarf2/array-4.C (revision 276403) @@ -0,0 +1,16 @@ +/* { dg-do compile } */ +/* { dg-options "-gdwarf-2 -dA" } */ +struct S +{ + S() {} + ~S() {} +}; + +const S array[2] = { S(), S() }; + +/* Like array-3, but with a non-member array without a separate + declaration, to check that we don't issue the nonsensical + DW_TAG_const_type used by the member array declaration there. */ +/* { dg-final { scan-assembler-times " DW_TAG_const_type" 4 } } */ +/* { dg-final { scan-assembler-times " DW_TAG_subrange_type" 2 } } */ +/* { dg-final { scan-assembler-times " DW_AT_upper_bound" 1 } } */ Index: gcc/dwarf2out.c =================================================================== --- gcc/dwarf2out.c (revision 276402) +++ gcc/dwarf2out.c (revision 276403) @@ -23705,6 +23705,34 @@ local_function_static (tree decl) && TREE_CODE (DECL_CONTEXT (decl)) == FUNCTION_DECL; } +/* Return true iff DECL overrides (presumably completes) the type of + OLD_DIE within CONTEXT_DIE. */ + +static bool +override_type_for_decl_p (tree decl, dw_die_ref old_die, + dw_die_ref context_die) +{ + tree type = TREE_TYPE (decl); + int cv_quals; + + if (decl_by_reference_p (decl)) + { + type = TREE_TYPE (type); + cv_quals = TYPE_UNQUALIFIED; + } + else + cv_quals = decl_quals (decl); + + dw_die_ref type_die = modified_type_die (type, + cv_quals | TYPE_QUALS (type), + false, + context_die); + + dw_die_ref old_type_die = get_AT_ref (old_die, DW_AT_type); + + return type_die != old_type_die; +} + /* Generate a DIE to represent a declared data object. Either DECL or ORIGIN must be non-null. */ @@ -23957,7 +23985,9 @@ gen_variable_die (tree decl, tree origin && !DECL_ABSTRACT_P (decl_or_origin) && variably_modified_type_p (TREE_TYPE (decl_or_origin), decl_function_context - (decl_or_origin)))) + (decl_or_origin))) + || (old_die && specialization_p + && override_type_for_decl_p (decl_or_origin, old_die, context_die))) { tree type = TREE_TYPE (decl_or_origin); ++++++ gcc7-pr85887.patch ++++++ 2019-10-22 Jakub Jelinek <[email protected]> PR tree-optimization/85887 * decl.c (expand_static_init): Drop ECF_LEAF from __cxa_guard_acquire and __cxa_guard_release. Index: gcc/cp/decl.c =================================================================== --- gcc/cp/decl.c (revision 277292) +++ gcc/cp/decl.c (revision 277293) @@ -8589,14 +8589,14 @@ expand_static_init (tree decl, tree init (acquire_name, build_function_type_list (integer_type_node, TREE_TYPE (guard_addr), NULL_TREE), - NULL_TREE, ECF_NOTHROW | ECF_LEAF); + NULL_TREE, ECF_NOTHROW); if (!release_fn || !abort_fn) vfntype = build_function_type_list (void_type_node, TREE_TYPE (guard_addr), NULL_TREE); if (!release_fn) release_fn = push_library_fn (release_name, vfntype, NULL_TREE, - ECF_NOTHROW | ECF_LEAF); + ECF_NOTHROW); if (!abort_fn) abort_fn = push_library_fn (abort_name, vfntype, NULL_TREE, ECF_NOTHROW | ECF_LEAF);
