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)