From 13923d3c3b9d5c29b049bc1830a908e92c967121 Mon Sep 17 00:00:00 2001 From: Jan Dorniak Date: Thu, 27 Jun 2024 16:18:17 +0200 Subject: [PATCH 1/3] fix c++20-compat false positive --- include/etl/platform.h | 3 +++ 1 file changed, 3 insertions(+) diff --git a/include/etl/platform.h b/include/etl/platform.h index 17c7961d5..3b2689c8d 100644 --- a/include/etl/platform.h +++ b/include/etl/platform.h @@ -358,9 +358,12 @@ SOFTWARE. //************************************* // Determine if the ETL can use char8_t type. #if ETL_NO_SMALL_CHAR_SUPPORT +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wc++20-compat" typedef uint_least8_t char8_t; #define ETL_HAS_CHAR8_T 1 #define ETL_HAS_NATIVE_CHAR8_T 0 +#pragma GCC diagnostic pop #else #define ETL_HAS_CHAR8_T 1 #define ETL_HAS_NATIVE_CHAR8_T 1 From b4c320ef10c4d32533aadd33a5ff0052f9438c55 Mon Sep 17 00:00:00 2001 From: Jan Dorniak Date: Thu, 27 Jun 2024 16:37:13 +0200 Subject: [PATCH 2/3] move the c++20 compat warning suppression to a separate header --- include/etl/platform.h | 5 +-- .../private/diagnostic_cxx_20_compat_push.h | 44 +++++++++++++++++++ 2 files changed, 46 insertions(+), 3 deletions(-) create mode 100644 include/etl/private/diagnostic_cxx_20_compat_push.h diff --git a/include/etl/platform.h b/include/etl/platform.h index 3b2689c8d..da9307b4d 100644 --- a/include/etl/platform.h +++ b/include/etl/platform.h @@ -358,12 +358,11 @@ SOFTWARE. //************************************* // Determine if the ETL can use char8_t type. #if ETL_NO_SMALL_CHAR_SUPPORT -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wc++20-compat" +#include "private/diagnostic_cxx_20_compat_push.h" typedef uint_least8_t char8_t; #define ETL_HAS_CHAR8_T 1 #define ETL_HAS_NATIVE_CHAR8_T 0 -#pragma GCC diagnostic pop +#include "private/diagnostic_pop.h" #else #define ETL_HAS_CHAR8_T 1 #define ETL_HAS_NATIVE_CHAR8_T 1 diff --git a/include/etl/private/diagnostic_cxx_20_compat_push.h b/include/etl/private/diagnostic_cxx_20_compat_push.h new file mode 100644 index 000000000..787b015de --- /dev/null +++ b/include/etl/private/diagnostic_cxx_20_compat_push.h @@ -0,0 +1,44 @@ +///\file + +/****************************************************************************** +The MIT License(MIT) + +Embedded Template Library. +https://github.com/ETLCPP/etl +https://www.etlcpp.com + +Copyright(c) 2023 John Wellbelove + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files(the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and / or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions : + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +******************************************************************************/ + +/* + * The header include guard has been intentionally omitted. + * This file is intended to evaluated multiple times by design. + */ + +#if defined(__GNUC__) && !defined(__clang__) && !defined(__llvm__) + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wc++20-compat" +#endif + +#if defined(__clang__) || defined(__llvm__) + #pragma clang diagnostic push + #pragma GCC diagnostic ignored "-Wc++20-compat" +#endif From 3a60fe3dcd1f64d04eb7010413c0d9bd277cb18b Mon Sep 17 00:00:00 2001 From: Jan Dorniak Date: Thu, 27 Jun 2024 16:38:06 +0200 Subject: [PATCH 3/3] fix GCC/clang in private/diagnostic_cxx_20_compat_push.h --- include/etl/private/diagnostic_cxx_20_compat_push.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/include/etl/private/diagnostic_cxx_20_compat_push.h b/include/etl/private/diagnostic_cxx_20_compat_push.h index 787b015de..49a034667 100644 --- a/include/etl/private/diagnostic_cxx_20_compat_push.h +++ b/include/etl/private/diagnostic_cxx_20_compat_push.h @@ -40,5 +40,5 @@ SOFTWARE. #if defined(__clang__) || defined(__llvm__) #pragma clang diagnostic push - #pragma GCC diagnostic ignored "-Wc++20-compat" + #pragma clang diagnostic ignored "-Wc++20-compat" #endif