From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from esa4.mentor.iphmx.com (esa4.mentor.iphmx.com [68.232.137.252]) by sourceware.org (Postfix) with ESMTPS id EF6143858D1E for ; Wed, 17 May 2023 07:05:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org EF6143858D1E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=codesourcery.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=mentor.com X-IronPort-AV: E=Sophos;i="5.99,281,1677571200"; d="scan'208";a="5632851" Received: from orw-gwy-01-in.mentorg.com ([192.94.38.165]) by esa4.mentor.iphmx.com with ESMTP; 16 May 2023 23:05:08 -0800 IronPort-SDR: 4zAE7CmhH1PW0JE5Df2lf7/45jUbWYX9122kRM2AVAFwTWo+JuPGpt40pel9DGWcF6sbFVbWtd Xb43hbQMsUOLcWYOl9cA1xz3eHfhGCEaBjVxIXvf7Uk5H6/qsIZU/n5OZsBWPe7xJaMxMxO3Du 9bub8Xzb021O0djSgEj377wsQ4MyLxcWvqQ1FvMdd8KXLY/AcB2/hLGDvV1HEJDSh9+P6TsXKL occr0s/C9wJa8MnzxotECSqp8MDOjKH9Q5ZIzqcGUfM73P4n0qbuUziOA9QorgOVVAmdaA501Y U94= From: Thomas Schwinge To: Richard Biener , Eugene Rozenfeld CC: Subject: Re: [EXTERNAL] Re: [PATCH] Fixes and workarounds for warnings during autoprofiledbootstrap build In-Reply-To: References: User-Agent: Notmuch/0.29.3+94~g74c3f1b (https://notmuchmail.org) Emacs/28.2 (x86_64-pc-linux-gnu) Date: Wed, 17 May 2023 09:05:01 +0200 Message-ID: <874joba15u.fsf@euler.schwinge.homeip.net> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-Originating-IP: [137.202.0.90] X-ClientProxiedBy: svr-ies-mbx-12.mgc.mentorg.com (139.181.222.12) To svr-ies-mbx-10.mgc.mentorg.com (139.181.222.10) X-Spam-Status: No, score=-11.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,KAM_DMARC_STATUS,SPF_HELO_PASS,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: Hi! On 2023-05-15T09:30:35+0200, Richard Biener via Gcc-patches wrote: > On Fri, May 12, 2023 at 10:35=E2=80=AFPM Eugene Rozenfeld > wrote: >> >> Thank you, Richard. I went with your suggestion. New patch: >> >> >> [PATCH] Disable warnings as errors for STAGEautofeedback. >> >> Compilation during STAGEautofeedback produces additional warnings >> since inlining decisions with -fauto-profile are different from >> other builds. >> >> This patches disables warnings as errors for STAGEautofeedback. > > Can you add a comment before the filtering? > > Otherwise looks good to me - please leave others 24h to comment before yo= u > commit. >> --- a/Makefile.in >> +++ b/Makefile.in >> @@ -590,8 +590,7 @@ STAGEautofeedback_CXXFLAGS =3D $(CXXFLAGS) >> STAGEautofeedback_CXXFLAGS =3D $(STAGEautofeedback_CFLAGS) >> @endif target-libstdc++-v3-bootstrap >> STAGEautofeedback_TFLAGS =3D $(STAGE_TFLAGS) >> -STAGEautofeedback_CONFIGURE_FLAGS =3D $(STAGE_CONFIGURE_FLAGS) >> - >> +STAGEautofeedback_CONFIGURE_FLAGS =3D $(filter-out --enable-werror-alwa= ys,$(STAGE_CONFIGURE_FLAGS)) That's not how it works; the next person running 'autogen Makefile.def' to regenerate 'Makefile.in' is going to undo those changes. Instead, modify 'Makefile.def', 'Makefile.tpl', and then 'autogen Makefile.def'. Gr=C3=BC=C3=9Fe Thomas >> -----Original Message----- >> From: Richard Biener >> Sent: Thursday, May 11, 2023 1:58 AM >> To: Eugene Rozenfeld >> Cc: gcc-patches@gcc.gnu.org >> Subject: Re: [EXTERNAL] Re: [PATCH] Fixes and workarounds for warnings d= uring autoprofiledbootstrap build >> >> On Thu, May 11, 2023 at 4:23=E2=80=AFAM Eugene Rozenfeld wrote: >> > >> > I'm ok with disabling warnings as errors for autoprofiledbootstrap. Wh= at's the proper way to do that? Searching for "--disable-werror" I see matc= hes in lib configure files but not in gcc files. >> >> We have --with-build-config selecting things like bootstrap-O3 and confi= gure then disables werror by default if the build config is anything other = than the default or bootstrap-debug. >> >> Of course profiledbootstrap and autoprofiledbootstrap are not build conf= igs but make targets - that makes it more difficult (or impossible) to use = the --disable-werror machinery here. >> >> There is >> >> STAGE_CONFIGURE_FLAGS=3D@stage2_werror_flag@ >> >> so it might be possible to filter out --enable-werror-always from STAGEa= utofeedback_CONFIGURE_FLAGS? >> >> Richard. >> >> > Thanks, >> > >> > Eugene >> > >> > -----Original Message----- >> > From: Richard Biener >> > Sent: Tuesday, May 9, 2023 11:40 PM >> > To: Eugene Rozenfeld >> > Cc: gcc-patches@gcc.gnu.org >> > Subject: [EXTERNAL] Re: [PATCH] Fixes and workarounds for warnings >> > during autoprofiledbootstrap build >> > >> > On Wed, May 10, 2023 at 3:38=E2=80=AFAM Eugene Rozenfeld via Gcc-patch= es wrote: >> > > >> > > autoprofiledbootstrap build produces new warnings since inlining >> > > decisions are different from other builds. This patch contains fixes >> > > and workarounds for those warnings. >> > > >> > > Tested on x86_64-pc-linux-gnu. >> > >> > Rather than this would it make sense to add --disable-werror to autopr= ofiledbootstrap configs like we do for others? I also wonder how "stable" = the afdo bootstrap inlining decisions are, so applying these workarounds ma= y not be sustainable? >> > >> > > gcc/ChangeLog: >> > > >> > > * config/i386/i386-expand.cc (expand_vec_perm_interleave2): = Work around >> > > -Wstringop-overflow false positive during autoprofiledbootst= rap >> > > * ipa-devirt.cc (debug_tree_odr_name): Fix for -Wformat-over= flow >> > > warning during autoprofiledbootstrap >> > > * lra-eliminations.cc (setup_can_eliminate): Work around >> > > -Wmaybe-uninitialized false positive during autoprofiledboot= strap >> > > * opts-common.cc (candidates_list_and_hint): Work around >> > > -Wstringop-overflow false positive during autoprofiledbootst= rap >> > > * tree-ssa-ccp.cc (bit_value_unop): Work around -Wmaybe-unin= itialized >> > > false positive during autoprofiledbootstrap >> > > * wide-int.h (wi::copy): Work around -Wmaybe-uninitialized f= alse >> > > positive during autoprofiledbootstrap >> > > --- >> > > gcc/config/i386/i386-expand.cc | 11 +++++++++++ >> > > gcc/ipa-devirt.cc | 3 ++- >> > > gcc/lra-eliminations.cc | 11 +++++++++++ >> > > gcc/opts-common.cc | 1 + >> > > gcc/tree-ssa-ccp.cc | 11 +++++++++++ >> > > gcc/wide-int.h | 11 +++++++++++ >> > > 6 files changed, 47 insertions(+), 1 deletion(-) >> > > >> > > diff --git a/gcc/config/i386/i386-expand.cc >> > > b/gcc/config/i386/i386-expand.cc index 634fe61ba79..be9f912775b >> > > 100644 >> > > --- a/gcc/config/i386/i386-expand.cc >> > > +++ b/gcc/config/i386/i386-expand.cc >> > > @@ -20419,6 +20419,13 @@ expand_vec_perm_pblendv (struct >> > > expand_vec_perm_d *d) >> > > >> > > static bool expand_vec_perm_interleave3 (struct expand_vec_perm_d >> > > *d); >> > > >> > > +/* Work around -Wstringop-overflow false positive during >> > > +autoprofiledbootstrap. */ >> > > + >> > > +# if GCC_VERSION >=3D 7001 >> > > +#pragma GCC diagnostic push >> > > +#pragma GCC diagnostic ignored "-Wstringop-overflow" >> > > +#endif >> > > + >> > > /* A subroutine of ix86_expand_vec_perm_const_1. Try to simplify >> > > a two vector permutation into a single vector permutation by usi= ng >> > > an interleave operation to merge the vectors. */ @@ -20737,6 >> > > +20744,10 @@ expand_vec_perm_interleave2 (struct expand_vec_perm_d >> > > +*d) >> > > return true; >> > > } >> > > >> > > +# if GCC_VERSION >=3D 7001 >> > > +#pragma GCC diagnostic pop >> > > +#endif >> > > + >> > > /* A subroutine of ix86_expand_vec_perm_const_1. Try to simplify >> > > a single vector cross-lane permutation into vpermq followed >> > > by any of the single insn permutations. */ diff --git >> > > a/gcc/ipa-devirt.cc b/gcc/ipa-devirt.cc index >> > > 819860258d1..36ea266e834 >> > > 100644 >> > > --- a/gcc/ipa-devirt.cc >> > > +++ b/gcc/ipa-devirt.cc >> > > @@ -4033,7 +4033,8 @@ debug_tree_odr_name (tree type, bool demangle) >> > > odr =3D cplus_demangle (odr, opts); >> > > } >> > > >> > > - fprintf (stderr, "%s\n", odr); >> > > + if (odr !=3D NULL) >> > > + fprintf (stderr, "%s\n", odr); >> > > } >> > > >> > > /* Register ODR enum so we later stream record about its values. >> > > */ diff --git a/gcc/lra-eliminations.cc b/gcc/lra-eliminations.cc >> > > index >> > > 42206366669..05e2a7e0d68 100644 >> > > --- a/gcc/lra-eliminations.cc >> > > +++ b/gcc/lra-eliminations.cc >> > > @@ -138,6 +138,13 @@ lra_debug_elim_table (void) >> > > print_elim_table (stderr); >> > > } >> > > >> > > +/* Work around -Wmaybe-uninitialized false positive during >> > > +autoprofiledbootstrap. */ >> > > + >> > > +# if GCC_VERSION >=3D 4007 >> > > +#pragma GCC diagnostic push >> > > +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" >> > > +#endif >> > > + >> > > /* Setup possibility of elimination in elimination table element EP= to >> > > VALUE. Setup FRAME_POINTER_NEEDED if elimination from frame >> > > pointer to stack pointer is not possible anymore. */ @@ -152,6 >> > > +159,10 @@ setup_can_eliminate (class lra_elim_table *ep, bool >> > > +value) >> > > REGNO_POINTER_ALIGN (HARD_FRAME_POINTER_REGNUM) =3D 0; } >> > > >> > > +# if GCC_VERSION >=3D 4007 >> > > +#pragma GCC diagnostic pop >> > > +#endif >> > > + >> > > /* Map: eliminable "from" register -> its current elimination, >> > > or NULL if none. The elimination table may contain more than >> > > one elimination for the same hard register, but this map >> > > specifies diff --git a/gcc/opts-common.cc b/gcc/opts-common.cc index >> > > 23ddcaa3b55..0bb8e34e2b0 100644 >> > > --- a/gcc/opts-common.cc >> > > +++ b/gcc/opts-common.cc >> > > @@ -1388,6 +1388,7 @@ candidates_list_and_hint (const char *arg, cha= r *&str, >> > > p[len] =3D ' '; >> > > p +=3D len + 1; >> > > } >> > > + gcc_assert(p > str); >> > > p[-1] =3D '\0'; >> > > return find_closest_string (arg, &candidates); } diff --git >> > > a/gcc/tree-ssa-ccp.cc b/gcc/tree-ssa-ccp.cc index >> > > 03a984f2adf..a54e5a90464 100644 >> > > --- a/gcc/tree-ssa-ccp.cc >> > > +++ b/gcc/tree-ssa-ccp.cc >> > > @@ -1976,6 +1976,13 @@ bit_value_binop (enum tree_code code, signop = sgn, int width, >> > > } >> > > } >> > > >> > > +/* Work around -Wmaybe-uninitialized false positive during >> > > +autoprofiledbootstrap. */ >> > > + >> > > +# if GCC_VERSION >=3D 4007 >> > > +#pragma GCC diagnostic push >> > > +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" >> > > +#endif >> > > + >> > > /* Return the propagation value when applying the operation CODE to >> > > the value RHS yielding type TYPE. */ >> > > >> > > @@ -2011,6 +2018,10 @@ bit_value_unop (enum tree_code code, tree typ= e, tree rhs) >> > > return val; >> > > } >> > > >> > > +# if GCC_VERSION >=3D 4007 >> > > +#pragma GCC diagnostic pop >> > > +#endif >> > > + >> > > /* Return the propagation value when applying the operation CODE to >> > > the values RHS1 and RHS2 yielding type TYPE. */ >> > > >> > > diff --git a/gcc/wide-int.h b/gcc/wide-int.h index >> > > 6be343c0eb5..9c50dd869b6 100644 >> > > --- a/gcc/wide-int.h >> > > +++ b/gcc/wide-int.h >> > > @@ -1806,6 +1806,13 @@ wi::get_binary_precision (const T1 &x, const = T2 &y) >> > > get_binary_result (x, y)); } >> > > >> > > +/* Work around -Wmaybe-uninitialized false positive during >> > > +autoprofiledbootstrap. */ >> > > + >> > > +# if GCC_VERSION >=3D 4007 >> > > +#pragma GCC diagnostic push >> > > +#pragma GCC diagnostic ignored "-Wmaybe-uninitialized" >> > > +#endif >> > > + >> > > /* Copy the contents of Y to X, but keeping X's current precision. >> > > */ template inline void @@ -1821,6 >> > > +1828,10 @@ wi::copy (T1 &x, const T2 &y) >> > > x.set_len (len, y.is_sign_extended); } >> > > >> > > +# if GCC_VERSION >=3D 4007 >> > > +#pragma GCC diagnostic pop >> > > +#endif >> > > + >> > > /* Return true if X fits in a HOST_WIDE_INT with no loss of >> > > precision. */ template inline bool >> > > -- >> > > 2.25.1 >> > > ----------------- Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstra=C3=9Fe 201= , 80634 M=C3=BCnchen; Gesellschaft mit beschr=C3=A4nkter Haftung; Gesch=C3= =A4ftsf=C3=BChrer: Thomas Heurung, Frank Th=C3=BCrauf; Sitz der Gesellschaf= t: M=C3=BCnchen; Registergericht M=C3=BCnchen, HRB 106955