From patchwork Wed Feb 9 17:35:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Thomas Rodgers X-Patchwork-Id: 50969 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 3BD2F3858D1E for ; Wed, 9 Feb 2022 17:36:17 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 3BD2F3858D1E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1644428177; bh=iFjQHNAc1CNlWZuYvysNZfdBuNB/Jf9O8VgAhRDfE7E=; h=Date:Subject:To:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:Cc:From; b=bVfEOi2vmzI/jmfryuAhPlp/PJTQRta3R5WGERSCKpy3mO01CFWaKdzuBWSY9GVtE pr+PkqW/O0xkhUcjqPJ3ybkJSman7ZUwb7f0hqn9WyezB2OE2ubR++a8vCduB9ZwxP FIsfzh/yfZFVNQu4J32SCj6rBxja4yDW6KIuONgs= X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id D92323858C74 for ; Wed, 9 Feb 2022 17:35:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org D92323858C74 Received: from mail-oo1-f72.google.com (mail-oo1-f72.google.com [209.85.161.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-102-kEEo4_HlMA-4VvAixtEOkQ-1; Wed, 09 Feb 2022 12:35:13 -0500 X-MC-Unique: kEEo4_HlMA-4VvAixtEOkQ-1 Received: by mail-oo1-f72.google.com with SMTP id v10-20020a4ade8a000000b003177422e81dso1957030oou.3 for ; Wed, 09 Feb 2022 09:35:13 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc; bh=4MGDfMNvhuGuTb/2yhj1kvScPxkI3sxyzS5cz1NjMoc=; b=2KpzmFseFGICIHyzaq7kIEhNA1210HJGksWPjb5qdKdWWXBqUPWqp2dMw27AuPvlaA EENoG39ADcYBYcH9F6ShKiyRLK415JPsvJGtrhOnZeTjJnMdJTSKRtiY3YioTU06wRVN FJw8wpjvx9A3SKFhjsQVdnyK9PC4jSNf5FooBUFNhoq28aHANCi/nToKE6VaNsMHMaLg bSbHarMFebp+E/nl6DL4eJDWWWN9JbkuteipP0KkKXH3DBlG59uCNedS7fRUBQrrzLCB MJym99PGgwM4UJbSnu0aWIC/++AQRU6P653lkKYqnx8z2T3ecyrgbspkWH8Su6hV1Tq8 6pNg== X-Gm-Message-State: AOAM5328dP/An55ipckEuTmP0oTKoJUXy/2IY44s+SIlKJ9b/FuabytY xW8A/9a5wZPoa+QaMIGk3Sy18MUti5wx1e2oboII0nEr5EhX3FB/Pvq6maxBAwsMRuDb5gxg6gq CJmos1uSj5bZUXhk+W8VRzA172Fof0m+qYg== X-Received: by 2002:a05:6830:4409:: with SMTP id q9mr1387470otv.316.1644428113021; Wed, 09 Feb 2022 09:35:13 -0800 (PST) X-Google-Smtp-Source: ABdhPJy5NelnpspC9ZnMs2DFIiSj/QIlg0+5evk+hRttYQxxatBl2+DkQLITRuhSE1Jit+nkRCeJSP7Yutzy1FVx2Ig= X-Received: by 2002:a05:6830:4409:: with SMTP id q9mr1387455otv.316.1644428112775; Wed, 09 Feb 2022 09:35:12 -0800 (PST) MIME-Version: 1.0 Date: Wed, 9 Feb 2022 09:35:02 -0800 Message-ID: Subject: [PATCH] libstdc++: Strengthen memory order for atomic::wait/notify To: "libstdc++" X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-14.1 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, HTML_MESSAGE, RCVD_IN_DNSWL_LOW, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=unavailable autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Thomas Rodgers via Gcc-patches From: Thomas Rodgers Reply-To: Thomas Rodgers Cc: gcc Patches Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" This patch changes the memory order used in the spin wait code to match that of libc++. From 92caa08b272520ec4a272b302b37d8fb47afb2ab Mon Sep 17 00:00:00 2001 From: Thomas Rodgers Date: Wed, 9 Feb 2022 09:26:00 -0800 Subject: [PATCH] libstdc++: Strengthen memory order for atomic::wait/notify (spinning) This patch changes the memory order used in the spin wait code to match that of libc++. libstdc++-v3/ChangeLog: * includ/bits/atomic_wait.h (__waiter_base::_S_do_spin, __waiter_base::_S_do_spin_v): Change memory order from relaxed to acquire. --- libstdc++-v3/include/bits/atomic_wait.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/include/bits/atomic_wait.h b/libstdc++-v3/include/bits/atomic_wait.h index 6ce7f9343cf..125b1cad886 100644 --- a/libstdc++-v3/include/bits/atomic_wait.h +++ b/libstdc++-v3/include/bits/atomic_wait.h @@ -332,7 +332,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION } else { - __atomic_load(__addr, &__val, __ATOMIC_RELAXED); + __atomic_load(__addr, &__val, __ATOMIC_ACQUIRE); } return __atomic_spin(__pred, __spin); } @@ -353,7 +353,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION __platform_wait_t& __val, _Spin __spin = _Spin{ }) { - __atomic_load(__addr, &__val, __ATOMIC_RELAXED); + __atomic_load(__addr, &__val, __ATOMIC_ACQUIRE); return __atomic_spin(__pred, __spin); } -- 2.34.1