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);


Reply via email to