From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2153) id B09ED3A77044; Fri, 23 Apr 2021 10:38:04 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B09ED3A77044 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Jakub Jelinek To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc(refs/vendors/redhat/heads/gcc-8-branch)] libstdc++: Fix clang analyzer suppression [PR 98605] X-Act-Checkin: gcc X-Git-Author: Jonathan Wakely X-Git-Refname: refs/vendors/redhat/heads/gcc-8-branch X-Git-Oldrev: 2a10b2a4ef76581d785763be98e4373e6cb62070 X-Git-Newrev: 204d104dc262f28ec05e09e9123dcc7aa50067d0 Message-Id: <20210423103804.B09ED3A77044@sourceware.org> Date: Fri, 23 Apr 2021 10:38:04 +0000 (GMT) X-BeenThere: libstdc++-cvs@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++-cvs mailing list List-Unsubscribe: , List-Archive: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 23 Apr 2021 10:38:04 -0000 https://gcc.gnu.org/g:204d104dc262f28ec05e09e9123dcc7aa50067d0 commit 204d104dc262f28ec05e09e9123dcc7aa50067d0 Author: Jonathan Wakely Date: Wed Jan 13 11:03:58 2021 +0000 libstdc++: Fix clang analyzer suppression [PR 98605] The fix for PR libstdc++/82481 should only have applied for targets where _GLIBCXX_HAVE_TLS is defined. Because it was also done for non-TLS targets, it isn't possible to use clang's analyzers on non-TLS targets if the code uses . This fixes it by using a NOLINT comment on the relevant line instead of testing #ifdef __clang_analyzer__ and compiling different code when analyzing. I'm not actually able to reproduce the analyzer warning with the tools from Clang 10.0.1 so I'm not going to try to make the suppression more specific with NOLINTNEXTLINE(clang-analyzer-code.StackAddressEscape). libstdc++-v3/ChangeLog: PR libstdc++/98605 * include/std/mutex (call_once): Use NOLINT to suppress clang analyzer warnings. (cherry picked from commit 8d3636923a309074eb19240ebaa30c1a0801eaaf) Diff: --- libstdc++-v3/include/std/mutex | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/libstdc++-v3/include/std/mutex b/libstdc++-v3/include/std/mutex index 71e915cc5a0..8476baa24ca 100644 --- a/libstdc++-v3/include/std/mutex +++ b/libstdc++-v3/include/std/mutex @@ -673,7 +673,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION std::forward<_Args>(__args)...); }; #ifdef _GLIBCXX_HAVE_TLS - __once_callable = std::__addressof(__callable); + __once_callable = std::__addressof(__callable); // NOLINT: PR 82481 __once_call = []{ (*(decltype(__callable)*)__once_callable)(); }; #else unique_lock __functor_lock(__get_once_mutex()); @@ -688,12 +688,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __set_once_functor_lock_ptr(0); #endif -#ifdef __clang_analyzer__ - // PR libstdc++/82481 - __once_callable = nullptr; - __once_call = nullptr; -#endif - if (__e) __throw_system_error(__e); }