From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 82870 invoked by alias); 6 Nov 2015 13:06:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 82859 invoked by uid 89); 6 Nov 2015 13:06:53 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-0.3 required=5.0 tests=AWL,BAYES_50,FREEMAIL_FROM,KAM_ASCII_DIVIDERS,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=no version=3.3.2 X-HELO: mail-yk0-f179.google.com Received: from mail-yk0-f179.google.com (HELO mail-yk0-f179.google.com) (209.85.160.179) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES128-GCM-SHA256 encrypted) ESMTPS; Fri, 06 Nov 2015 13:06:52 +0000 Received: by ykek133 with SMTP id k133so182838146yke.2 for ; Fri, 06 Nov 2015 05:06:50 -0800 (PST) MIME-Version: 1.0 X-Received: by 10.129.13.215 with SMTP id 206mr12586265ywn.280.1446815210064; Fri, 06 Nov 2015 05:06:50 -0800 (PST) Received: by 10.37.93.11 with HTTP; Fri, 6 Nov 2015 05:06:49 -0800 (PST) In-Reply-To: <8D9ED969-8205-45E2-A6FD-3040ECF97E81@comcast.net> References: <20151028115839.1E7C85C3D@oc7340732750.ibm.com> <87ziz3ta4t.fsf@e105548-lin.cambridge.arm.com> <5630D8AE.1090608@redhat.com> <87h9l4v2pi.fsf@e105548-lin.cambridge.arm.com> <87611kuzz4.fsf@e105548-lin.cambridge.arm.com> <871tc8unnx.fsf@e105548-lin.cambridge.arm.com> <87wptztqpx.fsf@e105548-lin.cambridge.arm.com> <29C8CB44-A0EC-4A9A-A4D3-3ABB6D66DA5B@comcast.net> <7ADD4B03-BF3E-48BA-8028-AC5EB50E773C@comcast.net> <8AEB7496-7440-4239-95E9-272C6EF2AB70@comcast.net> <87mvuttrnz.fsf@e105548-lin.cambridge.arm.com> <721A5B44-82AC-4D72-9E50-500D5E5A7EC5@comcast.net> <8D9ED969-8205-45E2-A6FD-3040ECF97E81@comcast.net> Date: Fri, 06 Nov 2015 13:06:00 -0000 Message-ID: Subject: Re: [ping] Fix PR debug/66728 From: Richard Biener To: Mike Stump Cc: Richard Sandiford , Bernd Schmidt , Ulrich Weigand , GCC Patches Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable X-IsSubscribed: yes X-SW-Source: 2015-11/txt/msg00619.txt.bz2 On Fri, Nov 6, 2015 at 2:34 AM, Mike Stump wrote: > On Nov 5, 2015, at 4:32 AM, Richard Biener w= rote: >> No idea on location lists but maybe this means we should just use the >> maximum supported integer mode for CONST_WIDE_INTs? > > Ah, yeah, that sounds like a fine idea. Below is that version. I snuck = in one more change, as it was annoying me, and it is a regression from gcc-= 4.8. It has this effect: > > @@ -55,7 +55,7 @@ test: > .long 0x72 # DW_AT_type > .byte 0x10 > .quad 0 # DW_AT_const_value > - .quad 0x8000000000000000 # (null) > + .quad 0x8000000000000000 # > .byte 0 # end of children of DIE 0x2d > .uleb128 0x4 # (DIE (0x6b) DW_TAG_base_type) > .byte 0x10 # DW_AT_byte_size > > This version has the added benefit of reducing all wide_ints to be so sho= rtened. We do this by changing get_full_len, which changes the world. > > If there are no substantial reasons to not check it in now, I=E2=80=99d l= ike to proceed and get it checked in. People can refine it further in tree= if they want. Any objections? Ok with a changelog entry and bootstrap/regtest. Thanks, Richard. > > Index: dwarf2out.c > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- dwarf2out.c (revision 229720) > +++ dwarf2out.c (working copy) > @@ -368,12 +368,14 @@ > #endif > > /* Get the number of HOST_WIDE_INTs needed to represent the precision > - of the number. */ > + of the number. Some constants have a large uniform precision, so > + we get the precision needed for the actual value of the number. */ > > static unsigned int > get_full_len (const wide_int &op) > { > - return ((op.get_precision () + HOST_BITS_PER_WIDE_INT - 1) > + int prec =3D wi::min_precision (op, UNSIGNED); > + return ((prec + HOST_BITS_PER_WIDE_INT - 1) > / HOST_BITS_PER_WIDE_INT); > } > > @@ -9010,7 +9012,7 @@ > { > dw2_asm_output_data (l, a->dw_attr_val.v.val_wide->elt = (i), > "%s", name); > - name =3D NULL; > + name =3D ""; > } > else > for (i =3D 0; i < len; ++i) > @@ -9017,7 +9019,7 @@ > { > dw2_asm_output_data (l, a->dw_attr_val.v.val_wide->elt = (i), > "%s", name); > - name =3D NULL; > + name =3D ""; > } > } > break; > @@ -15593,8 +15595,13 @@ > return true; > > case CONST_WIDE_INT: > - add_AT_wide (die, DW_AT_const_value, > - std::make_pair (rtl, GET_MODE (rtl))); > + { > + wide_int w1 =3D std::make_pair (rtl, MAX_MODE_INT); > + unsigned int prec =3D MIN (wi::min_precision (w1, UNSIGNED), > + (unsigned int)CONST_WIDE_INT_NUNITS (rtl= ) * HOST_BITS_PER_WIDE_INT); > + wide_int w =3D wi::zext (w1, prec); > + add_AT_wide (die, DW_AT_const_value, w); > + } > return true; > > case CONST_DOUBLE: > Index: rtl.h > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > --- rtl.h (revision 229720) > +++ rtl.h (working copy) > @@ -2086,6 +2086,7 @@ > inline unsigned int > wi::int_traits ::get_precision (const rtx_mode_t &x) > { > + gcc_checking_assert (x.second !=3D BLKmode && x.second !=3D VOIDmode); > return GET_MODE_PRECISION (x.second); > } >