From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7810) id A23EC3858D32; Mon, 5 Sep 2022 10:09:28 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org A23EC3858D32 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1662372568; bh=D137PMu2g8FQOlHWnNP4i1ToYPH7OlowaGnHKmLAZbc=; h=From:To:Subject:Date:From; b=NRph+79xNTRFsPt9U25IGUEvASAh1rPN0wSID3cWJMhfnin5i02QfqmlDCUUEJsRL qq/WcjIvqiGsBafArZLsXFmsjlZA72PafWFzVck+wxQPq2oQfPy2QBXUqULAdJ7V74 m6RmZe3RhamGVCjc10/ze+cgyYyQpTF/ornEmQHY= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Alex Coplan To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc(refs/vendors/ARM/heads/morello)] libstdc++: Add some intcap type handling X-Act-Checkin: gcc X-Git-Author: Alex Coplan X-Git-Refname: refs/vendors/ARM/heads/morello X-Git-Oldrev: 232742941eac38182864eb7e79e25d24adb8d0b3 X-Git-Newrev: 46c0f36ba7dc0c1d8d992f6ccfe24b7f863b5688 Message-Id: <20220905100928.A23EC3858D32@sourceware.org> Date: Mon, 5 Sep 2022 10:09:28 +0000 (GMT) List-Id: https://gcc.gnu.org/g:46c0f36ba7dc0c1d8d992f6ccfe24b7f863b5688 commit 46c0f36ba7dc0c1d8d992f6ccfe24b7f863b5688 Author: Alex Coplan Date: Mon Aug 8 15:20:09 2022 +0100 libstdc++: Add some intcap type handling This extends std::numeric_limits and std::is_integral to handle intcap types. Diff: --- libstdc++-v3/include/std/limits | 10 ++++++++++ libstdc++-v3/include/std/type_traits | 10 ++++++++++ 2 files changed, 20 insertions(+) diff --git a/libstdc++-v3/include/std/limits b/libstdc++-v3/include/std/limits index 20883ba6403..2a4b68f55d5 100644 --- a/libstdc++-v3/include/std/limits +++ b/libstdc++-v3/include/std/limits @@ -1477,6 +1477,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION = round_toward_zero; }; +#ifdef __CHERI__ + template<> + struct numeric_limits<__intcap> + : public numeric_limits { }; + + template<> + struct numeric_limits + : public numeric_limits { }; +#endif + #define __INT_N(TYPE, BITSIZE, EXT, UEXT) \ template<> \ struct numeric_limits \ diff --git a/libstdc++-v3/include/std/type_traits b/libstdc++-v3/include/std/type_traits index 6ced781bd59..46e8693b1df 100644 --- a/libstdc++-v3/include/std/type_traits +++ b/libstdc++-v3/include/std/type_traits @@ -321,6 +321,16 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION struct __is_integral_helper : public true_type { }; +#ifdef __CHERI__ + template<> + struct __is_integral_helper<__intcap> + : public true_type { }; + + template<> + struct __is_integral_helper + : public true_type { }; +#endif + // Conditionalizing on __STRICT_ANSI__ here will break any port that // uses one of these types for size_t. #if defined(__GLIBCXX_TYPE_INT_N_0)