From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1011) id 7DC243857C75; Thu, 22 Sep 2022 18:49:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7DC243857C75 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1663872557; bh=W7P3sAD8qpG5xkKi/U8IX+j42D+uJWCWbMIA0+qzIYo=; h=From:To:Subject:Date:From; b=AsLsWhi9yFCiAFN4Gfic/mxNSn85gxZMzrrp1LbXaXa/wewTAl59qTw5HO8Q64Yic qAMJfWigX99iekJ8n9/kMNYnwb1KBeQopluhqjGckbRrQQANJZEo0bKxQq/9zndzRd VwnWfylekBOxxZhEwxbNnB9p6i8FMhm3DHXE47zs= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Andrew Macleod To: gcc-cvs@gcc.gnu.org Subject: [gcc r13-2787] Add missing float fold_range prototype for floats. X-Act-Checkin: gcc X-Git-Author: Andrew MacLeod X-Git-Refname: refs/heads/master X-Git-Oldrev: a7a6649f4e7c459a95dee1600554ad06aaeb1cf6 X-Git-Newrev: be2a25adbdc76a770f7470cc9f47892f7a4139ae Message-Id: <20220922184917.7DC243857C75@sourceware.org> Date: Thu, 22 Sep 2022 18:49:17 +0000 (GMT) List-Id: https://gcc.gnu.org/g:be2a25adbdc76a770f7470cc9f47892f7a4139ae commit r13-2787-gbe2a25adbdc76a770f7470cc9f47892f7a4139ae Author: Andrew MacLeod Date: Tue Sep 20 12:34:08 2022 -0400 Add missing float fold_range prototype for floats. Unary operations require op2 to be the range of the type of the LHS. This is so the type for the LHS can be properly set. * range-op-float.cc (range_operator_float::fold_range): New base method for "int = float op int". * range-op.cc (range_op_handler::fold_range): New case. * range-op.h: Update prototypes. Diff: --- gcc/range-op-float.cc | 10 ++++++++++ gcc/range-op.cc | 13 ++++++++++--- gcc/range-op.h | 5 +++++ 3 files changed, 25 insertions(+), 3 deletions(-) diff --git a/gcc/range-op-float.cc b/gcc/range-op-float.cc index 2bd3dc9253f..aa5b7ed073d 100644 --- a/gcc/range-op-float.cc +++ b/gcc/range-op-float.cc @@ -58,6 +58,16 @@ range_operator_float::fold_range (frange &r ATTRIBUTE_UNUSED, return false; } +bool +range_operator_float::fold_range (irange &r ATTRIBUTE_UNUSED, + tree type ATTRIBUTE_UNUSED, + const frange &lh ATTRIBUTE_UNUSED, + const irange &rh ATTRIBUTE_UNUSED, + relation_kind rel ATTRIBUTE_UNUSED) const +{ + return false; +} + bool range_operator_float::fold_range (irange &r ATTRIBUTE_UNUSED, tree type ATTRIBUTE_UNUSED, diff --git a/gcc/range-op.cc b/gcc/range-op.cc index 9ae42b8331f..072ebd32109 100644 --- a/gcc/range-op.cc +++ b/gcc/range-op.cc @@ -4208,9 +4208,16 @@ range_op_handler::fold_range (vrange &r, tree type, as_a (rh), rel); if (is_a (r)) - return m_float->fold_range (as_a (r), type, - as_a (lh), - as_a (rh), rel); + { + if (is_a (rh)) + return m_float->fold_range (as_a (r), type, + as_a (lh), + as_a (rh), rel); + else + return m_float->fold_range (as_a (r), type, + as_a (lh), + as_a (rh), rel); + } return m_float->fold_range (as_a (r), type, as_a (lh), as_a (rh), rel); diff --git a/gcc/range-op.h b/gcc/range-op.h index b4b5101a9e0..b2f063afb07 100644 --- a/gcc/range-op.h +++ b/gcc/range-op.h @@ -117,6 +117,11 @@ public: const frange &lh, const frange &rh, relation_kind rel = VREL_VARYING) const; + // Unary operations have the range of the LHS as op2. + virtual bool fold_range (irange &r, tree type, + const frange &lh, + const irange &rh, + relation_kind rel = VREL_VARYING) const; virtual bool fold_range (irange &r, tree type, const frange &lh, const frange &rh,