public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
From: qu <xianmiao@gcc.gnu.org>
To: gcc-cvs@gcc.gnu.org
Subject: [gcc r13-2515] C-SKY: Fix expanding of float LE comparing with zero for fpuv3.
Date: Wed,  7 Sep 2022 11:04:00 +0000 (GMT)	[thread overview]
Message-ID: <20220907110400.18B293851171@sourceware.org> (raw)

https://gcc.gnu.org/g:eae270beb7741eb6c77be756c9cd048bae87713f

commit r13-2515-geae270beb7741eb6c77be756c9cd048bae87713f
Author: Xianmiao Qu <cooper.qu@linux.alibaba.com>
Date:   Wed Sep 7 17:19:54 2022 +0800

    C-SKY: Fix expanding of float LE comparing with zero for fpuv3.
    
    The original code will cause the warning:
    /usr/lib/gcc-snapshot/bin/g++  -fno-PIE -c   -g -O2   -DIN_GCC  -DCROSS_DIRECTORY_STRUCTURE   -fno-exceptions -fno-rtti -fasynchronous-unwind-tables -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wmissing-format-attribute -Woverloaded-virtual -pedantic -Wno-long-long -Wno-variadic-macros -Wno-overlength-strings -Werror -fno-common  -DHAVE_CONFIG_H -I. -I. -I../../gcc/gcc -I../../gcc/gcc/. -I../../gcc/gcc/../include -I../../gcc/gcc/../libcpp/include -I../../gcc/gcc/../libcody  -I../../gcc/gcc/../libdecnumber -I../../gcc/gcc/../libdecnumber/dpd -I../libdecnumber -I../../gcc/gcc/../libbacktrace   -o csky.o -MT csky.o -MMD -MP -MF ./.deps/csky.TPo ../../gcc/gcc/config/csky/csky.cc
    In file included from ../../gcc/gcc/config/csky/csky.h:183,
                    from ./tm.h:20,
                    from ../../gcc/gcc/backend.h:28,
                    from ../../gcc/gcc/config/csky/csky.cc:27:
    ../../gcc/gcc/config/csky/csky.cc: In function 'bool csky_emit_compare_float(rtx_code, rtx, rtx)':
    ../../gcc/gcc/config/csky/csky_isa.h:29:37: error: enum constant in boolean context [-Werror=int-in-bool-context]
      29 | #define CSKY_ISA_FEATURE_DEFINE(x)  isa_bit_ ## x
          |                                     ^~~~~~~~
    ../../gcc/gcc/config/csky/csky_isa.h:30:37: note: in expansion of macro 'CSKY_ISA_FEATURE_DEFINE'
      30 | #define CSKY_ISA_FEATURE_GET(x)     CSKY_ISA_FEATURE_DEFINE (x)
          |                                     ^~~~~~~~~~~~~~~~~~~~~~~
    ../../gcc/gcc/config/csky/csky.cc:6346:43: note: in expansion of macro 'CSKY_ISA_FEATURE_GET'
    6346 |                                        || CSKY_ISA_FEATURE_GET(fpv2_df)
          |                                           ^~~~~~~~~~~~~~~~~~~~
    ../../gcc/gcc/config/csky/csky_isa.h:29:37: error: enum constant in boolean context [-Werror=int-in-bool-context]
      29 | #define CSKY_ISA_FEATURE_DEFINE(x)  isa_bit_ ## x
          |                                     ^~~~~~~~
    ../../gcc/gcc/config/csky/csky_isa.h:30:37: note: in expansion of macro 'CSKY_ISA_FEATURE_DEFINE'
      30 | #define CSKY_ISA_FEATURE_GET(x)     CSKY_ISA_FEATURE_DEFINE (x)
          |                                     ^~~~~~~~~~~~~~~~~~~~~~~
    ../../gcc/gcc/config/csky/csky.cc:6346:43: note: in expansion of macro 'CSKY_ISA_FEATURE_GET'
    6346 |                                        || CSKY_ISA_FEATURE_GET(fpv2_df)
          |                                           ^~~~~~~~~~~~~~~~~~~~
    ../../gcc/gcc/config/csky/csky_isa.h:29:37: error: enum constant in boolean context [-Werror=int-in-bool-context]
      29 | #define CSKY_ISA_FEATURE_DEFINE(x)  isa_bit_ ## x
          |                                     ^~~~~~~~
    ../../gcc/gcc/config/csky/csky_isa.h:30:37: note: in expansion of macro 'CSKY_ISA_FEATURE_DEFINE'
      30 | #define CSKY_ISA_FEATURE_GET(x)     CSKY_ISA_FEATURE_DEFINE (x)
          |                                     ^~~~~~~~~~~~~~~~~~~~~~~
    ../../gcc/gcc/config/csky/csky.cc:6347:43: note: in expansion of macro 'CSKY_ISA_FEATURE_GET'
    6347 |                                        || CSKY_ISA_FEATURE_GET(fpv2_divd)))
          |                                           ^~~~~~~~~~~~~~~~~~~~
    
    The 'CSKY_ISA_FEATURE_DEFINE (x)' is an enum contant, it will cause the condition always being true.
    In addition to warning, it will let FPUV3 to generate a move instruction, which is unnecessary.
    In a simple test case, the move instruction can be combined, so it was not found in the testsuite.
    But in some complex scenarios, this may generate some redundant instructions.
    The correct way is to use 'CSKY_ISA_FEATURE' instead of 'CSKY_ISA_FEATURE_DEFINE'.
    
    gcc/
            * config/csky/csky.cc (csky_emit_compare_float): Fix the expanding of
            float LE comparing with zero for fpuv3.
            * config/csky/csky.h (TARGET_SUPPORT_FPV2): New, true if any fpuv2
            features are enabled.

