From patchwork Wed Apr 5 14:03:52 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arthur Cohen X-Patchwork-Id: 79728 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:b0ea:0:b0:3b6:4342:cba0 with SMTP id b10csp366809vqo; Wed, 5 Apr 2023 07:53:52 -0700 (PDT) X-Google-Smtp-Source: AKy350bn7vSnFiYfNX/OvL+QSrdRQ56cgkeE7PMv9cepDRBB9VmWqg7UpIuDpj3dU3NnZGngm214 X-Received: by 2002:a17:906:829a:b0:93d:425a:b935 with SMTP id h26-20020a170906829a00b0093d425ab935mr3564550ejx.25.1680706432744; Wed, 05 Apr 2023 07:53:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680706432; cv=none; d=google.com; s=arc-20160816; b=Veh0KFLWDEzCFlJajzBxue3kc7XnqtJjqx70VJzagSuaM6GVxOO1FgdjPyvqqToO65 NAUbIoB5y10Fg9HKggnKgiz73RICRaywKIDGl9jNSS+Ot0NnQeqzJKOrDIJOPEEFSuzt orzHS36lZenNUHk9ed1QxRJWmWOwqodhFuVgVQfvahZ7Ec8equ+oAXa2lJM9XkgmpF+d HLM3cMVbw70258kfEmrXlF3QkR5PWQqB6Ag3KBfYQ7y6p3+n5ivFJQdxWRpgBy5gqlIK O0CLTTLKeFl88H8LG8DDM7WTOm+YeXzfXpeYMI5fuCANVbASrvCKuIZb8gbAAiq1n8Wv PSvw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence :content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:dkim-signature:dmarc-filter :delivered-to; bh=LO8GaK0iLh8Yqa2+6+UtDHiI7SCb03gtz2TCCuQHamk=; b=krkX2ZaeZEnl90iJ6BhsbRTuvTcIVW58Sc1IVJHnfTI/9Pxc6zTro2PM/sPl4TSPiZ Mi5Kt8h5NMPUDysalxfZOYjQP4VgIiRvvwzPPJ1164rB2BjMc63exyOZDOyEdcT4Te9i E6oLlY1hjYev7nzjQEUSQzHbciH0+Fn6N66UxhS4pP57NwPut6iaKaJHBgHo2femfXQN hBvdgloxbwABmBTtsff+iTi33yy6UjUqPZ8kezBpr47F9jaoYvL0hEnPqYzuUJHA0/GP PcuplMKlUsJpG0jmqXmYsMZXl5EK7L/XsL7yPLKg5NFTPj4HVqAJSviF14V8zri11NwG zAGw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b=bnPzD3ja; 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" Received: from sourceware.org (ip-8-43-85-97.sourceware.org. [8.43.85.97]) by mx.google.com with ESMTPS id ot3-20020a170906ccc300b00945552ee129si11895144ejb.616.2023.04.05.07.53.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:53:52 -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=@embecosm.com header.s=google header.b=bnPzD3ja; 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" Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 57331397E045 for ; Wed, 5 Apr 2023 14:19:53 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x332.google.com (mail-wm1-x332.google.com [IPv6:2a00:1450:4864:20::332]) by sourceware.org (Postfix) with ESMTPS id 03E1E3881D3E for ; Wed, 5 Apr 2023 14:06:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 03E1E3881D3E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com Received: by mail-wm1-x332.google.com with SMTP id m8so10053366wmq.5 for ; Wed, 05 Apr 2023 07:06:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1680703576; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:from:to:cc:subject :date:message-id:reply-to; bh=LO8GaK0iLh8Yqa2+6+UtDHiI7SCb03gtz2TCCuQHamk=; b=bnPzD3ja61x4brCLcMD2gCmh2dVwPcy24Ts5hhJ3QAFtwvXKiLZTZfqNm5k7bGz3ql mBVIFNor5yTkz6TDeRziFKEOqW3ZJHc1cN/r2bUqhz77YJ7RAYmYerG4v2pY/WeYGFP+ YBq9kQLhtS5zWNcs4irWto7crQtPPZBYKG10yU6GyJ5cq78dxdKYcp5aPbhsMo1d2fP/ SSYTaxe0opBxFGfBFickOHGC04+CUGzxNPV1Z5tE2pO8EBCmaMbqv56VIp10dCahMnk+ JBYin7+Z3lx5ZQvwZ05Z39hkAJDpb2rp8GYtMUpAVcmJYTSPmsxfaNb7jUXkB5KT2+P3 twew== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680703576; h=content-transfer-encoding:mime-version:reply-to:references :in-reply-to:message-id:date:subject:cc:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=LO8GaK0iLh8Yqa2+6+UtDHiI7SCb03gtz2TCCuQHamk=; b=r0d0uSfXZ2fHqf0eHEzRfc3XREfmbCdZIkjGMpaa8ufVSIT7SM7+ZEUoAutHLpubRS 0MDiToR2nELlHBnz+00hVv1SyR8bHDms8yU8bmpIFdoukXycMAuqmIhX6UN834jApI4Q K8m1BAf9BdCOx6oSuryrkXgTbIT82pjeep9aCCrE4JsR2YGlpYAuJZ9E6MIZOxEwRsOH IacJNZPNqtp47zgd6uLRcge753cUFdwJ53khcOQWwPn+RjhyCn+me3ztQIblCl261rAH gN4YhFxXd/hl39TMQLhf61xQlGjsXnyf7op2ePgktIFP0DPMuUSDI0PiSS3juqOVe0uI K5bQ== X-Gm-Message-State: AAQBX9fFEZARzfSteCv9DjToGdSalOg2QkFiysfNQZNyWgaL1nqwh0fj QnkWqvl2hW7wWXe6DFtR1o2ikakHXCX4KX57mg== X-Received: by 2002:a7b:c7c5:0:b0:3ea:ed4d:38eb with SMTP id z5-20020a7bc7c5000000b003eaed4d38ebmr4979883wmk.24.1680703576343; Wed, 05 Apr 2023 07:06:16 -0700 (PDT) Received: from platypus.localdomain ([62.23.166.218]) by smtp.gmail.com with ESMTPSA id ay8-20020a05600c1e0800b003edddae1068sm2330150wmb.9.2023.04.05.07.06.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:06:15 -0700 (PDT) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Owen Avery Subject: [committed 68/88] gccrs: Simplify WildcardPattern let statement handling Date: Wed, 5 Apr 2023 16:03:52 +0200 Message-Id: <20230405140411.3016563-69-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.40.0 In-Reply-To: <20230405140411.3016563-1-arthur.cohen@embecosm.com> References: <20230405140411.3016563-1-arthur.cohen@embecosm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-14.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=unavailable 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: , Reply-To: arthur.cohen@embecosm.com 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?1762348428629531278?= X-GMAIL-MSGID: =?utf-8?q?1762348428629531278?= From: Owen Avery gcc/rust/ChangeLog: * backend/rust-compile-pattern.cc (CompilePatternLet::visit): Simplify WildcardPattern compilation for let statements. * backend/rust-compile-var-decl.h: (CompileVarDecl::visit): Remove variable declaration for WildcardPattern. * resolve/rust-ast-resolve-pattern.h: (PatternDeclaration::visit): Remove name resolution for WildcardPattern. Signed-off-by: Owen Avery --- gcc/rust/backend/rust-compile-pattern.cc | 28 +++++---------------- gcc/rust/backend/rust-compile-var-decl.h | 16 +----------- gcc/rust/resolve/rust-ast-resolve-pattern.h | 7 ------ 3 files changed, 7 insertions(+), 44 deletions(-) diff --git a/gcc/rust/backend/rust-compile-pattern.cc b/gcc/rust/backend/rust-compile-pattern.cc index cb4b082f9c8..d98f7beb0e8 100644 --- a/gcc/rust/backend/rust-compile-pattern.cc +++ b/gcc/rust/backend/rust-compile-pattern.cc @@ -361,30 +361,14 @@ CompilePatternLet::visit (HIR::IdentifierPattern &pattern) void CompilePatternLet::visit (HIR::WildcardPattern &pattern) { - Bvariable *var = nullptr; - rust_assert ( - ctx->lookup_var_decl (pattern.get_pattern_mappings ().get_hirid (), &var)); - - auto fnctx = ctx->peek_fn (); - if (ty->is_unit ()) - { - ctx->add_statement (init_expr); + tree init_stmt = NULL; + tree stmt_type = TyTyResolveCompile::compile (ctx, ty); - tree stmt_type = TyTyResolveCompile::compile (ctx, ty); + ctx->get_backend ()->temporary_variable (ctx->peek_fn ().fndecl, NULL_TREE, + stmt_type, init_expr, false, + pattern.get_locus (), &init_stmt); - auto unit_type_init_expr - = ctx->get_backend ()->constructor_expression (stmt_type, false, {}, -1, - rval_locus); - auto s = ctx->get_backend ()->init_statement (fnctx.fndecl, var, - unit_type_init_expr); - ctx->add_statement (s); - } - else - { - auto s - = ctx->get_backend ()->init_statement (fnctx.fndecl, var, init_expr); - ctx->add_statement (s); - } + ctx->add_statement (init_stmt); } void diff --git a/gcc/rust/backend/rust-compile-var-decl.h b/gcc/rust/backend/rust-compile-var-decl.h index 9e07999f273..13b429d41e1 100644 --- a/gcc/rust/backend/rust-compile-var-decl.h +++ b/gcc/rust/backend/rust-compile-var-decl.h @@ -53,21 +53,6 @@ public: locals.push_back (var); } - void visit (HIR::WildcardPattern &pattern) override - { - translated_type = ctx->get_backend ()->immutable_type (translated_type); - - Bvariable *var - = ctx->get_backend ()->local_variable (fndecl, "_", translated_type, - NULL /*decl_var*/, - pattern.get_locus ()); - - HirId stmt_id = pattern.get_pattern_mappings ().get_hirid (); - ctx->insert_var_decl (stmt_id, var); - - locals.push_back (var); - } - // Empty visit for unused Pattern HIR nodes. void visit (HIR::LiteralPattern &) override {} void visit (HIR::PathInExpression &) override {} @@ -78,6 +63,7 @@ public: void visit (HIR::StructPattern &) override {} void visit (HIR::TuplePattern &) override {} void visit (HIR::TupleStructPattern &) override {} + void visit (HIR::WildcardPattern &) override {} private: CompileVarDecl (Context *ctx, tree fndecl, tree translated_type, diff --git a/gcc/rust/resolve/rust-ast-resolve-pattern.h b/gcc/rust/resolve/rust-ast-resolve-pattern.h index 3e74f0a4cc6..4c7d13a16d0 100644 --- a/gcc/rust/resolve/rust-ast-resolve-pattern.h +++ b/gcc/rust/resolve/rust-ast-resolve-pattern.h @@ -70,13 +70,6 @@ public: pattern.get_node_id (), pattern.get_locus (), type); } - void visit (AST::WildcardPattern &pattern) override - { - resolver->get_name_scope ().insert ( - CanonicalPath::new_seg (pattern.get_node_id (), "_"), - pattern.get_node_id (), pattern.get_locus (), type); - } - void visit (AST::GroupedPattern &pattern) override { pattern.get_pattern_in_parens ()->accept_vis (*this);