From nobody Thu Jun 1 19:16:50 2023 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4QXG8f3yH1z4YyX4; Thu, 1 Jun 2023 19:16:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R3" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4QXG8f2xNKz3w9C; Thu, 1 Jun 2023 19:16:50 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1685647010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cXWXCysP0KNuDFndcmhzhbq+PGtqWsmyTuQRrK6Zem0=; b=NcKXpofZ6EHVB+wAM32+iEwU6YFpHBIIGc7a0qU6PRHBj65UXxBgIqU+4mnmpa9oii/3GO rjuuq/MKY172FJKZwhhH+bG1ICUEaXdj5X5ofC2/93yvp4KestYj2dg7gqxd0O0A5zSuQ6 YyTRCG2unWvNB6EvMr4WQ/+Nm1pa7hlFe03+SeoEpz49f0vbsTu/f2PrdpcW/Yre4jLAsJ WasjoJUIIB/7jqTmWbhLNH7yiM7es36qPPPsMEVHaoxDV6RQhn3MRS1SH8tggAiS96XrJ9 +a6JFY+MSg7k4qs2UrAnIAWjnHrg1XKay64tJrR1fd1gAl1op1dEG3FnhdKJ+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1685647010; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=cXWXCysP0KNuDFndcmhzhbq+PGtqWsmyTuQRrK6Zem0=; b=JZVae5RVdsjLBqdtensJHgE3IamSF/teU+vywknicDX9VYrXWMU22OiQceuVxwoX8lgFBk Fe6rhh/NF8Wyk/rYpjTiqG//1KevrIHrWPxwUIejp02JCzL3cf8paAHApz5G6s5HG39ezp tWOvSWX4nzB0w/R7hr/hCWggZe3QpulRWWSKowD5be/Lho+VacSndw5wriw5FGCruj2mhk Y83mTDxxTaNuE25wFqKdWOzMLgI6Y8ghRTgq5NIm30WQ/0SX6gK1VEaEj7Xx/KwH6OB8q0 tdPBOoYN2gB93YqIOehYXtSoz96nZk/0hCpdU1M99NIuV6V4TnHl5Ca1Bz+VeA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1685647010; a=rsa-sha256; cv=none; b=oSsspVuHKx4NNPR90uisQwYkI3ZoeNw5w57PFaUC7EcEu/hEJaTggGo62XdnEGAyPwF1Mg LOLFQOqeTCqg8XCU9CDiVyqizFWrkNM8T6LlKbf/nM10aoJ/Gol5IVCL4u4yLgplbca4AE KscI8tsWQKQq6JQk1Kqt17TVZJNkJCABSsAWkaRHSv6GvauaKRCGQ0By7yYkxvd1/nIO9n MTRj4K5JiP/P2fJSDGZYyl7G3NXnZ7DJRld/Y/1+bfNRINnsewVSj+p9IcPQWUzFtMSFvI xaY8J5sabGURFbTtuY+HJbrhA3p8RcAQXIXdB3SUEB20qRoXDcxhpyspPfW8iw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4QXG8f1xQpzT6y; Thu, 1 Jun 2023 19:16:50 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.16.1/8.16.1) with ESMTP id 351JGosv081237; Thu, 1 Jun 2023 19:16:50 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.16.1/8.16.1/Submit) id 351JGoMW081236; Thu, 1 Jun 2023 19:16:50 GMT (envelope-from git) Date: Thu, 1 Jun 2023 19:16:50 GMT Message-Id: <202306011916.351JGoMW081236@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org From: Dimitry Andric Subject: git: 3cc4f10db0fe - stable/13 - Apply clang fixes for crashes compiling ARM/AArch64 CRC intrinsics List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: Sender: owner-dev-commits-src-all@freebsd.org X-BeenThere: dev-commits-src-all@freebsd.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/stable/13 X-Git-Reftype: branch X-Git-Commit: 3cc4f10db0feca9d54bbfc615328b317a5c6b4c8 Auto-Submitted: auto-generated X-ThisMailContainsUnwantedMimeParts: N The branch stable/13 has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=3cc4f10db0feca9d54bbfc615328b317a5c6b4c8 commit 3cc4f10db0feca9d54bbfc615328b317a5c6b4c8 Author: Dimitry Andric AuthorDate: 2023-05-29 14:27:58 +0000 Commit: Dimitry Andric CommitDate: 2023-06-01 19:15:31 +0000 Apply clang fixes for crashes compiling ARM/AArch64 CRC intrinsics Merge commit 069ecd0c6e2c from llvm-project (by Fangrui Song): [ARM] Check target feature support for __builtin_arm_crc* `__builtin_arm_crc*` requires the target feature crc which is available on armv8 and above. Calling the fuctions for armv7 leads to a SelectionDAG crash. ``` % clang -c --target=armv7-unknown-linux-gnueabi -c a.c fatal error: error in backend: Cannot select: intrinsic %llvm.arm.crc32b PLEASE submit a bug report to ... ``` Add `TARGET_BUILTIN` and define required features for these builtins to report an error in `CodeGenFunction::checkTargetFeatures`. The problem is quite widespread. I will add `TARGET_BUILTIN` for more builtins later. Fix https://github.com/llvm/llvm-project/issues/57802 Differential Revision: https://reviews.llvm.org/D134127 Merge commit b2d7a0dcf1ff from llvm-project (by Fangrui Song): [AArch64] Check target feature support for __builtin_arm_crc* This is the AArch64 counterpart of D134127. Daniel Kiss will change more `BUILTIN` to `TARGET_BUILTIN`. Fix #57802 Note that programs attempting to use ARM/AArch64 CRC intrinsics, when they are not supported by the targeted CPU, will still receive a regular compilation error (instead of a fatal backend error) similar to: 7zCrc.c:4:10: error: '__builtin_arm_crc32b' needs target feature crc return __builtin_arm_crc32b(a, b); ^ Reported by: Alastair Hogge PR: 271624 MFC after: 3 days (cherry picked from commit 8792c03886d9e6df10fbac825819603dc059c7ea) --- .../clang/include/clang/Basic/BuiltinsAArch64.def | 20 ++++++++++++-------- .../clang/include/clang/Basic/BuiltinsARM.def | 20 ++++++++++++-------- .../llvm-project/clang/lib/Basic/Targets/AArch64.cpp | 2 ++ contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp | 2 ++ 4 files changed, 28 insertions(+), 16 deletions(-) diff --git a/contrib/llvm-project/clang/include/clang/Basic/BuiltinsAArch64.def b/contrib/llvm-project/clang/include/clang/Basic/BuiltinsAArch64.def index 65ab4fcced9a..3c0a5f12681d 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/BuiltinsAArch64.def +++ b/contrib/llvm-project/clang/include/clang/Basic/BuiltinsAArch64.def @@ -17,6 +17,10 @@ # define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) #endif +#if defined(BUILTIN) && !defined(TARGET_BUILTIN) +# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + #if defined(BUILTIN) && !defined(TARGET_HEADER_BUILTIN) # define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANG, FEATURE) BUILTIN(ID, TYPE, ATTRS) #endif @@ -45,14 +49,14 @@ BUILTIN(__builtin_arm_sev, "v", "") BUILTIN(__builtin_arm_sevl, "v", "") // CRC32 -BUILTIN(__builtin_arm_crc32b, "UiUiUc", "nc") -BUILTIN(__builtin_arm_crc32cb, "UiUiUc", "nc") -BUILTIN(__builtin_arm_crc32h, "UiUiUs", "nc") -BUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc") -BUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc") -BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc") -BUILTIN(__builtin_arm_crc32d, "UiUiWUi", "nc") -BUILTIN(__builtin_arm_crc32cd, "UiUiWUi", "nc") +TARGET_BUILTIN(__builtin_arm_crc32b, "UiUiUc", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32cb, "UiUiUc", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32h, "UiUiUs", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32d, "UiUiWUi", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32cd, "UiUiWUi", "nc", "crc") // Memory Tagging Extensions (MTE) BUILTIN(__builtin_arm_irg, "v*v*Ui", "t") diff --git a/contrib/llvm-project/clang/include/clang/Basic/BuiltinsARM.def b/contrib/llvm-project/clang/include/clang/Basic/BuiltinsARM.def index 0cea0a9051e5..53fe64c317d1 100644 --- a/contrib/llvm-project/clang/include/clang/Basic/BuiltinsARM.def +++ b/contrib/llvm-project/clang/include/clang/Basic/BuiltinsARM.def @@ -17,6 +17,10 @@ # define LANGBUILTIN(ID, TYPE, ATTRS, BUILTIN_LANG) BUILTIN(ID, TYPE, ATTRS) #endif +#if defined(BUILTIN) && !defined(TARGET_BUILTIN) +# define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) BUILTIN(ID, TYPE, ATTRS) +#endif + #if defined(BUILTIN) && !defined(TARGET_HEADER_BUILTIN) # define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANG, FEATURE) BUILTIN(ID, TYPE, ATTRS) #endif @@ -157,14 +161,14 @@ BUILTIN(__builtin_arm_mrrc, "LLUiUIiUIiUIi", "") BUILTIN(__builtin_arm_mrrc2, "LLUiUIiUIiUIi", "") // CRC32 -BUILTIN(__builtin_arm_crc32b, "UiUiUc", "nc") -BUILTIN(__builtin_arm_crc32cb, "UiUiUc", "nc") -BUILTIN(__builtin_arm_crc32h, "UiUiUs", "nc") -BUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc") -BUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc") -BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc") -BUILTIN(__builtin_arm_crc32d, "UiUiLLUi", "nc") -BUILTIN(__builtin_arm_crc32cd, "UiUiLLUi", "nc") +TARGET_BUILTIN(__builtin_arm_crc32b, "UiUiUc", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32cb, "UiUiUc", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32h, "UiUiUs", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32ch, "UiUiUs", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32w, "UiUiUi", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32cw, "UiUiUi", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32d, "UiUiLLUi", "nc", "crc") +TARGET_BUILTIN(__builtin_arm_crc32cd, "UiUiLLUi", "nc", "crc") // ARMv8-M Security Extensions a.k.a CMSE BUILTIN(__builtin_arm_cmse_TT, "Uiv*", "n") diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/AArch64.cpp b/contrib/llvm-project/clang/lib/Basic/Targets/AArch64.cpp index 8d8972c1613a..22b7cf4d0c7e 100644 --- a/contrib/llvm-project/clang/lib/Basic/Targets/AArch64.cpp +++ b/contrib/llvm-project/clang/lib/Basic/Targets/AArch64.cpp @@ -35,6 +35,8 @@ const Builtin::Info AArch64TargetInfo::BuiltinInfo[] = { {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, nullptr}, #define LANGBUILTIN(ID, TYPE, ATTRS, LANG) \ {#ID, TYPE, ATTRS, nullptr, LANG, nullptr}, +#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) \ + {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, FEATURE}, #define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANGS, FEATURE) \ {#ID, TYPE, ATTRS, HEADER, LANGS, FEATURE}, #include "clang/Basic/BuiltinsAArch64.def" diff --git a/contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp b/contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp index b2f61cff81c9..159b00dea5bb 100644 --- a/contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp +++ b/contrib/llvm-project/clang/lib/Basic/Targets/ARM.cpp @@ -979,6 +979,8 @@ const Builtin::Info ARMTargetInfo::BuiltinInfo[] = { {#ID, TYPE, ATTRS, nullptr, LANG, nullptr}, #define LIBBUILTIN(ID, TYPE, ATTRS, HEADER) \ {#ID, TYPE, ATTRS, HEADER, ALL_LANGUAGES, nullptr}, +#define TARGET_BUILTIN(ID, TYPE, ATTRS, FEATURE) \ + {#ID, TYPE, ATTRS, nullptr, ALL_LANGUAGES, FEATURE}, #define TARGET_HEADER_BUILTIN(ID, TYPE, ATTRS, HEADER, LANGS, FEATURE) \ {#ID, TYPE, ATTRS, HEADER, LANGS, FEATURE}, #include "clang/Basic/BuiltinsARM.def"