From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 7215 invoked from network); 3 Dec 2020 19:06:26 -0000 Received: from mother.openwall.net (195.42.179.200) by inbox.vuxu.org with ESMTPUTF8; 3 Dec 2020 19:06:26 -0000 Received: (qmail 16047 invoked by uid 550); 3 Dec 2020 19:06:24 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 16023 invoked from network); 3 Dec 2020 19:06:23 -0000 Date: Thu, 3 Dec 2020 14:06:10 -0500 From: Rich Felker To: Marius Hillenbrand Cc: musl@lists.openwall.com Message-ID: <20201203190608.GB534@brightrain.aerifal.cx> References: <20201201143634.13419-1-mhillen@linux.ibm.com> <20201201205020.GT534@brightrain.aerifal.cx> <3a1b3e6f-3978-4a7a-70b5-9bf18db7704b@linux.ibm.com> <20201202142504.GV534@brightrain.aerifal.cx> <20201202160140.GW534@brightrain.aerifal.cx> <0fda3e37-b513-91fc-f09e-cfca11a76a20@linux.ibm.com> <20201202191306.GX534@brightrain.aerifal.cx> <108407b0-24ac-d3d3-43c1-f394ba6bbebe@linux.ibm.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <108407b0-24ac-d3d3-43c1-f394ba6bbebe@linux.ibm.com> User-Agent: Mutt/1.5.21 (2010-09-15) Subject: Re: [musl] [PATCH] s390x: derive float_t from compiler or default to float On Thu, Dec 03, 2020 at 05:53:52PM +0100, Marius Hillenbrand wrote: > On 12/2/20 8:13 PM, Rich Felker wrote: > > On Wed, Dec 02, 2020 at 06:09:44PM +0100, Marius Hillenbrand wrote: > >> On 12/2/20 5:01 PM, Rich Felker wrote: > >>> On Wed, Dec 02, 2020 at 09:25:04AM -0500, Rich Felker wrote: > [...] > >>> I'm looking at > >>> https://gcc.gnu.org/pipermail/gcc-patches/2020-November/560225.html > >>> which seems to be what you're talking about, and don't understand how > >>> it's intended to work. It looks like it's running a test for target > >>> behavior on the host compiler (there is no target compiler at the > >>> point this test is run). Looking again, I guess that's why it's under > >>> a condition for build==host==target. > >> > >> Right, that's the patch. The check only applies to a "native build", > >> with the assumption that the build environment is the same as the > >> intended target environment. > >> > >>> What happens when cross > >>> compiling? Do you get the old behavior unless manually setting > >>> --disable-s390-excess-float-precision? > >> > >> When cross compiling, we get the new behavior (the setting starts at > >> "auto", which is never resolved to yes or no; so the AC_DEFINE is left out). > >> > >> In any case, manually setting > >> --enable/disable-s390-excess-float-precision takes precedence. > > > > FWIW this means building GCC 11 for any older version of glibc or musl > > will give a broken configuration unless you pass > > --disable-s390-excess-float-precision to configure. I'm not sure if > > anything should be done about that; at least I might want to handle it > > in mcm... > > I will look into handling cross compiles in a more differentiating way... I can't think of any valid way to detect (note: at configure time you might not even have libc available) but it might be more reasonable to take the conservative default and assume a libc that can't handle the new definition. For example compiling old musl with the new definition will be caused the math library to be miscompiled. > > In any case this probably means I should include your patch in this > > release cycle so at least current version builds right. > > > > BTW is there a -m option to override at runtime in order to test both > > behaviors, so you don't have to build a new GCC from scratch to do it? > > Yes, in the current GCC, -fexcess-precision=standard or fast switches > between the two behaviors (i.e., both __FLT_EVAL_METHOD__ and emitted > code; "fast" corresponds to the "new" behavior). I mean in a GCC 11 built for the new behavior, where -fexcess-precision=standard will no longer give __FLT_EVAL_METHOD__==1 because float_t is expected to be defined as float and FLT_EVAL_METHOD as 0. Is there a -m option to tell it "behave like old GCC, where -fexcess-precision=standard implies evaluation in double? Rich