From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 6E6F13858C83 for ; Mon, 21 Mar 2022 10:00:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6E6F13858C83 Received: from mail-yb1-f198.google.com (mail-yb1-f198.google.com [209.85.219.198]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-584-2bJs3V_XNYyYk-7Qgxe5NQ-1; Mon, 21 Mar 2022 06:00:23 -0400 X-MC-Unique: 2bJs3V_XNYyYk-7Qgxe5NQ-1 Received: by mail-yb1-f198.google.com with SMTP id j6-20020a25ec06000000b00633c6f3e072so5110649ybh.12 for ; Mon, 21 Mar 2022 03:00:23 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=pLogUc/XIQKPw7z4pLvVgP1STLbvUgDuq/QkQgcP2MU=; b=zEvqmzn7pNqS6Y5CD74ZzcNf3y6LyQIA3lNeCoUFCRhEVevh1La8pf0UDsF2o+xFAS v+o1F9DtrrJxyq6lHRpERtGRqQwLAjf0StAoGrg/BMzEOvJaFPzHUW3ARA4R7RKDBH9r T5WzSLcIv9bN2E+cMUSkDYL2SXfs8su6XHXloMdrnI5IKIcWcHau1y944QL0gVbNYiBi 1XrbDGEWNC95QNoeNvqmP85dEOOFlciaHTIcdt4qEceKhtjYhjh42P7peDfP1Ktfvd2C vWSXQ8rpTnAQV56v7K6SlkISk/+BZYQ0iK1s7BoCcQyJv/o/NMVqiJv4Uv434QzCClGW YlYA== X-Gm-Message-State: AOAM531902lY/rDo22Cb5aqKQGkGuRz6RoHuC24IpxzLV0Ap4v9nIteb GXizvvCv/uUG43UqF8wRvmDtN5z1qgnDOYH3PqwwPR7EYPT5dPgeDuGaQASyqLSM3e0GgFPUhAw aRQvxjj9dcZT/TQymtJmyanvcRQacnYE= X-Received: by 2002:a0d:f883:0:b0:2d0:ee66:5f97 with SMTP id i125-20020a0df883000000b002d0ee665f97mr22211934ywf.313.1647856823407; Mon, 21 Mar 2022 03:00:23 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxYi8rZxqki7w49JVWIM/2u8CRQ5uk451qrCoFgQdv/WSoubQ+2dwXK2J7HoBUAX1UL/4jaool2bJpPsS4ORZQ= X-Received: by 2002:a0d:f883:0:b0:2d0:ee66:5f97 with SMTP id i125-20020a0df883000000b002d0ee665f97mr22211909ywf.313.1647856823113; Mon, 21 Mar 2022 03:00:23 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Jonathan Wakely Date: Mon, 21 Mar 2022 10:00:12 +0000 Message-ID: Subject: Re: [PATCH] libstdc++: Work around clang misdesign in time_get<>::get [PR104990] To: Jakub Jelinek Cc: gcc Patches , "libstdc++" X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H5, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: libstdc++@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libstdc++ mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 21 Mar 2022 10:00:27 -0000 On Mon, 21 Mar 2022 at 06:42, Jakub Jelinek wrote: > > Hi! > > Apparently clang has a -fgnuc-version= option which allows it to pretend > it is any GCC version the user likes. It is already bad that it claims to > be GCC 4.2 compatible by default when it is not (various unimplemented > extensions at least), but this option is a horrible idea. > > Anyway, this patch adds a hack for it. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? OK for trunk. In stage 1 we might want to consider removing the __GNUC__ check entirely. We don't support using old versions of genuine GCC. Intel icc claims to be the latest GCC. And now Clang can be told to cosplay as any version of GCC, so we can't trust __GNUC__ at all. So this check would be just !defined(__clang__). > > 2022-03-21 Jakub Jelinek > > PR libstdc++/104990 > * include/bits/locale_facets_nonio.tcc (get): Don't check if do_get > isn't overloaded if __clang__ is defined. > > --- libstdc++-v3/include/bits/locale_facets_nonio.tcc 2022-03-18 10:37:41.176593188 +0100 > +++ libstdc++-v3/include/bits/locale_facets_nonio.tcc 2022-03-20 20:28:07.203815325 +0100 > @@ -1465,7 +1465,7 @@ _GLIBCXX_END_NAMESPACE_LDBL_OR_CXX11 > ctype<_CharT> const& __ctype = use_facet >(__loc); > __err = ios_base::goodbit; > bool __use_state = false; > -#if __GNUC__ >= 5 > +#if __GNUC__ >= 5 && !defined(__clang__) > #pragma GCC diagnostic push > #pragma GCC diagnostic ignored "-Wpmf-conversions" > // Nasty hack. The C++ standard mandates that get invokes the do_get > > Jakub >