From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 42264 invoked by alias); 31 Jul 2017 15:14:23 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 42196 invoked by uid 89); 31 Jul 2017 15:14:15 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-24.2 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,GIT_PATCH_0,GIT_PATCH_1,GIT_PATCH_2,GIT_PATCH_3,RCVD_IN_DNSWL_NONE,SPF_PASS autolearn=ham version=3.3.2 spammy=Hx-languages-length:1852 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mail-it0-f66.google.com Received: from mail-it0-f66.google.com (HELO mail-it0-f66.google.com) (209.85.214.66) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 31 Jul 2017 15:14:14 +0000 Received: by mail-it0-f66.google.com with SMTP id h199so14979203ith.5; Mon, 31 Jul 2017 08:14:14 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=v0Z7Ix4CdW+i8vHcK0vGAtAuHu0NFpcUcuGP66ypfR0=; b=LgICSgOhKi2PfqFh97dQfcOCII/9Oo4H0AXq0zxxK87ZbKuShZ/5L4Fw/n8st7buKv qw0X68vV/nzRhO1OWmppuAIRtGGUDm9GKZiWDxAbLl0fBj+4j4IFnUdzfR2VmALmOvAP 4oZMneo5I7TO+XLl8FE4MRuaDFy2RYBfZfdEvdTcqDKjL2SNt1RJUuVMN6V/jFWaMN1d 4OQMPjxo6pvGqmkMXs//bLbfIYMLZVGcbDTHJBOalsel8y3IDjBGcZrHEDgTgBvl7CC7 KXHe4rY/xPSM1hLy7F1S7bf2ppBfM3mAQHZ/u/ISMdFg80QcOfm3dRly+nYLQTW72qVP 6Etg== X-Gm-Message-State: AIVw111G3dMrPF2kKuLpjg9e6V3oc1I+/QWlFqpcuZL0k+dgTThBDKjG /BF2u7h3ad3ZSxXZNH+sHEjKTDUVBg== X-Received: by 10.36.39.77 with SMTP id g74mr19463191ita.89.1501514052561; Mon, 31 Jul 2017 08:14:12 -0700 (PDT) MIME-Version: 1.0 Received: by 10.79.38.84 with HTTP; Mon, 31 Jul 2017 08:13:52 -0700 (PDT) In-Reply-To: <20170731145342.GW15340@redhat.com> References: <20170727072715.43fqiep4nawwvzlc@netzach.ktns.kdns.info> <20170731145342.GW15340@redhat.com> From: Tim Song Date: Mon, 31 Jul 2017 15:14:00 -0000 Message-ID: Subject: Re: [PATCH] libstdc++: Support std::is_aggregate on clang++ (was [cfe-dev] clang++: std::is_aggregate unusable with clang-5.0/libstdc++-7) To: Jonathan Wakely Cc: Katsuhiko Nishimra , gcc-patches , "libstdc++" , cfe-dev@lists.llvm.org Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2017-07/txt/msg02034.txt.bz2 On Mon, Jul 31, 2017 at 10:53 AM, Jonathan Wakely wrote: > On 27/07/17 16:27 +0900, Katsuhiko Nishimra wrote: >> >> From 56c4a18d0d8c8ce7aa1239880138775e4db06645 Mon Sep 17 00:00:00 2001 >> From: Katsuhiko Nishimra >> Date: Thu, 27 Jul 2017 16:03:54 +0900 >> Subject: [PATCH] libstdc++: Support std::is_aggregate on clang++ >> >> Currently, libstdc++ tries to detect __is_aggregate built-in macro using >> __has_builtin, but this fails on clang++ because __has_builtin on >> clang++ detects only built-in functions, not built-in macros. This patch >> adds a test using __is_identifier. Tested on clang++ >> 5.0.0-svn308422-1~exp1 and g++ 7.1.0-10 from Debian unstable. >> --- >> libstdc++-v3/include/std/type_traits | 5 +++++ >> 1 file changed, 5 insertions(+) >> >> diff --git a/libstdc++-v3/include/std/type_traits >> b/libstdc++-v3/include/std/type_traits >> index 390b6f40a..e7ec402fb 100644 >> --- a/libstdc++-v3/include/std/type_traits >> +++ b/libstdc++-v3/include/std/type_traits >> @@ -2894,6 +2894,11 @@ template >> >> #if __GNUC__ >= 7 >> # define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1 >> +#elif defined(__is_identifier) >> +// For clang >> +# if ! __is_identifier(__is_aggregate) >> +# define _GLIBCXX_HAVE_BUILTIN_IS_AGGREGATE 1 >> +# endif >> #elif defined __has_builtin >> // For non-GNU compilers: >> # if __has_builtin(__is_aggregate) > > > This __has_bultin check only exists for Clang, so should be replaced > by the correct __is_identifier check, not left there in addition to > it. > > https://clang.llvm.org/docs/LanguageExtensions.html#checks-for-type-trait-primitives seems to suggest using __has_extension instead.