Diff:
---
 gcc/config/csky/csky.cc | 4 +---
 gcc/config/csky/csky.h  | 4 ++++
 2 files changed, 5 insertions(+), 3 deletions(-)

diff --git a/gcc/config/csky/csky.cc b/gcc/config/csky/csky.cc
index a7dc6cefead..4dc74d8924f 100644
--- a/gcc/config/csky/csky.cc
+++ b/gcc/config/csky/csky.cc
@@ -6342,9 +6342,7 @@ csky_emit_compare_float (enum rtx_code code, rtx op0, rtx op1)
     case GT:
     case LT:
     case LE:
-      if (op1 == CONST0_RTX (mode) && (CSKY_ISA_FEATURE_GET(fpv2_sf)
-				       || CSKY_ISA_FEATURE_GET(fpv2_df)
-				       || CSKY_ISA_FEATURE_GET(fpv2_divd)))
+      if (op1 == CONST0_RTX (mode) && TARGET_SUPPORT_FPV2)
 	op1 = force_reg (mode, op1);
       break;
     case ORDERED:
diff --git a/gcc/config/csky/csky.h b/gcc/config/csky/csky.h
index 37410f0cda4..f786ad55d43 100644
--- a/gcc/config/csky/csky.h
+++ b/gcc/config/csky/csky.h
@@ -165,6 +165,10 @@
 			     || CSKY_ISA_FEATURE (fpv3_sf) \
 			     || CSKY_ISA_FEATURE (fpv3_df))
 
+#define TARGET_SUPPORT_FPV2 (CSKY_ISA_FEATURE(fpv2_sf)    \
+			     || CSKY_ISA_FEATURE(fpv2_df) \
+			     || CSKY_ISA_FEATURE(fpv2_divd))
+
 /* Number of loads/stores handled by ldm/stm.  */
 #define CSKY_MIN_MULTIPLE_STLD	3
 #define CSKY_MAX_MULTIPLE_STLD	12

                 reply	other threads:[~2022-09-07 11:04 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220907110400.18B293851171@sourceware.org \
    --to=xianmiao@gcc.gnu.org \
    --cc=gcc-cvs@gcc.gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).