From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id CC304C02188 for ; Mon, 27 Jan 2025 16:07:28 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 903B86B015B; Mon, 27 Jan 2025 11:07:27 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 88DEA280115; Mon, 27 Jan 2025 11:07:27 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 706BE2800E8; Mon, 27 Jan 2025 11:07:27 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 500246B015B for ; Mon, 27 Jan 2025 11:07:27 -0500 (EST) Received: from smtpin24.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 0A5311C7103 for ; Mon, 27 Jan 2025 16:07:27 +0000 (UTC) X-FDA: 83053711734.24.1EC53B6 Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by imf11.hostedemail.com (Postfix) with ESMTP id 21FC140010 for ; Mon, 27 Jan 2025 16:07:24 +0000 (UTC) Authentication-Results: imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FvmC06LH; spf=pass (imf11.hostedemail.com: domain of ubizjak@gmail.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=ubizjak@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1737994045; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=kq9/i3Ta5l2MI1vOWLuY/2sULLk+AJ5LvhrOAI9bZzU=; b=xTCOP2LUmi5B9jy5zVV7cZbXLj+mSdfRs+q9PmIGNBsv1W7a2eNysl34Jcp04J/J5dG4tY RdolIGenGX+/NbtIRl/XNz5QSxVVnB6McpklDpQmjkODdJuWy47xQFZepkW1Ek/TMSr4go zzjJf88Sn+d72YWiEY+V0iu+a8pjNEo= ARC-Authentication-Results: i=1; imf11.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=FvmC06LH; spf=pass (imf11.hostedemail.com: domain of ubizjak@gmail.com designates 209.85.218.53 as permitted sender) smtp.mailfrom=ubizjak@gmail.com; dmarc=pass (policy=none) header.from=gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1737994045; a=rsa-sha256; cv=none; b=vIORSi668fB3RFEpiOEO12IlpTh6kvMxEzi58KGN7fqeTcBuiqrpuUqQK5yDZJhuAg97ww SfTXzWcSFpO8NWq+tJ7VTRfR09UIsU72QrywODDZoqs64EPTkITLOLzhfZ+1vDR/0qdDG0 z/QCLEDQkVkp/qAvNT9GYFDq/CLIlfI= Received: by mail-ej1-f53.google.com with SMTP id a640c23a62f3a-aaf6b1a5f2bso1149884966b.1 for ; Mon, 27 Jan 2025 08:07:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1737994044; x=1738598844; darn=kvack.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; bh=kq9/i3Ta5l2MI1vOWLuY/2sULLk+AJ5LvhrOAI9bZzU=; b=FvmC06LHTeX5Xyqd0iny6vg/L0iCenHCsa2vQEJPSe9G+2jiD3UPJAr1pSyrIrj1aJ I66O+feRKNGc6v0qy5jjbfGuG7TXOxrd8n7BBwOoJBPsQdA8Du4cB8+ONrlr+qViPKFS FKtC/T1D+R/ri/KaSxWvw8sOV1OkBWRAsV6AtErNi54K7KiPNo7brlrUlMp3WWQ2jUbn 2vzLXWz+Wy2BWy4wHP+v1vvv9+SXbWq7PZWgVhZTLUVsxbvHEJvWYIRNg6sdU0TSeKSw yUelAx3UtI/svZB+4Y4PBklLVHahmJ9ni3vqC6Y7Mo+xc28I4WY8hCIs7h1uXxHuL8Jv 39Ow== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737994044; x=1738598844; h=content-transfer-encoding:mime-version: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=kq9/i3Ta5l2MI1vOWLuY/2sULLk+AJ5LvhrOAI9bZzU=; b=L9e5qE6tTIBoHFQiFKrp3QxBEU0JeSg19yx2EkwX4X5qlMysvvHxKeuX0sMaCwFIvU Ypud0pvqt4Ygh/DcxgqxLnDBi+lTbPzROm5739NfIDV0WFe3zQm/riUhGgF4OMRVmFrm pwUx5FAJDu+Xi/lkuOWc1oKbZ8IptMeDG4jV+wM72joLk7kJXmHEl+PBNLqSciyaT8rx TIqZf4VzkeiseEOJVBjo/FBLXZ2+7rammTYmwiSVPldaI+tMysK1WTzDjAmudg+1r6be Ab4OEv88JPnlTTK7V9rdPqTPufHXKOcek+XceKYIBl07PF/qBUFkABLYgOmE2X2Jz5wi Jf7Q== X-Forwarded-Encrypted: i=1; AJvYcCU1jouJON+OQKYfVxbjmT1+qGP/lhhqoTqfLqz+ruPA1ik/xx16CMlHAL2E/+aAMkNDwrcsvSncRg==@kvack.org X-Gm-Message-State: AOJu0YxO3h1APj08uH/fUZozCqDpUGYlvsW13dkj7aCpqqipfZEYlz2B DIMmFvMvgpOmJgUAhNkTrUufwYGU+SR3BRaiHqeyAsjwVpQHPg9v X-Gm-Gg: ASbGncv2yF7INd3S2J00BrUpRNPgpDhx52wHm32r5u4bxaeDb9AD6NkCfg/1Q7NPefR m+m6TFAdRCbgavX0KJZqhVYewK8KCHwlzc2TdLW9xd2C9QkDUZwqtFT8tP31wrkmpQZskFG4vG5 dSRubA4VItW2KYOnkJAlMnQWnObkbLTY3J3KOos1XKag6N8Mda501pUGc06DFrLw6SJWjA2G9Kf u8RQNnh4epMF81EywxVQSdOD+Jcr1Sh18U/eJs2KPpYdllaUi8kLPqB2QnonhHGDTf6uNgVdzDp ZsVhfguXy4q14A== X-Google-Smtp-Source: AGHT+IGps2FOyGZFh29HU88UQXaUARQyvefInzqR9JwB8VX2QVMTmcMPtTLVQtl0rzI1dpYkZKybuQ== X-Received: by 2002:a17:907:72d6:b0:ab3:4d1e:4606 with SMTP id a640c23a62f3a-ab662910720mr1670846366b.3.1737994043332; Mon, 27 Jan 2025 08:07:23 -0800 (PST) Received: from localhost.localdomain ([46.248.82.114]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-ab675e8b01asm592643866b.84.2025.01.27.08.07.22 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 27 Jan 2025 08:07:22 -0800 (PST) From: Uros Bizjak To: x86@kernel.org, linux-mm@kvack.org, linux-kernel@vger.kernel.org, linux-bcachefs@vger.kernel.org, linux-arch@vger.kernel.org, netdev@vger.kernel.org Cc: Uros Bizjak , Thomas Gleixner , Dennis Zhou , Tejun Heo , Christoph Lameter , Linus Torvalds , Andy Lutomirski , Ingo Molnar , Brian Gerst , Denys Vlasenko , "H. Peter Anvin" , Peter Zijlstra Subject: [PATCH v4 2/6] compiler.h: Introduce TYPEOF_UNQUAL() macro Date: Mon, 27 Jan 2025 17:05:06 +0100 Message-ID: <20250127160709.80604-3-ubizjak@gmail.com> X-Mailer: git-send-email 2.42.0 In-Reply-To: <20250127160709.80604-1-ubizjak@gmail.com> References: <20250127160709.80604-1-ubizjak@gmail.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam07 X-Rspamd-Queue-Id: 21FC140010 X-Stat-Signature: p1ymryd4cj8dq614zht66dbmaejmbimm X-Rspam-User: X-HE-Tag: 1737994044-877641 X-HE-Meta: U2FsdGVkX1+xdtPogZj4k5vruIBwqO7BNfUpz/XpjLn3lWioqGgX2KmA1+2HbPXh/wv7DCg/k77IkL3r6pmlYgVDNcNMF4We6SJwhdjz9tX8y9BBK/sZaM/knL6Lr+cRiQ6tzRLTCv/SFbMH2jA3nOV2XlLKA5ILgC4/lUpMewQQyRm5LXjpxumO3J1iywHcu+wT6c9uwkD8HeY1eoaG+O7R2XbAZszg6sTOLM0KHg/4RvBGAbLeRb6rsc188E3Xe7FziIb1rf1MbAjdKHbinu00HIoPGuVD2H66zni6D7pogjdy9IZnciQdUR+vzr2dIxIn2rxopZTBFBoiAh0iMmt6kIrw29ePSqknmiYzUEWUZlv2KU7gT3nwFckcD4/JM7N9VgnW9p3vdMsawmPDYZ+wcnohieicPVKILd2SO07a/iCH5gcMrOhBieL2e4uD9M2bvwQ5cPtyoSTD91sGJG+Z3auT6qjZPdF6CcsXpAxyhYvEzVYvNBXoqjI5pOHJJpqH1cb3ecHQ8KQIOveAJUvrTZE2+ASj6IaCTS7GR9z0SgtNnaY5Ohn0DoueiIMT69GVkvHkOWEegrxnjI8iiuMDjbG3mNZAG0XJnATVvHOWnw0Ea6fLvVCforh4vZJR+qw6eh8ozt4igY97O8Nm1YkAKkYGitQ7fCiBfWvZQk/o8EgVqWzQb5Lk/nNAJloYKN5eOf8FQBKAT/cHpp1DUN9Cne73K/IajCn38MTvge/RNbGT+kM7iExM8SYoDcMbQ+7YBNjoDnDH2Vvnd6Lv20uLAIHDCLygtDD/mZ8rBfr/5g7dTeSi7J2ovhO94i/GEj37Ig1VD944/MhscvLqIYGzvbP1o0TVimvsF3rysvK1HzqLHtHJCktNkfeAXsUSLcFC1fZzPpHXlwX7KQmayTP+o0UzV7kw4WWzdtMh/7PR9Gxj9cwyzlOlo0v/o9wVbufTuqJw8BCigbgYexc ExIGGNQZ oYuYh1RGdffRM+mfhty0jCGkY+4+H/0qv4sLyWpyyr+ze5x+Mc4HwvdRQlBo7HSh6NAt43mIzIxpc8Vn0BafIfOwhoRPPsg+ZHnMxYQm6pa1fseRz6mGXE6/IZEyCF9VqFWKdg0OoymD7jZ9OTobed4BUg1XtZTjgXXJgm4sl2qrZzbpQZ3g1dju4iR5b2LfW1rOJFZ36BM8VV5A2k2xspx41VAt73dNVsb5hrxSv34qs4EOlV/1gY6NAHuXHBCcJA2qRciKwqeiiRkIZIHVveanNBqrfJT+XNpZBEOO1M1/+tHG5M9ACL3YMAmSD2SLjLC51psdvBtqVMsopoA9sJnGjRiIjt3A38BJtpJYPCqaTO8YMpOIKtiXoT3I28EC1cr42j8SkZF0a6xbiUQoWRmExvhMCXEFId5BjVzy4UgOOrLBcR4xdEcGYqPzFZUIklcQD2MUNU18kQKZL78XyEt2FP8sduPjAhxX30/nfsmnyfa5gvr158dkUdcfftk7hQgVZ+CBCaDQRHGo52OH/D3+kRmFDbIPkKFsMrzuR1ZZyGVzRGrE6DI11IOnX/sUtv4fJuhE0Hcl+QNOA2szZDApp6m5KWXlBaMhvtHe5l+86zyDs6ZEvVvPoORGG324NCGXunojzGVy+KaEGDwfoGg4MbHjvN+NNjMGW1i01arU85kwPiw7pKHhmg83W/exuCi8uVub/Sy/4Q/I= X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: Define TYPEOF_UNQUAL() to use __typeof_unqual__() as typeof operator when available, to return unqualified type of the expression. Current version of sparse doesn't know anything about __typeof_unqual__() operator. Avoid the usage of __typeof_unqual__() when sparse checking is active to prevent sparse errors with unknowing keyword. Signed-off-by: Uros Bizjak Cc: Thomas Gleixner Cc: Dennis Zhou Cc: Tejun Heo Cc: Christoph Lameter Cc: Linus Torvalds Cc: Andy Lutomirski Cc: Ingo Molnar Cc: Brian Gerst Cc: Denys Vlasenko Cc: "H. Peter Anvin" Cc: Peter Zijlstra --- v2: - Add comment to remove test for __CHECKER__ once sparse learns about __typeof_unqual__. v4: - Do not auto-detect compiler support for __typeof_unqual__() --- include/linux/compiler-clang.h | 8 ++++++++ include/linux/compiler-gcc.h | 8 ++++++++ include/linux/compiler.h | 20 ++++++++++++++++++++ 3 files changed, 36 insertions(+) diff --git a/include/linux/compiler-clang.h b/include/linux/compiler-clang.h index 2e7c2c282f3a..4fc8e26914ad 100644 --- a/include/linux/compiler-clang.h +++ b/include/linux/compiler-clang.h @@ -128,3 +128,11 @@ */ #define ASM_INPUT_G "ir" #define ASM_INPUT_RM "r" + +/* + * Declare compiler support for __typeof_unqual__() operator. + * + * Bindgen uses LLVM even if our C compiler is GCC, so we cannot + * rely on the auto-detected CONFIG_CC_HAS_TYPEOF_UNQUAL. + */ +#define CC_HAS_TYPEOF_UNQUAL (__clang_major__ >= 19) diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h index c9b58188ec61..32048052c64a 100644 --- a/include/linux/compiler-gcc.h +++ b/include/linux/compiler-gcc.h @@ -137,3 +137,11 @@ #if GCC_VERSION < 90100 #undef __alloc_size__ #endif + +/* + * Declare compiler support for __typeof_unqual__() operator. + * + * Bindgen uses LLVM even if our C compiler is GCC, so we cannot + * rely on the auto-detected CONFIG_CC_HAS_TYPEOF_UNQUAL. + */ +#define CC_HAS_TYPEOF_UNQUAL (__GNUC__ >= 14) diff --git a/include/linux/compiler.h b/include/linux/compiler.h index b087de2f3e94..a892c89ac28a 100644 --- a/include/linux/compiler.h +++ b/include/linux/compiler.h @@ -191,6 +191,26 @@ void ftrace_likely_update(struct ftrace_likely_data *f, int val, __v; \ }) +/* + * Use __typeof_unqual__() when available. + * + * XXX: Remove test for __CHECKER__ once + * sparse learns about __typeof_unqual__(). + */ +#if CC_HAS_TYPEOF_UNQUAL && !defined(__CHECKER__) +# define USE_TYPEOF_UNQUAL 1 +#endif + +/* + * Define TYPEOF_UNQUAL() to use __typeof_unqual__() as typeof + * operator when available, to return an unqualified type of the exp. + */ +#if defined(USE_TYPEOF_UNQUAL) +# define TYPEOF_UNQUAL(exp) __typeof_unqual__(exp) +#else +# define TYPEOF_UNQUAL(exp) __typeof__(exp) +#endif + #endif /* __KERNEL__ */ /** -- 2.42.0