Hello community,

here is the log from the commit of package gcc7 for openSUSE:Factory checked in 
at 2020-09-24 16:12:17
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/gcc7 (Old)
 and      /work/SRC/openSUSE:Factory/.gcc7.new.4249 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "gcc7"

Thu Sep 24 16:12:17 2020 rev:29 rq:835760 version:7.5.0+r278197

Changes:
--------
--- /work/SRC/openSUSE:Factory/gcc7/cross-aarch64-gcc7.changes  2020-03-05 
23:16:11.473106270 +0100
+++ /work/SRC/openSUSE:Factory/.gcc7.new.4249/cross-aarch64-gcc7.changes        
2020-09-24 16:12:29.504793461 +0200
@@ -1,0 +2,18 @@
+Fri Sep 18 07:25:53 UTC 2020 - Guillaume GARDET <guillaume.gar...@opensuse.org>
+
+- Remove -mbranch-protection=standard (aarch64 flag) when gcc7 is
+  used to build gcc7 (ie when ada is enabled)
+
+-------------------------------------------------------------------
+Mon Mar 16 07:20:32 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Add gcc7-pr94148.patch to fix corruption of pass private ->aux
+  via DF.  [gcc#94148]
+
+-------------------------------------------------------------------
+Wed Mar  4 12:58:17 UTC 2020 - Richard Biener <rguent...@suse.com>
+
+- Add gcc7-pr93888.patch to fix debug information issue with
+  inlined functions and passed by reference arguments.  [gcc#93888]
+
+-------------------------------------------------------------------
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

New:
----
  gcc7-pr93888.patch
  gcc7-pr94148.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ cross-aarch64-gcc7.spec ++++++
--- /var/tmp/diff_new_pack.ZxY1nX/_old  2020-09-24 16:12:53.200817162 +0200
+++ /var/tmp/diff_new_pack.ZxY1nX/_new  2020-09-24 16:12:53.204817167 +0200
@@ -132,6 +132,8 @@
 Patch23:        gcc7-pr92692.patch
 Patch24:        gcc48-bsc1161913.patch
 Patch25:        gcc7-pr93965.patch
+Patch26:        gcc7-pr93888.patch
+Patch27:        gcc7-pr94148.patch
 # A set of patches from the RH srpm
 Patch51:        gcc41-ppc32-retaddr.patch
 # Some patches taken from Debian
@@ -285,6 +287,8 @@
 %patch23 -p1
 %patch24 -p1
 %patch25 -p1
+%patch26 -p1
+%patch27 -p1
 %patch51
 %patch60
 %patch61
@@ -318,6 +322,12 @@
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fsigned-char//g'`
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-O1/-O2/g'`
 %endif
+%ifarch aarch64
+%if %{build_ada}
+# -mbranch-protection=standard flag is unsupported in gcc7 and we use GCC7 to 
build GCC7
+RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mbranch-protection=standard//g'`
+%endif
+%endif
 %if 0%{?gcc_target_arch:1}
 # Kill all -march/tune/cpu because that screws building the target libs
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'`

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.ZxY1nX/_old  2020-09-24 16:12:53.740817703 +0200
+++ /var/tmp/diff_new_pack.ZxY1nX/_new  2020-09-24 16:12:53.740817703 +0200
@@ -307,6 +307,8 @@
 Patch23:        gcc7-pr92692.patch
 Patch24:        gcc48-bsc1161913.patch
 Patch25:        gcc7-pr93965.patch
+Patch26:        gcc7-pr93888.patch
+Patch27:        gcc7-pr94148.patch
 # A set of patches from the RH srpm
 Patch51:        gcc41-ppc32-retaddr.patch
 # Some patches taken from Debian
@@ -1766,6 +1768,8 @@
 %patch23 -p1
 %patch24 -p1
 %patch25 -p1
+%patch26 -p1
+%patch27 -p1
 %patch51
 %patch60
 %patch61
@@ -1799,6 +1803,12 @@
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fsigned-char//g'`
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-O1/-O2/g'`
 %endif
+%ifarch aarch64
+%if %{build_ada}
+# -mbranch-protection=standard flag is unsupported in gcc7 and we use GCC7 to 
build GCC7
+RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mbranch-protection=standard//g'`
+%endif
+%endif
 %if 0%{?gcc_target_arch:1}
 # Kill all -march/tune/cpu because that screws building the target libs
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'`

++++++ gcc.spec.in ++++++
--- /var/tmp/diff_new_pack.ZxY1nX/_old  2020-09-24 16:12:53.888817850 +0200
+++ /var/tmp/diff_new_pack.ZxY1nX/_new  2020-09-24 16:12:53.892817855 +0200
@@ -313,6 +313,8 @@
 Patch23:       gcc7-pr92692.patch
 Patch24:       gcc48-bsc1161913.patch
 Patch25:       gcc7-pr93965.patch
+Patch26:       gcc7-pr93888.patch
+Patch27:       gcc7-pr94148.patch
 # A set of patches from the RH srpm
 Patch51:       gcc41-ppc32-retaddr.patch
 # Some patches taken from Debian
@@ -1076,6 +1078,8 @@
 %patch23 -p1
 %patch24 -p1
 %patch25 -p1
+%patch26 -p1
+%patch27 -p1
 %patch51
 %patch60
 %patch61
@@ -1109,6 +1113,12 @@
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-fsigned-char//g'`
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-O1/-O2/g'`
 %endif
+%ifarch aarch64
+%if %{build_ada}
+# -mbranch-protection=standard flag is unsupported in gcc7 and we use GCC7 to 
build GCC7
+RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-mbranch-protection=standard//g'`
+%endif
+%endif
 %if 0%{?gcc_target_arch:1}
 # Kill all -march/tune/cpu because that screws building the target libs
 RPM_OPT_FLAGS=`echo $RPM_OPT_FLAGS|sed -e 's/-m\(arch\|tune\|cpu\)=[^ ]*//g'`

++++++ gcc7-pr93888.patch ++++++
commit 64ba6d17022eeb65f56f0b141c2640f9ab938f97
Author: Jakub Jelinek <ja...@redhat.com>
Date:   Wed Mar 4 12:59:04 2020 +0100

    inliner: Copy DECL_BY_REFERENCE in copy_decl_to_var [PR93888]
    
    In the following testcase we emit wrong debug info for the karg
    parameter in the DW_TAG_inlined_subroutine into main.
    The problem is that the karg PARM_DECL is DECL_BY_REFERENCE and thus
    in the IL has const K & type, but in the source just const K.
    When the function is inlined, we create a VAR_DECL for it, but don't
    set DECL_BY_REFERENCE, so when emitting DW_AT_location, we treat it like
    a const K & typed variable, but it has DW_AT_abstract_origin which has
    just the const K type and thus the debugger thinks the variable has
    const K type.
    
    Fixed by copying the DECL_BY_REFERENCE flag.  Not doing it in
    copy_decl_for_dup_finish, because copy_decl_no_change already copies
    that flag through copy_node and in copy_result_decl_to_var it is
    undesirable, as we handle DECL_BY_REFERENCE in that case instead
    by changing the type.
    
    2020-03-04  Jakub Jelinek  <ja...@redhat.com>
    
            PR debug/93888
            * tree-inline.c (copy_decl_to_var): Copy DECL_BY_REFERENCE flag.
    
            * g++.dg/guality/pr93888.C: New test.

diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 23941dade55..59798ec0454 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -5929,6 +5929,7 @@ copy_decl_to_var (tree decl, copy_body_data *id)
   TREE_READONLY (copy) = TREE_READONLY (decl);
   TREE_THIS_VOLATILE (copy) = TREE_THIS_VOLATILE (decl);
   DECL_GIMPLE_REG_P (copy) = DECL_GIMPLE_REG_P (decl);
+  DECL_BY_REFERENCE (copy) = DECL_BY_REFERENCE (decl);
 
   return copy_decl_for_dup_finish (id, decl, copy);
 }
++++++ gcc7-pr94148.patch ++++++
commit 5c7e6d4bdf879b437b43037e10453275acabf521
Author: Segher Boessenkool <seg...@kernel.crashing.org>
Date:   Thu Mar 12 07:12:50 2020 +0000

    df: Don't abuse bb->aux (PR94148, PR94042)
    
    The df dataflow solvers use the aux field in the basic_block struct,
    although that is reserved for any use by passes.  And not only that,
    it is required that you set all such fields to NULL before calling
    the solvers, or you quietly get wrong results.
    
    This changes the solvers to use a local array for last_change_age
    instead, just like it already had a local array for last_visit_age.
    
            PR rtl-optimization/94148
            PR rtl-optimization/94042
            * df-core.c (BB_LAST_CHANGE_AGE): Delete.
            (df_worklist_propagate_forward): New parameter last_change_age, use
            that instead of bb->aux.
            (df_worklist_propagate_backward): Ditto.
            (df_worklist_dataflow_doublequeue): Use a local array 
last_change_age.

diff --git a/gcc/df-core.c b/gcc/df-core.c
index 346849e31be..9875a26895c 100644
--- a/gcc/df-core.c
+++ b/gcc/df-core.c
@@ -871,9 +871,6 @@ make_pass_df_finish (gcc::context *ctxt)
    The general data flow analysis engine.
 ----------------------------------------------------------------------------*/
 
-/* Return time BB when it was visited for last time.  */
-#define BB_LAST_CHANGE_AGE(bb) ((ptrdiff_t)(bb)->aux)
-
 /* Helper function for df_worklist_dataflow.
    Propagate the dataflow forward.
    Given a BB_INDEX, do the dataflow propagation
@@ -897,7 +894,8 @@ df_worklist_propagate_forward (struct dataflow *dataflow,
                                unsigned *bbindex_to_postorder,
                                bitmap pending,
                                sbitmap considered,
-                              ptrdiff_t age)
+                              vec<int> &last_change_age,
+                              int age)
 {
   edge e;
   edge_iterator ei;
@@ -908,7 +906,8 @@ df_worklist_propagate_forward (struct dataflow *dataflow,
   if (EDGE_COUNT (bb->preds) > 0)
     FOR_EACH_EDGE (e, ei, bb->preds)
       {
-        if (age <= BB_LAST_CHANGE_AGE (e->src)
+       if (bbindex_to_postorder[e->src->index] < last_change_age.length ()
+           && age <= last_change_age[bbindex_to_postorder[e->src->index]]
            && bitmap_bit_p (considered, e->src->index))
           changed |= dataflow->problem->con_fun_n (e);
       }
@@ -942,7 +941,8 @@ df_worklist_propagate_backward (struct dataflow *dataflow,
                                 unsigned *bbindex_to_postorder,
                                 bitmap pending,
                                 sbitmap considered,
-                               ptrdiff_t age)
+                               vec<int> &last_change_age,
+                               int age)
 {
   edge e;
   edge_iterator ei;
@@ -953,7 +953,8 @@ df_worklist_propagate_backward (struct dataflow *dataflow,
   if (EDGE_COUNT (bb->succs) > 0)
     FOR_EACH_EDGE (e, ei, bb->succs)
       {
-        if (age <= BB_LAST_CHANGE_AGE (e->dest)
+       if (bbindex_to_postorder[e->dest->index] < last_change_age.length ()
+           && age <= last_change_age[bbindex_to_postorder[e->dest->index]]
            && bitmap_bit_p (considered, e->dest->index))
           changed |= dataflow->problem->con_fun_n (e);
       }
@@ -991,10 +992,10 @@ df_worklist_propagate_backward (struct dataflow *dataflow,
    worklists (we are processing WORKLIST and storing new BBs to visit in
    PENDING).
 
-   As an optimization we maintain ages when BB was changed (stored in bb->aux)
-   and when it was last visited (stored in last_visit_age).  This avoids need
-   to re-do confluence function for edges to basic blocks whose source
-   did not change since destination was visited last time.  */
+   As an optimization we maintain ages when BB was changed (stored in
+   last_change_age) and when it was last visited (stored in last_visit_age).
+   This avoids need to re-do confluence function for edges to basic blocks
+   whose source did not change since destination was visited last time.  */
 
 static void
 df_worklist_dataflow_doublequeue (struct dataflow *dataflow,
@@ -1010,11 +1011,11 @@ df_worklist_dataflow_doublequeue (struct dataflow 
*dataflow,
   int age = 0;
   bool changed;
   vec<int> last_visit_age = vNULL;
+  vec<int> last_change_age = vNULL;
   int prev_age;
-  basic_block bb;
-  int i;
 
   last_visit_age.safe_grow_cleared (n_blocks);
+  last_change_age.safe_grow_cleared (n_blocks);
 
   /* Double-queueing. Worklist is for the current iteration,
      and pending is for the next. */
@@ -1032,30 +1033,30 @@ df_worklist_dataflow_doublequeue (struct dataflow 
*dataflow,
 
          bitmap_clear_bit (pending, index);
          bb_index = blocks_in_postorder[index];
-         bb = BASIC_BLOCK_FOR_FN (cfun, bb_index);
          prev_age = last_visit_age[index];
          if (dir == DF_FORWARD)
            changed = df_worklist_propagate_forward (dataflow, bb_index,
                                                     bbindex_to_postorder,
                                                     pending, considered,
+                                                    last_change_age,
                                                     prev_age);
          else
            changed = df_worklist_propagate_backward (dataflow, bb_index,
                                                      bbindex_to_postorder,
                                                      pending, considered,
+                                                     last_change_age,
                                                      prev_age);
          last_visit_age[index] = ++age;
          if (changed)
-           bb->aux = (void *)(ptrdiff_t)age;
+           last_change_age[index] = age;
        }
       bitmap_clear (worklist);
     }
-  for (i = 0; i < n_blocks; i++)
-    BASIC_BLOCK_FOR_FN (cfun, blocks_in_postorder[i])->aux = NULL;
 
   BITMAP_FREE (worklist);
   BITMAP_FREE (pending);
   last_visit_age.release ();
+  last_change_age.release ();
 
   /* Dump statistics. */
   if (dump_file)

Reply via email to