From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by sourceware.org (Postfix) with ESMTPS id 4F3FC38768AF for ; Wed, 5 Apr 2023 14:06:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 4F3FC38768AF 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-x32c.google.com with SMTP id p34so20958562wms.3 for ; Wed, 05 Apr 2023 07:06:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=embecosm.com; s=google; t=1680703565; 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=0Ruhi0YVCTS0PZIDwZd2lXBkluzz5LJvgOYcNswll30=; b=XsrWV1+h/XFd5S2uGcpIRHK+YJ/iKkVR1AHNpAHpZVgDv2vacaNuyhYxJVDBKPHrgK Dce1AIYP5/TwZcTgbHYhYHx+Ge3L4ZQFv4LM3MgImySL+jWIQ+hkvSAFuDb+QarOH89E /Pyz9ddEcQyg/K+CN9uwKtXWyzDl0k50rIvvMnN0v3+sIzclC/vbi0NcHclhfOBx6fTa zi4lPGXMAfynvmPJ/CrbOqme3DlSf8+xVXuxX8Rv1hS1UTc7/MMeO3XbH0MC7nVhNeVC bvo12pRntAuMdp/wstYkTY4AKbUYV3TIo7012PXiPzp54DMsAIpG7vYfWDRIB9lhPcF+ gGOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680703565; 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=0Ruhi0YVCTS0PZIDwZd2lXBkluzz5LJvgOYcNswll30=; b=aB9YGPrKVDsP5VfTCKjOboAwBDeol/BxmIuRAeP6ks/e0DVJl90M5L011ivL82jcPn wselvRXl6JIYab4EZxeiyLa3AZ9A47RhN/hsU03U9uNY1hqmwQBz5wmlvP9kttwZwZ5o s1X1naH4YyVkW8kbx82uSJ8/3VDwN1A/v36mS/Bdnr5XddqNckdALaSeXLG/urg71CNe 890lfsNObNWdXBUErL9anW+6tjW3aFkfuRhixAFWhTEf+LAD5jlJAAnhwV5Tmp3C0i/A gqTfUUQe2gJVpj2tBv22y5DxzqkCojmnKNnbUMk1ySgKC1qZks7ZIhbk2SQiGzakLhHJ R9fw== X-Gm-Message-State: AAQBX9fMHknJlbqxbLmsHcUq5egvVIbUWofuXal4pMyM6fdSAoSww2KQ /Ufvi/o/Mf2q8I3c/P3sPaTDFiKj4apGVFougw== X-Google-Smtp-Source: AKy350ZEgL8qyosmFxJ0Ym+Jhp+tGHZNXdLXRpa97JjMm+b1bZgyP7GONNr12a01WcGoc6GhFv77vA== X-Received: by 2002:a7b:cbcc:0:b0:3ed:2eb5:c2e8 with SMTP id n12-20020a7bcbcc000000b003ed2eb5c2e8mr5301927wmi.10.1680703564926; Wed, 05 Apr 2023 07:06:04 -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.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 05 Apr 2023 07:06:04 -0700 (PDT) From: arthur.cohen@embecosm.com To: gcc-patches@gcc.gnu.org Cc: gcc-rust@gcc.gnu.org, Philip Herron Subject: [committed 52/88] gccrs: Add missing Sized, Copy and Clone lang item mappings Date: Wed, 5 Apr 2023 16:03:36 +0200 Message-Id: <20230405140411.3016563-53-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> Reply-To: arthur.cohen@embecosm.com MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-14.6 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=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 We need these lang items to be defined and later down the line the mappings will be used to implement proper copy and clone logic. Fixes #1786 Signed-off-by: Philip Herron gcc/rust/ChangeLog: * util/rust-lang-item.h: gcc/testsuite/ChangeLog: * rust/compile/issue-1786.rs: New test. --- gcc/rust/util/rust-lang-item.h | 24 ++++++++++++++++++++++++ gcc/testsuite/rust/compile/issue-1786.rs | 23 +++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 gcc/testsuite/rust/compile/issue-1786.rs diff --git a/gcc/rust/util/rust-lang-item.h b/gcc/rust/util/rust-lang-item.h index 29c364bad61..c5ef6200fb4 100644 --- a/gcc/rust/util/rust-lang-item.h +++ b/gcc/rust/util/rust-lang-item.h @@ -80,6 +80,12 @@ public: FN_ONCE, FN_ONCE_OUTPUT, + // markers + COPY, + CLONE, + SIZED, + + // delimiter UNKNOWN, }; @@ -237,6 +243,18 @@ public: { return ItemType::FN_ONCE_OUTPUT; } + else if (item.compare ("copy") == 0) + { + return ItemType::COPY; + } + else if (item.compare ("clone") == 0) + { + return ItemType::CLONE; + } + else if (item.compare ("sized") == 0) + { + return ItemType::SIZED; + } return ItemType::UNKNOWN; } @@ -321,6 +339,12 @@ public: return "fn_once"; case FN_ONCE_OUTPUT: return "fn_once_output"; + case COPY: + return "copy"; + case CLONE: + return "clone"; + case SIZED: + return "sized"; case UNKNOWN: return ""; diff --git a/gcc/testsuite/rust/compile/issue-1786.rs b/gcc/testsuite/rust/compile/issue-1786.rs new file mode 100644 index 00000000000..f73b63d0cb6 --- /dev/null +++ b/gcc/testsuite/rust/compile/issue-1786.rs @@ -0,0 +1,23 @@ +#[lang = "clone"] +trait Clone { + fn clone(&self) -> Self; + + fn clone_from(&mut self, source: &Self) { + *self = source.clone() + } +} + +#[lang = "copy"] +pub trait Copy: Clone { + // Empty. +} + +mod impls { + use super::Clone; + + impl Clone for char { + fn clone(&self) -> Self { + *self + } + } +} -- 2.40.0