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.129.124]) by sourceware.org (Postfix) with ESMTPS id C54E53858C27 for ; Mon, 11 Apr 2022 21:31:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C54E53858C27 Received: from mail-qv1-f72.google.com (mail-qv1-f72.google.com [209.85.219.72]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-53-M7RvWMQlO5WXomR-Oix98A-1; Mon, 11 Apr 2022 17:31:22 -0400 X-MC-Unique: M7RvWMQlO5WXomR-Oix98A-1 Received: by mail-qv1-f72.google.com with SMTP id kl19-20020a056214519300b0044454fc4c9bso636964qvb.7 for ; Mon, 11 Apr 2022 14:31:22 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=NjwHTi0NARpVHR4I1amrODuIzL6StfJm6ci45sLYi4s=; b=5cjtixBaouide7BaGpEpfZ/lETV8ae3wHqU1BeNNawKyIRGfgiD+eysUHZBo5XGLFL lUbB1J7uPMfVqw/SbYaHHtzNautg2O/xFMRtX6mNdBLNB7mWYBYZLpnQweoXwxrVIyBy 0xKUN2l8rbl6/qNKODM4BoBHds3cPxdEV0Jm0iL021LKMo1fsK/D/MGq4q26ZpqPRr1/ S1Ffpuy7qmV1XvCe948oMJFJYf0p0mlKsbfCWwf/g2dI3Smwns/Ma2a6k+wHR+JfWVYo DHPsI2YNg1onCClpxxT+9vQSZvQEF2FLdmqqJ0RtJIcI4oCICv67EMpFsWSlQGJlBUQk cfcQ== X-Gm-Message-State: AOAM532nYoz+IZYZj+Zi6ndYlpepj2ZMp2NNcqjWDeDgW55g8Qx4zTHY 1BXQ51CQh1IAQ4oAhlnbAXPL86LaRLE5UAOnndeWq8sLCZVFXp9fvGE57y3zLYkFKqhIif3R+Ji ZUfybrRC1I9yL0QkrBy3CAjAnF0EkOPEoLxSARArfDY1Dzs1IlTCoq8PbS8d1vgGe9g== X-Received: by 2002:a05:6214:1c0d:b0:444:39b4:e4fb with SMTP id u13-20020a0562141c0d00b0044439b4e4fbmr1130888qvc.58.1649712681264; Mon, 11 Apr 2022 14:31:21 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxcmcNPM9R2SpQACNw5/Xe2PKribqpBRq/K1gEY1tZzTYt9iFsP9zu6dUi6qdm3e9NX9X8x+A== X-Received: by 2002:a05:6214:1c0d:b0:444:39b4:e4fb with SMTP id u13-20020a0562141c0d00b0044439b4e4fbmr1130864qvc.58.1649712680860; Mon, 11 Apr 2022 14:31:20 -0700 (PDT) Received: from barrymore.redhat.com (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id t72-20020a37464b000000b0067ec1c9dcaesm19773758qka.44.2022.04.11.14.31.19 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 11 Apr 2022 14:31:19 -0700 (PDT) From: Jason Merrill To: gcc-patches@gcc.gnu.org Subject: [pushed] c++: operator new lookup [PR98249] Date: Mon, 11 Apr 2022 17:31:17 -0400 Message-Id: <20220411213117.2948304-1-jason@redhat.com> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII"; x-default=true X-Spam-Status: No, score=-13.0 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_LOW, RCVD_IN_MSPIKE_H4, 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: 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-List-Received-Date: Mon, 11 Apr 2022 21:31:25 -0000 The standard says, as we quote in the comment just above, that if we don't find operator new in the allocated type, it should be looked up in the global scope. This is specifically ::, not just any namespace, and we already give an error for an operator new declared in any other namespace. Tested x86_64-pc-linux-gnu, applying to trunk. PR c++/98249 gcc/cp/ChangeLog: * call.cc (build_operator_new_call): Just look in ::. gcc/testsuite/ChangeLog: * g++.dg/lookup/new3.C: New test. --- gcc/cp/call.cc | 3 +-- gcc/testsuite/g++.dg/lookup/new3.C | 10 ++++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 gcc/testsuite/g++.dg/lookup/new3.C diff --git a/gcc/cp/call.cc b/gcc/cp/call.cc index 73fede5a3df..3a8d7e4b131 100644 --- a/gcc/cp/call.cc +++ b/gcc/cp/call.cc @@ -4899,8 +4899,7 @@ build_operator_new_call (tree fnname, vec **args, up in the global scope. we disregard block-scope declarations of "operator new". */ - fns = lookup_name (fnname, LOOK_where::NAMESPACE); - fns = lookup_arg_dependent (fnname, fns, *args); + fns = lookup_qualified_name (global_namespace, fnname); if (align_arg) { diff --git a/gcc/testsuite/g++.dg/lookup/new3.C b/gcc/testsuite/g++.dg/lookup/new3.C new file mode 100644 index 00000000000..36afb5b48e2 --- /dev/null +++ b/gcc/testsuite/g++.dg/lookup/new3.C @@ -0,0 +1,10 @@ +// PR c++/98249 + +#include +struct Incomplete; +template struct Holder { T t; }; +Holder *p; +void test() { + ::new (p) int; + new (p) int; +} base-commit: b1124648ff8f655307f264d7b353fd68e3b03e9c -- 2.27.0