From patchwork Wed Feb 7 11:43:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Arthur Cohen X-Patchwork-Id: 197914 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:7301:168b:b0:106:860b:bbdd with SMTP id ma11csp2203381dyb; Wed, 7 Feb 2024 04:52:29 -0800 (PST) X-Google-Smtp-Source: AGHT+IHqH76r0D4/NVjjYyDQvYFephCJ1YMoYXPsONTf7tea0yirZbEhTfQSVM4Bm3k/XrlKkH4c X-Received: by 2002:ac8:1009:0:b0:42c:1647:a72e with SMTP id z9-20020ac81009000000b0042c1647a72emr8936045qti.13.1707310348895; Wed, 07 Feb 2024 04:52:28 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1707310348; cv=pass; d=google.com; s=arc-20160816; b=IIcz5ppJPcpiAXqX7mxmX65MJ/VYSR4oNOD4ioprVfmx2BIN24JeHZy2Nv8fU9edfS XX80HULDZTO7bNQnow/s7CmHK4f0TshroNGwlRgOakjDdjX13icgCFPkJ3YN4kiMmbPq qQouc+X0V50fJRDpcc9/lukx0wC5AdPYyHajaFqybQQfK5b3eommuvy8ND3MxhWFL9Cw lAKFaeV4JrLjzx+pSumuSM92JEg8JVgW7n41ZIbQyB/OoVBNdCQQJPlywyCD0xVmIZ8U cHh7FUiMF9jvv7Vzla4ng2Y8lLFdfvbc0S/vNK9wP4rlr1d1m5ZSeG4NZim427ti0R8R h9Lg== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=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:arc-filter:dmarc-filter:delivered-to; bh=1VaMcE7SqiNjtUm3iu40jRyrL8r2UnOfTDlLeMlydGs=; fh=Nu0YK4XNtu63A7+fsz7qkbj5MzeJrs6V0YCrzxsstFk=; b=ONctIwSZBajZxZnUgQMihkTNzehSDqBXnzv1w8uZg7f4TxHSV5gK1ML03TDDolIBhQ NuoY19NmYawE5FF2OLwrqe6Yl4t8p6vuKWbFffz6w7SiC/6U/6S9/Rvfa6wRPrS93JhB xECzVgTd8aHZYSHHgsrVTxEWmILugZjTODlShuJ9vnjZXgx7H9rXE9cRp/FFzP45AcOw BxD4krtxUmJRI9WiGRqIl8IMYt3+rx+S7yVeHAQCVbGHT0axeNZE9CV+oEyprg5iASLE BpkKjnzr3X6d2UJrSn7GSjyUKowP3mdCXt/wHOCEDYwAJxqUTpDCCPS/e0AYKC19/dul xT6w==; dara=google.com ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b="foB2jZ/I"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org" X-Forwarded-Encrypted: i=2; AJvYcCXOWL+nH6osKU2hH04lMExay/FQnjA4UL9OgVWAe6vvmMSYVXrOHKMqqGnGVqg6V3RqEJwgB4zIHI/DvXb3mcdXsfgf9A== Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id g12-20020ac87f4c000000b0042bf9849fc8si1056228qtk.31.2024.02.07.04.52.28 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Feb 2024 04:52:28 -0800 (PST) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@embecosm.com header.s=google header.b="foB2jZ/I"; arc=pass (i=1); spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c 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 8F9AF3858014 for ; Wed, 7 Feb 2024 12:52:28 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by sourceware.org (Postfix) with ESMTPS id 2B545385801E for ; Wed, 7 Feb 2024 12:44:13 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 2B545385801E Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=embecosm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=embecosm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 2B545385801E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2a00:1450:4864:20::336 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707309862; cv=none; b=ELV3Ti6ZiM6TX4wKN4+YYkbOwF8WcN+FBQTBTacDLiH70NIJc6zaD4VOKQiCZbJO8IjcDrYXneqhJhci8KtusV90dsoWU744avrkW/ARInJLopSiCa/KQNzkK32vYc1X2iCLrPaYFY+QZ79scY0XbAV2WFKSJkK6EKccLXkkycM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1707309862; c=relaxed/simple; bh=iJaoCpnTCG/6GFIMzmFmvDuOgYAM7DqOAbE2fykEmoI=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=P7NtC8acHs3WmpHRmsfpKGrmMFw6hoMy2fZWqHE1z4/GzA4JZ8j0J9Nv48CgS46lbVCMqX+k9B3QYdAQX4pgyoPTQQXRo04xcK4NxruqKeBeFmiRVXQKgvMJY/AYZTyiToRjGYR2tTlNxugFpDIf3RGW97cYbHzTPSs5DsAg2Cc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-wm1-x336.google.com with SMTP id 5b1f17b1804b1-40fdc63f4feso5091425e9.3 for ; Wed, 07 Feb 2024 04:44:13 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1707309851; x=1707914651; darn=gcc.gnu.org; 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=1VaMcE7SqiNjtUm3iu40jRyrL8r2UnOfTDlLeMlydGs=; b=foB2jZ/IQF/dUxNDp/cA2BBH60THdS5VT0lIjFEv83SBEuX4GyEK89Tt7Dym5UzIR9 T8FJ91wpmHT7UtOlJ2yBZuu4564VWne1C252yc/LoF0WWuObzpBtBN0RFAflioIVFyPJ /0AzPoh8QsXeI4Lao4OrTUJ3tX+GOPIAAGOoGNH1Qob0Ni3ppv9P6uAP3itm2nbh2x36 JRhjRJBPUEjgCk0EG/zDlEbVG4CJZWIVD8uyuXInM3ZQ5i41T3cEGwOjUr7vP9Qo0qQ4 qhf0udSwsdYbbNfD7gtXwvjZnKXmm03oyZI1BURAC/ERFRgZOi773Gek71qWeHviGcii RvTg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1707309851; x=1707914651; 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=1VaMcE7SqiNjtUm3iu40jRyrL8r2UnOfTDlLeMlydGs=; b=RElj+hgYdVPa9UTKdjKwEX20N/c1JLVP+ka2BIvEqjyTyCgjGThIYWp9xkAU9hcf2+ 275redUmH0UxoS4xbRn4FfSQi8X4QAw8saH7/pn1v5ONE+ZNlREaenApxN2q02ZDhqOA dprm2wIhlP2JD85ahbek39UIayqxZ3McIrH6IQ/dyIhQwu8MmAsqkaYT6gSdQfB4m2JV e5ZtTbUohOUmhG+on6RdTjEhfbBUTUI8WqV9GHADFCJ99R1ldMIgJPz5xsll2F6lftN8 PKMSQsGMfP8GRt2kSIegtfHy9edTuVJq5MYex5qoiCwEtBBLE1zqOXfVEvC61DFqqemt FeCA== X-Gm-Message-State: AOJu0YxAHqCnj+9HYHiiDJgEMlxaceON/tqVzWVdStMmII9OOoZHTTMC J+1bj19hRcY8MKQB73Xf9q1MddAsDSX1IbZd1IgLyjX03OdNTDUKOEo+dfxPcsX5XGu4JzbUzVd S9w== X-Received: by 2002:a05:600c:3c82:b0:40e:d30b:6129 with SMTP id bg2-20020a05600c3c8200b0040ed30b6129mr4647880wmb.13.1707309851233; Wed, 07 Feb 2024 04:44:11 -0800 (PST) X-Forwarded-Encrypted: i=1; AJvYcCWuPugJ/3z8ynVwvtAwWtq57btxUfuKFtF/PzgwN8BrkdxHyYU3Y4p/A7yZs9fWJd4/mN4qNyUKrnf64i56QPdC0D2BBERqoFHnE0X+ Received: from platypus.sou.embecosm-corp.com ([212.69.42.53]) by smtp.gmail.com with ESMTPSA id x19-20020a05600c2a5300b0040fbdd6f69bsm5044188wme.33.2024.02.07.04.44.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 07 Feb 2024 04:44:10 -0800 (PST) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Philip Herron Subject: [COMMITTED 13/25] gccrs: remove old generics hack to reuse generic symbols from previous seg Date: Wed, 7 Feb 2024 12:43:59 +0100 Message-ID: <20240207114419.1100894-14-arthur.cohen@embecosm.com> X-Mailer: git-send-email 2.42.1 In-Reply-To: <20240207114419.1100894-2-arthur.cohen@embecosm.com> References: <20240207114419.1100894-2-arthur.cohen@embecosm.com> MIME-Version: 1.0 X-Spam-Status: No, score=-13.4 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, T_SCC_BODY_TEXT_LINE 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.30 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 X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1790244656421453159 X-GMAIL-MSGID: 1790244656421453159 From: Philip Herron This patch introduces one regression because generics are getting better understood over time. The code here used to apply generics with the same symbol from previous segments which was a bit of a hack with out limited inference variable support. The regression looks like it will be related to another issue which needs to default integer inference variables much more aggresivly to default integer. Fixes #2723 gcc/rust/ChangeLog: * typecheck/rust-hir-type-check-path.cc (TypeCheckExpr::resolve_segments): remove hack gcc/testsuite/ChangeLog: * rust/compile/issue-1773.rs: Moved to... * rust/compile/issue-1773.rs.bak: ...here. * rust/compile/issue-2723-1.rs: New test. * rust/compile/issue-2723-2.rs: New test. --- .../typecheck/rust-hir-type-check-path.cc | 21 ++----------------- .../{issue-1773.rs => issue-1773.rs.bak} | 0 gcc/testsuite/rust/compile/issue-2723-1.rs | 14 +++++++++++++ gcc/testsuite/rust/compile/issue-2723-2.rs | 14 +++++++++++++ 4 files changed, 30 insertions(+), 19 deletions(-) rename gcc/testsuite/rust/compile/{issue-1773.rs => issue-1773.rs.bak} (100%) create mode 100644 gcc/testsuite/rust/compile/issue-2723-1.rs create mode 100644 gcc/testsuite/rust/compile/issue-2723-2.rs diff --git a/gcc/rust/typecheck/rust-hir-type-check-path.cc b/gcc/rust/typecheck/rust-hir-type-check-path.cc index ea7d8422980..ad31fb74a80 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-path.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-path.cc @@ -456,27 +456,10 @@ TypeCheckExpr::resolve_segments (NodeId root_resolved_node_id, } } - if (tyseg->needs_generic_substitutions ()) - { - if (!prev_segment->needs_generic_substitutions ()) - { - auto used_args_in_prev_segment - = GetUsedSubstArgs::From (prev_segment); - - if (!used_args_in_prev_segment.is_error ()) - { - if (SubstMapperInternal::mappings_are_bound ( - tyseg, used_args_in_prev_segment)) - { - tyseg = SubstMapperInternal::Resolve ( - tyseg, used_args_in_prev_segment); - } - } - } - } - if (seg.has_generic_args ()) { + rust_debug_loc (seg.get_locus (), "applying segment generics: %s", + tyseg->as_string ().c_str ()); tyseg = SubstMapper::Resolve (tyseg, expr_locus, &seg.get_generic_args (), context->regions_from_generic_args ( diff --git a/gcc/testsuite/rust/compile/issue-1773.rs b/gcc/testsuite/rust/compile/issue-1773.rs.bak similarity index 100% rename from gcc/testsuite/rust/compile/issue-1773.rs rename to gcc/testsuite/rust/compile/issue-1773.rs.bak diff --git a/gcc/testsuite/rust/compile/issue-2723-1.rs b/gcc/testsuite/rust/compile/issue-2723-1.rs new file mode 100644 index 00000000000..261956de42e --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2723-1.rs @@ -0,0 +1,14 @@ +#[lang = "sized"] +pub trait Sized {} + +struct S(T); + +impl S { + fn f(t: S) -> S { + t + } +} + +pub fn main() { + S::::f::(0); +} diff --git a/gcc/testsuite/rust/compile/issue-2723-2.rs b/gcc/testsuite/rust/compile/issue-2723-2.rs new file mode 100644 index 00000000000..c7609d1e14d --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-2723-2.rs @@ -0,0 +1,14 @@ +#[lang = "sized"] +pub trait Sized {} + +struct S(T1, T2); + +impl S { + fn f(t: S) -> S { + t + } +} + +pub fn main() { + S::::f::(0); +}