From patchwork Tue Sep 19 12:41:45 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 141868 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:172:b0:3f2:4152:657d with SMTP id h50csp3353219vqi; Tue, 19 Sep 2023 05:42:33 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGK6pStJEFJBe+e86uv2jbah29TlgWEL2dyZnmhbuISMCGTqRk1izaNsTIU064fgbnpLrLk X-Received: by 2002:a17:907:c17:b0:9a5:ca06:6a25 with SMTP id ga23-20020a1709070c1700b009a5ca066a25mr3838511ejc.16.1695127352855; Tue, 19 Sep 2023 05:42:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695127352; cv=none; d=google.com; s=arc-20160816; b=dmrOc2fJLzPyA1HSgR2/ZYTUzm8mfYM296CGYfaPz4gKsCFH95Eo1c1st3NE1vffZ8 7JlqPVQTF3qz06Ync4xcNuP9ojwGqXiJzqwp2qSXd3qS+jKoW8XhuFMJON38wv4x8vqj ldNA2xsP7r+VdetxYi/aXCQT0neYpVLDCMFG5iWA4qqKkHAZYUhdwM0JYP4Vd21+iTPP JUYL1JCE5NCZY9/EeTAS4kY0/qTgjTXsRoqtIHhEKmTeaXgNnTe/eS7eSv/7k8BwsplS thhDLFmVBwrBXQph6c52zFEK8tAxQ4pbraC/fCQdRurPYQkrvGlPqa3yV06C24PrJiuG HuoA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:list-subscribe:list-help:list-post:list-archive :list-unsubscribe:list-id:precedence:message-id:mime-version:subject :to:from:date:dkim-signature:dkim-signature:dmarc-filter :delivered-to; bh=i54yS00xV4fy3hXdZILThykdblIc7Dz7oes7WnKBhFQ=; fh=hPrbWPhweUx4V0GV9uXJqbyAzg2ABmTz7kczrAQqMmM=; b=h2M4eoNYQaL5sNKtL1hRtRBDBWUv0E9YIzXWcWosJVJwBqhcA8jtnzwdAZ7XLu1+jP j/CQsSKx5UGcU1pNFRm4QamR0Yn3meUbu0nELYJfG8G05PBudi58Qq4T4gjI4mKZPh6l nRJ6el433wWWhQAt+mh7X+B6t6BWgHaiTRrsoApEajoBdzyebLK1egsZ1NbFDGhJPdv+ abOeLyTZzJdnnw546TEhgXF39V6vQTcv/Z/9lLToKg3A5tTMylhUF29u93T+fjO5L9vU cpkjOGbFhyqA7wNNrlG5IHhiNjpYA/vDjq3hr2PVMTTpt285sQ7huL44wbqAwML6CFUI qaUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=mm6MYS9b; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=p8lKrL7d; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from server2.sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id g13-20020a170906594d00b009a1c2fcdce8si9860374ejr.185.2023.09.19.05.42.32 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 19 Sep 2023 05:42:32 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) client-ip=8.43.85.97; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=mm6MYS9b; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=p8lKrL7d; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 8.43.85.97 as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 8882F3856DC2 for ; Tue, 19 Sep 2023 12:42:12 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by sourceware.org (Postfix) with ESMTPS id 463EF3856DF4 for ; Tue, 19 Sep 2023 12:41:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 463EF3856DF4 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out2.suse.de (Postfix) with ESMTPS id 536931FEEF for ; Tue, 19 Sep 2023 12:41:46 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1695127306; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type; bh=i54yS00xV4fy3hXdZILThykdblIc7Dz7oes7WnKBhFQ=; b=mm6MYS9bA4l3FAmy1StOEmyrInxp3wb4aVF1lPKUuRM5PfHULArNaRrCw2tDsWqFJEVqqQ RZ2ZpXgGiEgVu3oXg1JBSEQYjg3fYOdLKNSOzLO0wMLyz3gXL9EtWEtmmWYdnkRnCj7mTI 8acUC5DHbZb9KKf6uLjCzewb7SPTJVY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1695127306; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type; bh=i54yS00xV4fy3hXdZILThykdblIc7Dz7oes7WnKBhFQ=; b=p8lKrL7doABHG0JSNfSwC97BmUOuz+86mX0+yH30VFgHixjDkvDk327l5uxkpyekviC7w8 aQgFxTuHmM2xabAA== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id 3418D13458 for ; Tue, 19 Sep 2023 12:41:46 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id GMiFCwqXCWXSGQAAMHmgww (envelope-from ) for ; Tue, 19 Sep 2023 12:41:46 +0000 Date: Tue, 19 Sep 2023 14:41:45 +0200 (CEST) From: Richard Biener To: gcc-patches@gcc.gnu.org Subject: [PATCH] c/111468 - dump unordered compare operators in their GIMPLE form with -gimple MIME-Version: 1.0 Message-Id: <20230919124146.3418D13458@imap2.suse-dmz.suse.de> X-Spam-Status: No, score=-11.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1777469859596270269 X-GMAIL-MSGID: 1777469859596270269 The following adjusts -gimple dumping to dump the unordered compare ops and *h in their GIMPLE form. It also adds parsing for __LTGT which I missed before. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. PR c/111468 gcc/c/ * gimple-parser.cc (c_parser_gimple_binary_expression): Handle __LTGT. gcc/ * tree-pretty-print.h (op_symbol_code): Add defaulted flags argument. * tree-pretty-print.cc (op_symbol): Likewise. (op_symbol_code): Print TDF_GIMPLE variant if requested. * gimple-pretty-print.cc (dump_binary_rhs): Pass flags to op_symbol_code. (dump_gimple_cond): Likewise. gcc/testsuite/ * gcc.dg/gimplefe-50.c: Amend. --- gcc/c/gimple-parser.cc | 5 +++++ gcc/gimple-pretty-print.cc | 4 ++-- gcc/testsuite/gcc.dg/gimplefe-50.c | 1 + gcc/tree-pretty-print.cc | 26 +++++++++++++------------- gcc/tree-pretty-print.h | 2 +- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/gcc/c/gimple-parser.cc b/gcc/c/gimple-parser.cc index 9cf29701c06..f43c0398655 100644 --- a/gcc/c/gimple-parser.cc +++ b/gcc/c/gimple-parser.cc @@ -1044,6 +1044,11 @@ c_parser_gimple_binary_expression (gimple_parser &parser, tree ret_type) code = ORDERED_EXPR; break; } + else if (strcmp (IDENTIFIER_POINTER (id), "__LTGT") == 0) + { + code = LTGT_EXPR; + break; + } } /* Fallthru. */ default: diff --git a/gcc/gimple-pretty-print.cc b/gcc/gimple-pretty-print.cc index 82017b92e89..320df9197b4 100644 --- a/gcc/gimple-pretty-print.cc +++ b/gcc/gimple-pretty-print.cc @@ -480,7 +480,7 @@ dump_binary_rhs (pretty_printer *buffer, const gassign *gs, int spc, else dump_generic_node (buffer, gimple_assign_rhs1 (gs), spc, flags, false); pp_space (buffer); - pp_string (buffer, op_symbol_code (gimple_assign_rhs_code (gs))); + pp_string (buffer, op_symbol_code (gimple_assign_rhs_code (gs), flags)); pp_space (buffer); if (op_prio (gimple_assign_rhs2 (gs)) <= op_code_prio (code)) { @@ -1092,7 +1092,7 @@ dump_gimple_cond (pretty_printer *buffer, const gcond *gs, int spc, flags | ((flags & TDF_GIMPLE) ? TDF_GIMPLE_VAL : TDF_NONE), false); pp_space (buffer); - pp_string (buffer, op_symbol_code (gimple_cond_code (gs))); + pp_string (buffer, op_symbol_code (gimple_cond_code (gs), flags)); pp_space (buffer); dump_generic_node (buffer, gimple_cond_rhs (gs), spc, flags | ((flags & TDF_GIMPLE) ? TDF_GIMPLE_VAL : TDF_NONE), diff --git a/gcc/testsuite/gcc.dg/gimplefe-50.c b/gcc/testsuite/gcc.dg/gimplefe-50.c index 03db786b619..63d228ce76d 100644 --- a/gcc/testsuite/gcc.dg/gimplefe-50.c +++ b/gcc/testsuite/gcc.dg/gimplefe-50.c @@ -14,6 +14,7 @@ foo (float a, float b) x_7 = a_1(D) __UNEQ b_2(D); x_8 = a_1(D) __UNORDERED b_2(D); x_9 = a_1(D) __ORDERED b_2(D); + x_10 = a_1(D) __LTGT b_2(D); if (a_1(D) __UNEQ b_2(D)) goto __BB4; else diff --git a/gcc/tree-pretty-print.cc b/gcc/tree-pretty-print.cc index 45a1fd3e848..12c57c14dd4 100644 --- a/gcc/tree-pretty-print.cc +++ b/gcc/tree-pretty-print.cc @@ -49,7 +49,7 @@ along with GCC; see the file COPYING3. If not see #endif /* Local functions, macros and variables. */ -static const char *op_symbol (const_tree); +static const char *op_symbol (const_tree, dump_flags_t = TDF_NONE); static void newline_and_indent (pretty_printer *, int); static void maybe_init_pretty_print (FILE *); static void print_struct_decl (pretty_printer *, const_tree, int, dump_flags_t); @@ -4327,7 +4327,7 @@ op_prio (const_tree op) /* Return the symbol associated with operator CODE. */ const char * -op_symbol_code (enum tree_code code) +op_symbol_code (enum tree_code code, dump_flags_t flags) { switch (code) { @@ -4354,14 +4354,14 @@ op_symbol_code (enum tree_code code) return "&"; case ORDERED_EXPR: - return "ord"; + return (flags & TDF_GIMPLE) ? "__ORDERED" : "ord"; case UNORDERED_EXPR: - return "unord"; + return (flags & TDF_GIMPLE) ? "__UNORDERED" : "unord"; case EQ_EXPR: return "=="; case UNEQ_EXPR: - return "u=="; + return (flags & TDF_GIMPLE) ? "__UNEQ" : "u=="; case NE_EXPR: return "!="; @@ -4369,25 +4369,25 @@ op_symbol_code (enum tree_code code) case LT_EXPR: return "<"; case UNLT_EXPR: - return "u<"; + return (flags & TDF_GIMPLE) ? "__UNLT" : "u<"; case LE_EXPR: return "<="; case UNLE_EXPR: - return "u<="; + return (flags & TDF_GIMPLE) ? "__UNLE" : "u<="; case GT_EXPR: return ">"; case UNGT_EXPR: - return "u>"; + return (flags & TDF_GIMPLE) ? "__UNGT" : "u>"; case GE_EXPR: return ">="; case UNGE_EXPR: - return "u>="; + return (flags & TDF_GIMPLE) ? "__UNGE" : "u>="; case LTGT_EXPR: - return "<>"; + return (flags & TDF_GIMPLE) ? "__LTGT" : "<>"; case LSHIFT_EXPR: return "<<"; @@ -4417,7 +4417,7 @@ op_symbol_code (enum tree_code code) return "w*"; case MULT_HIGHPART_EXPR: - return "h*"; + return (flags & TDF_GIMPLE) ? "__MULT_HIGHPART" : "h*"; case NEGATE_EXPR: case MINUS_EXPR: @@ -4488,9 +4488,9 @@ op_symbol_code (enum tree_code code) /* Return the symbol associated with operator OP. */ static const char * -op_symbol (const_tree op) +op_symbol (const_tree op, dump_flags_t flags) { - return op_symbol_code (TREE_CODE (op)); + return op_symbol_code (TREE_CODE (op), flags); } /* Prints the name of a call. NODE is the CALL_EXPR_FN of a CALL_EXPR or diff --git a/gcc/tree-pretty-print.h b/gcc/tree-pretty-print.h index 681384a8e58..2c8ee9aa377 100644 --- a/gcc/tree-pretty-print.h +++ b/gcc/tree-pretty-print.h @@ -49,7 +49,7 @@ extern int dump_generic_node (pretty_printer *, tree, int, dump_flags_t, bool); extern void print_declaration (pretty_printer *, tree, int, dump_flags_t); extern int op_code_prio (enum tree_code); extern int op_prio (const_tree); -extern const char *op_symbol_code (enum tree_code); +extern const char *op_symbol_code (enum tree_code, dump_flags_t = TDF_NONE); extern void pretty_print_string (pretty_printer *, const char *, size_t); extern void print_call_name (pretty_printer *, tree, dump_flags_t); extern void pp_tree_identifier (pretty_printer *, tree);