From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pl1-x635.google.com (mail-pl1-x635.google.com [IPv6:2607:f8b0:4864:20::635]) by sourceware.org (Postfix) with ESMTPS id 7125B388300C for ; Wed, 8 May 2024 16:19:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 7125B388300C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 7125B388300C Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::635 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715185157; cv=none; b=cQpfS7P6UpA4GaovM+nCVJWB2NEAG+0YC8SLaC6j9ETYf6OEPgr8Cd3oFcPctB2OLWmw7Fh8u+lNDfhDXAwyPFCNyai1pBf7agybbFv3YUBK3mEIm9kgiA9uamE2wZ93QTfsZ+jP35CIDWauZsSxTbGt+sRZvx58ilHod7LCyGY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715185157; c=relaxed/simple; bh=b4UW1PSG8i9t2vpXKkNiKoYcQvNmg0339mwSqmiNtF8=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=LfKTZOngKFOVUmtKMs61QCx4+NDAxZNRsB4HQ244purlI87Ac7RZrjQxEozyBLThT8JFqq7aOJFIn6exL51XFLubkeqkDn2n00TGjWBjDpl6jHfIH59Rs0q55pqW+me1kZQSz7JDUhUBG1SRNfA5dACkYttRv7FIn3O64jzYEX8= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pl1-x635.google.com with SMTP id d9443c01a7336-1e4bf0b3e06so40462625ad.1 for ; Wed, 08 May 2024 09:19:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715185154; x=1715789954; darn=gcc.gnu.org; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=8o6ahn6L8u4R+kixDw8l86/GpaFn3vGnczctl4AgWes=; b=L7HvzvgTTRDSpM7S2UpRbSWRwTvXpWAhtr6lQEkqL6o2ki/VwzkZd30A8CcmjGeSNX pnT4uXljfZrOcgXTaPb7gXtCc4Ml0rueIphfX0qjSUcbNkGC0PclWQqZnJuQotTyD2hc B0Ou84AA4BAQPKbmdmoyZOdVLLDWCBNmXW6xrucdx1ylG5vVOu8Nc+kkK5RfmhAuxAoS M0baEeBWb54XyZstJ0XlxFp77KTGzxLje+fixIz8EFFbBiynAygQfeu08qEFxs84GcQZ KC6bQMwYA3aTNCsv6Ip465Bo6pCr0Hk3cq1uucWTl5Pxi6oa5gm82VSPFuI5hsc+82Hg vZWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715185154; x=1715789954; h=content-transfer-encoding:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8o6ahn6L8u4R+kixDw8l86/GpaFn3vGnczctl4AgWes=; b=Rtr28FMa9x99j/F27vMPUHQDw1kILlQtI/oOK+Y8srSdngd8QTDhrvq7qpI+TAGk4c XOy2Yv4NzUyt7CnUTnUoGvQ7PT4irilj+Oan9XAhWSLFun3VAkVd26qeQ47yIeG2UYHH G15A8t/CKNWPlP8xayASL88je/lncDOCUxruwZmuPR5xqpGgMHJWRe9edyweJKPjxQWh iPeKIzTitKdqEOmP3IIen8JO3WtZOKcx+y6STDAZ6Hzc17+grQDrrnV8vDvBEwgQ2RtM yoJbkOO+cNZ37cufRIO5hF0w2bUVKOWyEnZ/XlBbZYsmniRqDuHlljANFapN7UAwBO4U UnMA== X-Gm-Message-State: AOJu0Yzgzy4TAv0eydk2xraL1NiYrxprrQUOSVV7u3+6RefCVi9+m7wb sbrMfwb/615+YNMzqQphSLNfw/zcVpOYFib5F5nz/7+GknbeagrClF6InU14Zx8VLSmAJmg83B5 fugZyaSgtBYTX+ufyvXFeqHtW9xPREA== X-Google-Smtp-Source: AGHT+IG3TT6o779hu1TUEEGFfp00GKxXsAFN+kHE3I9nN1d0IkZu5uFVzpUQCMa7uX1iLkju+APDgWev//pHs6IP/iU= X-Received: by 2002:a17:903:28e:b0:1ec:5104:c75a with SMTP id d9443c01a7336-1eeb05904d3mr36759975ad.41.1715185154295; Wed, 08 May 2024 09:19:14 -0700 (PDT) MIME-Version: 1.0 References: <20240311025813.3805399-1-quic_apinski@quicinc.com> In-Reply-To: From: Andrew Pinski Date: Wed, 8 May 2024 09:19:02 -0700 Message-ID: Subject: Re: [COMMITTED] Fold: Fix up merge_truthop_with_opposite_arm for NaNs [PR95351] To: "Andrew Pinski (QUIC)" Cc: "gcc-patches@gcc.gnu.org" Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Spam-Status: No, score=-8.0 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: On Mon, Mar 11, 2024 at 11:41=E2=80=AFPM Andrew Pinski (QUIC) wrote: > > > -----Original Message----- > > From: Andrew Pinski (QUIC) > > Sent: Sunday, March 10, 2024 7:58 PM > > To: gcc-patches@gcc.gnu.org > > Cc: Andrew Pinski (QUIC) > > Subject: [COMMITTED] Fold: Fix up merge_truthop_with_opposite_arm for > > NaNs [PR95351] > > > > The problem here is that merge_truthop_with_opposite_arm would use the > > type of the result of the comparison rather than the operands of the > > comparison to figure out if we are honoring NaNs. > > This fixes that oversight and now we get the correct results in this ca= se. > > > > Committed as obvious after a bootstrap/test on x86_64-linux-gnu. > > Committed to the GCC 13 branch too. And the GCC 12 and 11 branches too. > > Thanks, > Andrew > > > > > PR middle-end/95351 > > > > gcc/ChangeLog: > > > > * fold-const.cc (merge_truthop_with_opposite_arm): Use > > the type of the operands of the comparison and not the type > > of the comparison. > > > > gcc/testsuite/ChangeLog: > > > > * gcc.dg/float_opposite_arm-1.c: New test. > > > > Signed-off-by: Andrew Pinski > > --- > > gcc/fold-const.cc | 3 ++- > > gcc/testsuite/gcc.dg/float_opposite_arm-1.c | 17 +++++++++++++++++ > > 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 > > gcc/testsuite/gcc.dg/float_opposite_arm-1.c > > > > diff --git a/gcc/fold-const.cc b/gcc/fold-const.cc index > > 43105d20be3..299c22bf391 100644 > > --- a/gcc/fold-const.cc > > +++ b/gcc/fold-const.cc > > @@ -6420,7 +6420,6 @@ static tree > > merge_truthop_with_opposite_arm (location_t loc, tree op, tree cmpop, > > bool rhs_only) > > { > > - tree type =3D TREE_TYPE (cmpop); > > enum tree_code code =3D TREE_CODE (cmpop); > > enum tree_code truthop_code =3D TREE_CODE (op); > > tree lhs =3D TREE_OPERAND (op, 0); > > @@ -6436,6 +6435,8 @@ merge_truthop_with_opposite_arm (location_t > > loc, tree op, tree cmpop, > > if (TREE_CODE_CLASS (code) !=3D tcc_comparison) > > return NULL_TREE; > > > > + tree type =3D TREE_TYPE (TREE_OPERAND (cmpop, 0)); > > + > > if (rhs_code =3D=3D truthop_code) > > { > > tree newrhs =3D merge_truthop_with_opposite_arm (loc, rhs, cmpop= , > > rhs_only); diff --git a/gcc/testsuite/gcc.dg/float_opposite_arm-1.c > > b/gcc/testsuite/gcc.dg/float_opposite_arm-1.c > > new file mode 100644 > > index 00000000000..d2dbff35066 > > --- /dev/null > > +++ b/gcc/testsuite/gcc.dg/float_opposite_arm-1.c > > @@ -0,0 +1,17 @@ > > +/* { dg-do compile } */ > > +/* { dg-options "-O1 -fdump-tree-original -fdump-tree-optimized" } */ > > +/* { dg-add-options ieee } */ > > +/* PR middle-end/95351 */ > > + > > +int Foo(double possiblyNAN, double b, double c) { > > + return (possiblyNAN <=3D 2.0) || ((possiblyNAN > 2.0) && (b > c))= ; } > > + > > +/* Make sure we don't remove either >/<=3D */ > > + > > +/* { dg-final { scan-tree-dump "possiblyNAN > 2.0e.0" "original" } } *= / > > +/* { dg-final { scan-tree-dump "possiblyNAN_\[0-9\]+.D. > 2.0e.0" > > +"optimized" } } */ > > + > > +/* { dg-final { scan-tree-dump "possiblyNAN <=3D 2.0e.0" "original" } = } > > +*/ > > +/* { dg-final { scan-tree-dump "possiblyNAN_\[0-9\]+.D. <=3D 2.0e.0" > > +"optimized" } } */ > > -- > > 2.43.0 >