From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 604373858299 for ; Wed, 7 Feb 2024 12:44:12 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 604373858299 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 604373858299 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-4101565d20bso3548415e9.2 for ; Wed, 07 Feb 2024 04:44:12 -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=IcZR1nnm14WCvwlH1fo0tsegLuwUGqkNF0rDmTUS8O/R41tlsUvEJdoP5Vy5vWQW+n CpDyjpr8+V0WNhVmDzDQsuKdvy+178LPG+WrktRqpmZXUMK1x2ymP14056DgndjhrvCX 4g3evxnB6fHvPJ/Ns2R/IFjhsHip4p0wQ58lCyM6Yo7YG+VdMbSUm6nMKXMG2voIw3nM z+tfTKQsEc/pJpg6ZhPQuqNAKpwqK5ILlsEm6q177DRSIXYmfHm0BUR2VmR1Y0L+jcQ/ T3W1m7Fa9GXfowbVoUzAOJR+SEK+iYPsRg2kvcS5fQGN1BC4/2yA0pessCXDO/rrC2kE 6EfQ== X-Gm-Message-State: AOJu0YyjoeXipEfX/6mzEI+nSvHtSKjK6qrhWlcng8pHsmeqFggVPqe5 kjYnYHA3omovJFI98psoH9hw5kFfnpwsgaAWh1oxinrO9tGQxY4sL22vsRRXPjPZ/tFJde1VGE7 rWQ== X-Google-Smtp-Source: AGHT+IENLettnxzi/cNuqKEDZtW2AYCxvelWzVAqychFRDWgA8kfT+uqmnmzcWeYroFvbSrV1B945w== 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> Reply-To: arthur.cohen@embecosm.com MIME-Version: 1.0 Content-Transfer-Encoding: 8bit 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=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: 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); +} -- 2.42.1