From patchwork Thu Oct 20 20:20:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Jason Merrill X-Patchwork-Id: 6376 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a5d:4242:0:0:0:0:0 with SMTP id s2csp306398wrr; Thu, 20 Oct 2022 13:22:10 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5KoLTFQ/gWRKlyF0B+HnPp8ruF20n6wkAQkg4v1FptxxSlptYcUy7ijpMzdSc4ymMPEdgC X-Received: by 2002:a17:906:ef8c:b0:78d:46b7:6847 with SMTP id ze12-20020a170906ef8c00b0078d46b76847mr12307348ejb.241.1666297330180; Thu, 20 Oct 2022 13:22:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1666297330; cv=none; d=google.com; s=arc-20160816; b=ZKXwA13y2pEKIX4WKAfFY1m5ysiRRDK2f01h1sTFXVKEsjecXQ/2rod+JRkB104Zxj GxAwVLHqZ1kN0PVgYIqQw5mq4VNgfTM0nfVd0N+15PCr5gMzfsT4TbntYhwlsXoZ1PWb uNqhT7Cfcr+tCjllK2/hxUBlccg7cAekUuOxH/WtwqHycMwG+d5H91ZMAKifWF/QovDU CnW4ijzTL4Gn5rxOKtdQWgzStV817tNWN3U1ApdFwULrl25hdVfBAVJ+JALA/wDpVUXK EC7owIawcMfWp9odI3/YrIZeCR0Y5qw1eNhE0HHaKfcgY9oEuoTANCizaGP2D9kCVVB5 MH8g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:from:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:message-id:date:subject:to :dmarc-filter:delivered-to:dkim-signature:dkim-filter; bh=7ayo0qYLEcUf9sTj0OOPtc9PxWAlkg9gyWp5VZJ+OEI=; b=vBdzDJctiGD60u+PlPY/rXhDUdcjHcM/5xejLFp14WgO2+LVw3Nj31+WXs5DVuIlIp fDBcKoH5vApDkdFnTan32Oi8fujJphbqD5NVt7TJ/4DtMuIYaezTSzWSDARNIkv7FLlJ SSo2MzpEUKVllMsji3OYWS8LOhWLcpMk8Gl7vhA3bMjJDDMXCThGUBDC6VVcGyNblngr nblKJNsBAgpncaR+cZxbltXqmZwpPrwDsK4CzmB5U+Q9bCMPgO74/Xb7VraXSPlJXWvS rPycDK2i9Or9o+h2XM/X3BaedZtGkrquPsYSMYia4o+bpXJgz8qwgmb3BnH3D9C8+p3e rDeQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gcc.gnu.org header.s=default header.b=QsTso+5q; 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=gnu.org Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id cr17-20020a170906d55100b00791994dfb9esi10227130ejc.491.2022.10.20.13.22.10 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Oct 2022 13:22:10 -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=@gcc.gnu.org header.s=default header.b=QsTso+5q; 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=gnu.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 403DB384B82B for ; Thu, 20 Oct 2022 20:22:09 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 403DB384B82B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1666297329; bh=7ayo0qYLEcUf9sTj0OOPtc9PxWAlkg9gyWp5VZJ+OEI=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=QsTso+5qF6imS7FYZVXlbSTF4JHuVnpJNaAB236aUjavdAoycQWF02EvvEAgbkO1c E7GXnoqk489uicTlfb9N5p0MnUEWW+9W8QKbQDcUultY+0uUqGBEGR60sFgmpuhpen CEsvGGZo4+nCwImvXm6vBQ3TN+NVDhqiWvTwbJRc= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 020AB384B83F for ; Thu, 20 Oct 2022 20:21:09 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 020AB384B83F Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-371-3mUMPg0OMZGrdNzrW_jzvw-1; Thu, 20 Oct 2022 16:21:08 -0400 X-MC-Unique: 3mUMPg0OMZGrdNzrW_jzvw-1 Received: by mail-qk1-f199.google.com with SMTP id bm16-20020a05620a199000b006ee95743ad2so969914qkb.14 for ; Thu, 20 Oct 2022 13:21:08 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=7ayo0qYLEcUf9sTj0OOPtc9PxWAlkg9gyWp5VZJ+OEI=; b=8M9nfoFH6qP93uVMCtzaaXAjWP8z/sc9yrUfROzEoJqUDIZS/R9cCCbRZzUg/JMqaX 1NXx00OmTldKdY3LjMKVctFadD2QwaHT+Qz0SrTBTlJzoQUlT1oJ2uISZ3uBGweDWbcs h7J1VnXI51fpUXpPNhSWZjzxZ5bfcRBo86b7/45S8WaNs39GWT9PYNbUvrq1Jo0vbcCE rTfzYPNKb7B4l+kzWSGo3Y79MkaPYgCHU5xVuswb6QwUZMPumfW2UNYowu6kUp1RFlzU sXmX8rg0aNJRNc5WnvWv4vfE+x7BReMrxcdiau5rqT0+qN2/zZPYPVazXWoTK1QxVbI2 siWQ== X-Gm-Message-State: ACrzQf3GaosT85l/edBhuhMlRt7qz/bBcbcG+N5JNzmJQ3zMci1PrZuQ Nxh7wRW8avJbO75CmXcCC97hFjl1XPBgdtBS4H4Ow4A8d3ouoVu+b4g5SQ3AVBLEHxgr9UHh1Ja 1ELAi/1oBHI2+ObY9Zbow2p4biLUeQninC6TxbF9Wzzs2pUM108xrrARLUEZjuZi4qA== X-Received: by 2002:a05:622a:1a9f:b0:39c:ae32:9f7f with SMTP id s31-20020a05622a1a9f00b0039cae329f7fmr13346925qtc.80.1666297267333; Thu, 20 Oct 2022 13:21:07 -0700 (PDT) X-Received: by 2002:a05:622a:4a06:b0:393:9a99:a0b9 with SMTP id fv6-20020a05622a4a0600b003939a99a0b9mr12693681qtb.665.1666297256566; Thu, 20 Oct 2022 13:20:56 -0700 (PDT) Received: from barrymore.redhat.com (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id cm24-20020a05622a251800b0039492d503cdsm6774114qtb.51.2022.10.20.13.20.55 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Oct 2022 13:20:55 -0700 (PDT) To: gcc-patches@gcc.gnu.org Subject: [PATCH RFA] tree: add build_string_literal overloads Date: Thu, 20 Oct 2022 16:20:53 -0400 Message-Id: <20221020202053.3389227-1-jason@redhat.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-12.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, 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.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Jason Merrill via Gcc-patches From: Jason Merrill Reply-To: Jason Merrill Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Sender: "Gcc-patches" X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1747239389254990405?= X-GMAIL-MSGID: =?utf-8?q?1747239389254990405?= Tested x86_64-pc-linux-gnu, OK for trunk? -- >8 -- Simplify several calls to build_string_literal by not requiring redundant strlen or IDENTIFIER_* in the caller. I also corrected a wrong comment on IDENTIFIER_LENGTH. gcc/ChangeLog: * tree.h (build_string_literal): New one-argument overloads that take tree (identifier) and const char *. * builtins.cc (fold_builtin_FILE) (fold_builtin_FUNCTION) * gimplify.cc (gimple_add_init_for_auto_var) * vtable-verify.cc (verify_bb_vtables): Simplify calls. gcc/cp/ChangeLog: * cp-gimplify.cc (fold_builtin_source_location) * vtable-class-hierarchy.cc (register_all_pairs): Simplify calls to build_string_literal. (build_string_from_id): Remove. --- gcc/tree.h | 9 ++++++++- gcc/builtins.cc | 6 +++--- gcc/cp/cp-gimplify.cc | 6 +++--- gcc/cp/vtable-class-hierarchy.cc | 20 +++----------------- gcc/gimplify.cc | 6 ++---- gcc/vtable-verify.cc | 12 ++---------- 6 files changed, 21 insertions(+), 38 deletions(-) base-commit: 25861cf3a88a07c8dca3fb32d098c0ad756bbe38 diff --git a/gcc/tree.h b/gcc/tree.h index 9af971cf401..a50f7b2be9d 100644 --- a/gcc/tree.h +++ b/gcc/tree.h @@ -1135,7 +1135,7 @@ extern void omp_clause_range_check_failed (const_tree, const char *, int, /* Define fields and accessors for some special-purpose tree nodes. */ -/* As with STRING_CST, in C terms this is sizeof, not strlen. */ +/* Unlike STRING_CST, in C terms this is strlen, not sizeof. */ #define IDENTIFIER_LENGTH(NODE) \ (IDENTIFIER_NODE_CHECK (NODE)->identifier.id.len) #define IDENTIFIER_POINTER(NODE) \ @@ -4706,6 +4706,13 @@ extern tree build_alloca_call_expr (tree, unsigned int, HOST_WIDE_INT); extern tree build_string_literal (unsigned, const char * = NULL, tree = char_type_node, unsigned HOST_WIDE_INT = HOST_WIDE_INT_M1U); +inline tree build_string_literal (const char *p) +{ return build_string_literal (strlen (p) + 1, p); } +inline tree build_string_literal (tree t) +{ + return build_string_literal (IDENTIFIER_LENGTH (t) + 1, + IDENTIFIER_POINTER (t)); +} /* Construct various nodes representing data types. */ diff --git a/gcc/builtins.cc b/gcc/builtins.cc index 5f319b28030..26898d7e27e 100644 --- a/gcc/builtins.cc +++ b/gcc/builtins.cc @@ -9521,10 +9521,10 @@ fold_builtin_FILE (location_t loc) __FILE__ macro so it appears appropriate to use the same file prefix mappings. */ fname = remap_macro_filename (fname); - return build_string_literal (strlen (fname) + 1, fname); + return build_string_literal (fname); } - return build_string_literal (1, ""); + return build_string_literal (""); } /* Fold a call to __builtin_FUNCTION to a constant string. */ @@ -9537,7 +9537,7 @@ fold_builtin_FUNCTION () if (current_function_decl) name = lang_hooks.decl_printable_name (current_function_decl, 0); - return build_string_literal (strlen (name) + 1, name); + return build_string_literal (name); } /* Fold a call to __builtin_LINE to an integer constant. */ diff --git a/gcc/cp/cp-gimplify.cc b/gcc/cp/cp-gimplify.cc index 28c339869b8..cc8bfada5af 100644 --- a/gcc/cp/cp-gimplify.cc +++ b/gcc/cp/cp-gimplify.cc @@ -3378,10 +3378,10 @@ fold_builtin_source_location (location_t loc) if (const char *fname = LOCATION_FILE (loc)) { fname = remap_macro_filename (fname); - val = build_string_literal (strlen (fname) + 1, fname); + val = build_string_literal (fname); } else - val = build_string_literal (1, ""); + val = build_string_literal (""); } else if (strcmp (n, "_M_function_name") == 0) { @@ -3390,7 +3390,7 @@ fold_builtin_source_location (location_t loc) if (current_function_decl) name = cxx_printable_name (current_function_decl, 2); - val = build_string_literal (strlen (name) + 1, name); + val = build_string_literal (name); } else if (strcmp (n, "_M_line") == 0) val = build_int_cst (TREE_TYPE (field), LOCATION_LINE (loc)); diff --git a/gcc/cp/vtable-class-hierarchy.cc b/gcc/cp/vtable-class-hierarchy.cc index cc1df1ebdb2..1e180ea61dc 100644 --- a/gcc/cp/vtable-class-hierarchy.cc +++ b/gcc/cp/vtable-class-hierarchy.cc @@ -467,19 +467,6 @@ check_and_record_registered_pairs (tree vtable_decl, tree vptr_address, return !inserted_something; } -/* Given an IDENTIFIER_NODE, build and return a string literal based on it. */ - -static tree -build_string_from_id (tree identifier) -{ - int len; - - gcc_assert (TREE_CODE (identifier) == IDENTIFIER_NODE); - - len = IDENTIFIER_LENGTH (identifier); - return build_string_literal (len + 1, IDENTIFIER_POINTER (identifier)); -} - /* A class may contain secondary vtables in it, for various reasons. This function goes through the decl chain of a class record looking for any fields that point to secondary vtables, and adding calls to @@ -920,7 +907,7 @@ register_all_pairs (tree body) if (flag_vtv_debug) - str1 = build_string_from_id (DECL_NAME (base_ptr_var_decl)); + str1 = build_string_literal (DECL_NAME (base_ptr_var_decl)); new_type = build_pointer_type (TREE_TYPE (base_ptr_var_decl)); arg1 = build1 (ADDR_EXPR, new_type, base_ptr_var_decl); @@ -953,7 +940,7 @@ register_all_pairs (tree body) if (vtable_decl) { vtable_should_be_output = TREE_ASM_WRITTEN (vtable_decl); - str2 = build_string_from_id (DECL_NAME (vtable_decl)); + str2 = build_string_literal (DECL_NAME (vtable_decl)); } if (vtable_decl && vtable_should_be_output) @@ -1009,8 +996,7 @@ register_all_pairs (tree body) arg2 = build_key_buffer_arg (base_ptr_var_decl); if (str2 == NULL_TREE) - str2 = build_string_literal (strlen ("unknown") + 1, - "unknown"); + str2 = build_string_literal ("unknown"); if (flag_vtv_debug) output_set_info (current->class_info->class_type, diff --git a/gcc/gimplify.cc b/gcc/gimplify.cc index 42a996dfeb9..69bad340d2e 100644 --- a/gcc/gimplify.cc +++ b/gcc/gimplify.cc @@ -1771,14 +1771,12 @@ gimple_add_init_for_auto_var (tree decl, tree decl_name = NULL_TREE; if (DECL_NAME (decl)) - decl_name = build_string_literal (IDENTIFIER_LENGTH (DECL_NAME (decl)) + 1, - IDENTIFIER_POINTER (DECL_NAME (decl))); + decl_name = build_string_literal (DECL_NAME (decl)); else { char *decl_name_anonymous = xasprintf ("D.%u", DECL_UID (decl)); - decl_name = build_string_literal (strlen (decl_name_anonymous) + 1, - decl_name_anonymous); + decl_name = build_string_literal (decl_name_anonymous); free (decl_name_anonymous); } diff --git a/gcc/vtable-verify.cc b/gcc/vtable-verify.cc index 24894e7f108..f01058e5412 100644 --- a/gcc/vtable-verify.cc +++ b/gcc/vtable-verify.cc @@ -725,10 +725,6 @@ verify_bb_vtables (basic_block bb) trace information to debug problems. */ if (flag_vtv_debug) { - int len1 = IDENTIFIER_LENGTH - (DECL_NAME (vtbl_var_decl)); - int len2 = strlen (vtable_name); - call_stmt = gimple_build_call (verify_vtbl_ptr_fndecl, 4, build1 (ADDR_EXPR, @@ -737,12 +733,8 @@ verify_bb_vtables (basic_block bb) vtbl_var_decl), lhs, build_string_literal - (len1 + 1, - IDENTIFIER_POINTER - (DECL_NAME - (vtbl_var_decl))), - build_string_literal (len2 + 1, - vtable_name)); + (DECL_NAME (vtbl_var_decl)), + build_string_literal (vtable_name)); } else call_stmt = gimple_build_call