From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-qv1-xf2e.google.com (mail-qv1-xf2e.google.com [IPv6:2607:f8b0:4864:20::f2e]) by sourceware.org (Postfix) with ESMTPS id D40123858D35 for ; Sat, 6 Jan 2024 22:32:38 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org D40123858D35 Authentication-Results: sourceware.org; dmarc=fail (p=none dis=none) header.from=acm.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org D40123858D35 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::f2e ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704580361; cv=none; b=ajvqMC3dVF+igeHsOc/RH4W8v8f7dgzdKzYqSF+y1Uj39fKNxfQlRdujttOHFsuSKZOe890Yyq2HMWJtFZom4FQHTFOKSpWta8zANzlIXM9TMyX2E3MP2s0NkLCtYfLs4cDsRTTjq5Co/zPeA3tKg8P70bRIPp9gL910GoyC7+s= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1704580361; c=relaxed/simple; bh=sgbG+NPJGXps9gqEQplIv5jTwhiMjzavMaNsWE8v7eY=; h=DKIM-Signature:Message-ID:Date:MIME-Version:Subject:To:From; b=sGejEU1p34516QrAvRXJrjjwRDJWyWhZK3zluHuQ23retn8q/yABRABiJJtjXOYBGj/RiE6YycbgGLolLBidEzo2yS4zBt5/jyKBE4Kq7cisvPO9y1nsns435YhnxPzH9eebFUmP9L0NMrwpZ7KJ1AAYxOY07ng9LdQmeSzmY7Q= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-qv1-xf2e.google.com with SMTP id 6a1803df08f44-67f7bd86cafso7480326d6.0 for ; Sat, 06 Jan 2024 14:32:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1704580358; x=1705185158; darn=gcc.gnu.org; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :sender:from:to:cc:subject:date:message-id:reply-to; bh=7lJzsgXbqMMy+MnY6Qg2ZsgnV5BijhYJMpARCo4d0NQ=; b=KsJcrU3fd9Ap6pNMiRe9nQ5LpRB3pCLEIj29/8uOuMjJ33rwZGjyIrCUycLpbkCyID Y0en5cd0t572KVQU7IqjhoR99JXcQ+9M41GBDJSA1khFYN2N9d89mmixKybuMrwYoGYA IIu45diFTiXW3VNSirwzV0JIxglLESonFajSz9vuyYwNvh2kyfdxkFCJ1FSuBLDDBXsJ eOkEtI58bwLTk7gKi5goeHiwPnl/xRq/0pt8Bzfli3u1jr+9vWbkUzYtrRHb5JQ7vtLL pObTMV4HqotLsrjyQsZLAULr6UVysGC8LODoGCqXYe1pHI1t7abw/IlXZw1L4AdHEsWP AWuA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704580358; x=1705185158; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :sender:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7lJzsgXbqMMy+MnY6Qg2ZsgnV5BijhYJMpARCo4d0NQ=; b=s9hmWwhRwtbZqksRXQShS9YUcHmbMExxZhiNpdv5tGOUuvix88wpQqRuf8C82TCyl1 UuQdntxLkvkQ2f2IukXbC/ce+/FpS9czf9on7SLtpG0P3LH6wTmhm6ccfqNvxlVusoyI Dp56kngF7L7FIALsJ+LMZx+cX+b70g3OzAxwWTEG9kBEWnJnIasSxZxcLvLNWqyh1a5e BGFVdw6lQSukvmbQkjoqNcKvzsyhcX1Q+Y7nv+QJYxxFU6i1G9kKexSmAaY7Kq0YzPLc +bP3e4bxRtq8sxrD+UlklHSAdyuSjLM16FhSa63HexVxtFcTDLKOo38I0YkqlIIkune1 EaHg== X-Gm-Message-State: AOJu0YwRziNnOPa6u52O5aJIYn9c1t/yo9MdX0B7NDCcErwUz5T8d+0o 4gsZk5MYSEwc6cS0zCby5jv71Z/W9Jk= X-Google-Smtp-Source: AGHT+IF8L7FCKuGp8jmSJBw8C42QuxJijiGTqvI5sf9+eol73GvnhkXfmGtalrZvS9OlMMRWrmUnSw== X-Received: by 2002:a05:622a:114:b0:429:7c0e:73e9 with SMTP id u20-20020a05622a011400b004297c0e73e9mr2641351qtw.65.1704580358147; Sat, 06 Jan 2024 14:32:38 -0800 (PST) Received: from ?IPV6:2600:4040:5b0e:b500:15a3:ac43:deab:f0a7? ([2600:4040:5b0e:b500:15a3:ac43:deab:f0a7]) by smtp.googlemail.com with ESMTPSA id cb14-20020a05622a1f8e00b0042837900d7bsm2013863qtb.11.2024.01.06.14.32.37 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 06 Jan 2024 14:32:37 -0800 (PST) Sender: Nathan Sidwell Message-ID: <26aa9f6b-a015-4e6f-aa73-6912cbca50f6@acm.org> Date: Sat, 6 Jan 2024 17:32:37 -0500 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH] c++/modules: Prevent overwriting arguments for duplicates [PR112588] Content-Language: en-US To: Nathaniel Shead , gcc-patches@gcc.gnu.org Cc: Jason Merrill References: <655de700.170a0220.bbd9.fe31@mx.google.com> From: Nathan Sidwell In-Reply-To: <655de700.170a0220.bbd9.fe31@mx.google.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3037.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_EF,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM,GIT_PATCH_0,HEADER_FROM_DIFFERENT_DOMAINS,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,URIBL_BLACK autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: I;m not sure about this, there was clearly a reason I did it the way it is, but perhaps that reasoning became obsolete -- something about an existing declaration and reading in a definition maybe? nathan On 11/22/23 06:33, Nathaniel Shead wrote: > Bootstrapped and regtested on x86_64-pc-linux-gnu. I don't have write > access. > > -- >8 -- > > When merging duplicate instantiations of function templates, currently > read_function_def overwrites the arguments with that of the existing > duplicate. This is problematic, however, since this means that the > PARM_DECLs in the body of the function definition no longer match with > the PARM_DECLs in the argument list, which causes issues when it comes > to generating RTL. > > There doesn't seem to be any reason to do this replacement, so this > patch removes that logic. > > PR c++/112588 > > gcc/cp/ChangeLog: > > * module.cc (trees_in::read_function_def): Don't overwrite > arguments. > > gcc/testsuite/ChangeLog: > > * g++.dg/modules/merge-16.h: New test. > * g++.dg/modules/merge-16_a.C: New test. > * g++.dg/modules/merge-16_b.C: New test. > > Signed-off-by: Nathaniel Shead > --- > gcc/cp/module.cc | 2 -- > gcc/testsuite/g++.dg/modules/merge-16.h | 10 ++++++++++ > gcc/testsuite/g++.dg/modules/merge-16_a.C | 7 +++++++ > gcc/testsuite/g++.dg/modules/merge-16_b.C | 5 +++++ > 4 files changed, 22 insertions(+), 2 deletions(-) > create mode 100644 gcc/testsuite/g++.dg/modules/merge-16.h > create mode 100644 gcc/testsuite/g++.dg/modules/merge-16_a.C > create mode 100644 gcc/testsuite/g++.dg/modules/merge-16_b.C > > diff --git a/gcc/cp/module.cc b/gcc/cp/module.cc > index 4f5b6e2747a..2520ab659cc 100644 > --- a/gcc/cp/module.cc > +++ b/gcc/cp/module.cc > @@ -11665,8 +11665,6 @@ trees_in::read_function_def (tree decl, tree maybe_template) > DECL_RESULT (decl) = result; > DECL_INITIAL (decl) = initial; > DECL_SAVED_TREE (decl) = saved; > - if (maybe_dup) > - DECL_ARGUMENTS (decl) = DECL_ARGUMENTS (maybe_dup); > > if (context) > SET_DECL_FRIEND_CONTEXT (decl, context); > diff --git a/gcc/testsuite/g++.dg/modules/merge-16.h b/gcc/testsuite/g++.dg/modules/merge-16.h > new file mode 100644 > index 00000000000..fdb38551103 > --- /dev/null > +++ b/gcc/testsuite/g++.dg/modules/merge-16.h > @@ -0,0 +1,10 @@ > +// PR c++/112588 > + > +void f(int*); > + > +template > +struct S { > + void g(int n) { f(&n); } > +}; > + > +template struct S; > diff --git a/gcc/testsuite/g++.dg/modules/merge-16_a.C b/gcc/testsuite/g++.dg/modules/merge-16_a.C > new file mode 100644 > index 00000000000..c243224c875 > --- /dev/null > +++ b/gcc/testsuite/g++.dg/modules/merge-16_a.C > @@ -0,0 +1,7 @@ > +// PR c++/112588 > +// { dg-additional-options "-fmodules-ts" } > +// { dg-module-cmi merge16 } > + > +module; > +#include "merge-16.h" > +export module merge16; > diff --git a/gcc/testsuite/g++.dg/modules/merge-16_b.C b/gcc/testsuite/g++.dg/modules/merge-16_b.C > new file mode 100644 > index 00000000000..8c7b1f0511f > --- /dev/null > +++ b/gcc/testsuite/g++.dg/modules/merge-16_b.C > @@ -0,0 +1,5 @@ > +// PR c++/112588 > +// { dg-additional-options "-fmodules-ts" } > + > +#include "merge-16.h" > +import merge16; -- Nathan Sidwell