From patchwork Wed Jan 4 16:37:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Patrick Palka X-Patchwork-Id: 62706 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 125793858C53 for ; Wed, 4 Jan 2023 16:38:33 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 125793858C53 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1672850313; bh=kHO6KABoUItAunpgFOT7LTEhvrhxIW76aj5OhqYHZ+k=; h=To:Cc:Subject:Date:List-Id:List-Unsubscribe:List-Archive: List-Post:List-Help:List-Subscribe:From:Reply-To:From; b=WmyKmG8TuGUv24EzCHSLOi3gDv+bWQB9ZBxdKUEEGruCFXFYNbWhdfd2Sk4CNP/zq KBIAnw6+kJGMIj8UM0vhkLmyLG3TZk+saHxl8N8L1CvsncRqO3+hp3tiKEOIHW1dfR jdRbzxPzL3Kgvb91hmU68aCg3g5e6D4TQZ557y40= 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 8311A3858D35 for ; Wed, 4 Jan 2023 16:38:05 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8311A3858D35 Received: from mail-vk1-f197.google.com (mail-vk1-f197.google.com [209.85.221.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-100-UgwG_5CFMk-U_jTQZm52xQ-1; Wed, 04 Jan 2023 11:38:04 -0500 X-MC-Unique: UgwG_5CFMk-U_jTQZm52xQ-1 Received: by mail-vk1-f197.google.com with SMTP id d130-20020a1f9b88000000b003b87d0db0d9so9175194vke.15 for ; Wed, 04 Jan 2023 08:38:04 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=kHO6KABoUItAunpgFOT7LTEhvrhxIW76aj5OhqYHZ+k=; b=RBMmxYhz+pM6IbMjKuCA0j24M4H+40u0Zl1YbVzmt/cK0AS+LW7r3G/om2RbvaRR90 1fbcxNIArcBxI9LConnBnvg3+bYHcxo/VAXltu8hfSPgCv1KvQ+g0Fu1vK1fFYgwtvgh eUMHanLBU539jYojwwu/aL5/OwC9DqeMGEBnnHvM6/CC99Qu+/lFKroqINltmSwdsvvS FSbNXepBGaWG3a5olIEWqO0ZdOu0H6vFcboLtB9VDa/0Q6uh9lAhdslX+Pmwm0I+b9RF ERzR4TBi3YKkjx5wxRN7X4bPxt8/V0fGThfysBlTAYsa0DcmlUCr7xP+RRK/DKHE2ln3 ZyvQ== X-Gm-Message-State: AFqh2krlXNyJqzdrtHB3TfC73/3Md7LNwZK8GYrdBvRrt+d+3ucQQu0u hbhgVbLFbZHHHwcpr7JnJRVUJIzl0Sny+/rcJMFUoxvVe83yjLpNMOj8Z4+nyL5T8odF03Thrgs vYFkACUsLcwGkHmZooZOMbGGorHeU+AuxSVEwKLP8we5IYm1BwOyEQl3m7VPazsTlvMk= X-Received: by 2002:a67:e9d7:0:b0:3cb:bdba:9a0a with SMTP id q23-20020a67e9d7000000b003cbbdba9a0amr11703480vso.16.1672850283242; Wed, 04 Jan 2023 08:38:03 -0800 (PST) X-Google-Smtp-Source: AMrXdXv4F/07mqWu8jEjJgeJkL6yz7i+yXG7lhwDvlDXfuTU8yOgHOsB/aPSLy6reo1xysYGjkLFqg== X-Received: by 2002:a67:e9d7:0:b0:3cb:bdba:9a0a with SMTP id q23-20020a67e9d7000000b003cbbdba9a0amr11703453vso.16.1672850282889; Wed, 04 Jan 2023 08:38:02 -0800 (PST) Received: from localhost.localdomain (ool-457670bb.dyn.optonline.net. [69.118.112.187]) by smtp.gmail.com with ESMTPSA id m3-20020a05620a24c300b006fef157c8aesm24620195qkn.36.2023.01.04.08.38.02 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 04 Jan 2023 08:38:02 -0800 (PST) To: gcc-patches@gcc.gnu.org Cc: jason@redhat.com, Patrick Palka Subject: [PATCH] c++: mark_single_function and SFINAE [PR108282] Date: Wed, 4 Jan 2023 11:37:58 -0500 Message-Id: <20230104163758.2933306-1-ppalka@redhat.com> X-Mailer: git-send-email 2.39.0.158.g2b4f5a4e4b MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-13.7 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org 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: Patrick Palka via Gcc-patches From: Patrick Palka Reply-To: Patrick Palka Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" We typically ignore mark_used failure when in a non-SFINAE context for sake of better error recovery. But in mark_single_function we're instead ignoring mark_used failure in a SFINAE context, which ends up causing the second static_assert here to incorrectly fail. Bootstrapped and regtested on x86_64-pc-linux-gnu, does this look OK for trunk/12? PR c++/108282 gcc/cp/ChangeLog: * decl2.cc (mark_single_function): Ignore mark_used failure only in a non-SFINAE context rather than in a SFINAE one. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-requires34.C: New test. --- gcc/cp/decl2.cc | 2 +- .../g++.dg/cpp2a/concepts-requires34.C | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/cpp2a/concepts-requires34.C diff --git a/gcc/cp/decl2.cc b/gcc/cp/decl2.cc index f95529a5c9a..00ed64d1691 100644 --- a/gcc/cp/decl2.cc +++ b/gcc/cp/decl2.cc @@ -5600,7 +5600,7 @@ mark_single_function (tree expr, tsubst_flags_t complain) if (is_overloaded_fn (expr) == 1 && !mark_used (expr, complain) - && (complain & tf_error)) + && !(complain & tf_error)) return false; return true; } diff --git a/gcc/testsuite/g++.dg/cpp2a/concepts-requires34.C b/gcc/testsuite/g++.dg/cpp2a/concepts-requires34.C new file mode 100644 index 00000000000..670a6dab31a --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/concepts-requires34.C @@ -0,0 +1,19 @@ +// PR c++/108282 +// { dg-do compile { target c++20 } } + +template +concept TEST = requires { T::TT; }; + +struct C { }; + +template +struct B { + static inline void TT() requires TEST; +}; + +int main() { + static_assert( !TEST ); + static_assert( !TEST> ); + + B::TT(); // { dg-error "no match" } +}