From patchwork Wed Jul 8 09:16:09 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: gerris.rs@gmail.com X-Patchwork-Id: 138715 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 4699C4BA2E20 for ; Wed, 8 Jul 2026 09:16:53 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 4699C4BA2E20 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=O+wUqA5I X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-pj1-x102e.google.com (mail-pj1-x102e.google.com [IPv6:2607:f8b0:4864:20::102e]) by sourceware.org (Postfix) with ESMTPS id 836784BA2E0B for ; Wed, 8 Jul 2026 09:16:14 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 836784BA2E0B Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 836784BA2E0B Authentication-Results: sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::102e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783502174; cv=none; b=GG9/JW0Wh8WxczAe6qhyqT1R2Ev4GzcGxLJyxlmOv8oGHFAdXHfpLBYLcY6Mz0NPAAZQXC61107YSr4EXAgf1zB4iyvnjJmuIsQpKbfo0OS2Rg+sa35qy+Z56EThkoKJ26FS2twlsck97WCMTwF1Y/tvGs6ExCfV3AiATFXJpTo= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1783502174; c=relaxed/simple; bh=YQa6XTbriJPWyOgQieLUjZMB6df5SbY9EcRGjqZPX7s=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ueRbsuFEgiS4mbablpzluuknoLnI1R8fq1ZCt0Xdvf1+u7hf7nnqusxKAnY41efcBexm3GyKhEDOC7ahAeg2JrZ3KWyZP31KD0RRPSA6onrAi0JVvieJ/hKbpKJCCC2YC5l54Uin8e1Ge7nTbleCmCcwGxgeZ/TvesDEw9z4WrI= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=O+wUqA5I DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 836784BA2E0B Received: by mail-pj1-x102e.google.com with SMTP id 98e67ed59e1d1-381891a9525so584479a91.3 for ; Wed, 08 Jul 2026 02:16:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783502173; x=1784106973; darn=gcc.gnu.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to:content-type; bh=LYLQdjvBngAfAHuHjqojQxMROe3ISmFBmZ8X98cGR2M=; b=O+wUqA5Ih7KI6Bfz2tPmNjIRY29BkGFgcUEUFs3Y3vzRt/3tYzIg4d4z1h518z/4fb /NNJ5USwgh2jlGWIXlR0URY357V9JS66UqfKJtsH4mPoCPehUAbbsnWDRoTQ626mGcwp okKQUWEWdM5kWOL1De8x7hxJdKNsaNSbmgFdTBclqRIAA71Eb9azNaQV6kfOrVP1Fzxt e+9evwv30IALkUBiJEZttZwxQzx6vpZzUXF6XjZbrMkGSf/UWfKNMXId7zm61SfHUKR0 bgyY3ZXqlPPckv+whCRRKydOUzRzbf88LdTE8db5rT1Mm9R1YaC4WP/SO9xvqbgbMIOi Z9PQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783502173; x=1784106973; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to:content-type; bh=LYLQdjvBngAfAHuHjqojQxMROe3ISmFBmZ8X98cGR2M=; b=Q/zRTs/6ozjohf+CypqW4tNq7m8RasA9L2RW5PSKfQ6wiAlBK2yG6OVatA7mHqbk8z gXINHSe65UvEK5xfiFW/04FK/OJr6EIxIvpVWzeuNtL+lUU9SaJX2sUNi202SLK1uxtL CmRljbuTQiSjrq2OmVONY8DrU5HQlS+FciCrVmlQBdorIxhGPnNI+Q8PjNHY3ZQ8mDba CsTNTVrrwNJCxoMLy6kgcUOKZ0DL3XpTIfNRxA3QPClyoqq01C+8hRMrIOdw6P5ANFVm 4+1r5FSondbZdle+KeGwfUnwHJYZQqkwlD31qjx6HoeiDp2VkCyEKdpGl9o6swiE1R6/ /S4g== X-Gm-Message-State: AOJu0YwMhlXCc2s0a8Waj/Z/3lA0V42f2JdkzTvi2R2rSD1G0k1bLU8x 3VfJqfTlDyp29nzFWZP/7OweokgdhLZNM42ivtbG4lDMdBdail1bOezFNrvJrQ== X-Gm-Gg: AfdE7cnVZXufnI/NaGsvU7PWHCKjHDKSpZ3X1loQTCWeSqOpqH0903yq8ykA1LZBGjJ wx9tYjnwd8suYeWKwdqEwy6/V9/YDNwhT+1WUM13sGJGq8AixXtax7k2x+U044dLVXGxO0uYiOJ Dq5pcjc8FTLJMUDWG9z0NyuPpgtQAz5slryu0nXp+FH00kuUANWzRl8HlJVgeiMqFrmgfXAOW06 M7moEJU21xmP7uWsPYrSVpGPcjFkhtAlLaSjpKfIhBgVPSXGM2n3R+paB7dDEIghSi7ZO1HmWMl KxuvhTYV2iVne0+9NBbxSSxa0E5G7UV2RQXGo8S6zSbq0zmIdtkltmebGzAxeWy6A0+7f5RnEMY +0y5VJaWI/XuBD0kmZRQ8iy58dDcduTxAKTgbjBlR597pBXcTGqyIYBzrhOpqc29yWbhjvGWBmF Aq9uBLNT9sRWusFBLCNkRCS4K3fq8Pbc82CqgvchW2I1fFcMcemLFZU3Yl8mTnitiMxisZzXOt3 8rkWxYBUog= X-Received: by 2002:a17:90b:2682:b0:37f:9ce1:7364 with SMTP id 98e67ed59e1d1-38941201e0cmr1820274a91.26.1783502173406; Wed, 08 Jul 2026 02:16:13 -0700 (PDT) Received: from runnervm5mmn9.nkr5xsuno4uefblpyhv20ya3ue.dx.internal.cloudapp.net ([52.250.243.39]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-31174a583bcsm20466552eec.19.2026.07.08.02.16.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 08 Jul 2026 02:16:12 -0700 (PDT) From: gerris.rs@gmail.com To: gcc-patches@gcc.gnu.org, gcc-rust@gcc.gnu.org Cc: pierre-emmanuel.patry@embecosm.com, arthur.cohen@embecosm.com, dkm+gccrs@kataplop.net, Yap Zhi Heng Subject: [gccrs COMMIT 3/3] gccrs: Add new checks for `#[repr(align)]` attribute Date: Wed, 8 Jul 2026 09:16:09 +0000 Message-ID: <20260708091609.3108-3-gerris.rs@gmail.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20260708091609.3108-1-gerris.rs@gmail.com> References: <20260708091609.3108-1-gerris.rs@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on 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: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org From: Yap Zhi Heng gcc/rust/ChangeLog: * typecheck/rust-hir-type-check-base.cc (TypeCheckBase::parse_repr_options): New check for `#[repr(align)]` to enforce having a parameter that is a power of 2. gcc/testsuite/ChangeLog: * rust/compile/invalid_repr_hint.rs: Update existing and add new `align` test cases. Signed-Off-By: Yap Zhi Heng --- This change was merged into the gccrs repository and is posted here for upstream visibility and potential drive-by review, as requested by GCC release managers. Each commit email contains a link to its details on github from where you can find the Pull-Request and associated discussions. Commit on github: https://github.com/Rust-GCC/gccrs/commit/864defecb6c0faf055005b48a24914651ef5c727 The commit has NOT been mentioned in any issue. The commit has been mentioned in the following pull-request(s): - https://github.com/Rust-GCC/gccrs/pull/4650 gcc/rust/typecheck/rust-hir-type-check-base.cc | 13 +++++++++++++ gcc/testsuite/rust/compile/invalid_repr_hint.rs | 5 ++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gcc/rust/typecheck/rust-hir-type-check-base.cc b/gcc/rust/typecheck/rust-hir-type-check-base.cc index 7ff37c924..f966f002a 100644 --- a/gcc/rust/typecheck/rust-hir-type-check-base.cc +++ b/gcc/rust/typecheck/rust-hir-type-check-base.cc @@ -522,6 +522,15 @@ TypeCheckBase::parse_repr_options (const AST::AttrVec &attrs, location_t locus) if (oparen == std::string::npos) { + if (inline_option.compare ("align") == 0) + { + rust_error_at (attr.get_locus (), ErrorCode::E0589, + "invalid % attribute: % " + "needs an argument"); + delete meta_items; + break; + } + is_pack = inline_option.compare ("packed") == 0; is_c = inline_option.compare ("C") == 0; is_integer = (inline_option.compare ("isize") == 0 @@ -571,6 +580,10 @@ TypeCheckBase::parse_repr_options (const AST::AttrVec &attrs, location_t locus) } else if (is_align) { + if (value == 0 || (value & (value - 1)) != 0) + rust_error_at ( + attr.get_locus (), ErrorCode::E0589, + "invalid % attribute: not a power of two"); repr.repr_kind = TyTy::ADTType::ReprKind::ALIGN; repr.align = value; } diff --git a/gcc/testsuite/rust/compile/invalid_repr_hint.rs b/gcc/testsuite/rust/compile/invalid_repr_hint.rs index 7ac48a921..5e1af4d1c 100644 --- a/gcc/testsuite/rust/compile/invalid_repr_hint.rs +++ b/gcc/testsuite/rust/compile/invalid_repr_hint.rs @@ -6,7 +6,10 @@ struct Foo { x: i32, } -#[repr(align)] // { dg-error "unrecognized representation hint" } +#[repr(align)] // { dg-error "invalid .repr.align.. attribute: .align. needs an argument" } struct Bar { x: i32, } + +#[repr(align(3))] // { dg-error "invalid .repr.align.. attribute: not a power of two" } +struct Baz {}