From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-oo1-xc35.google.com (mail-oo1-xc35.google.com [IPv6:2607:f8b0:4864:20::c35]) by sourceware.org (Postfix) with ESMTPS id 18D473858D28 for ; Sat, 16 Dec 2023 10:50:16 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 18D473858D28 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 18D473858D28 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::c35 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702723817; cv=none; b=ocHMEUzKQh0Sl34fPcxHrJkE05VrbnnFhm7f68f8Ppm1RKzRWz/9TM07S8tIspnBh0oo+Hw3viwaP/GrPh0Av8ukPL3DiuZ6R3tPC/gSmnPfqSZ0mWkuqvE9GVP6XnH9OdQANZ+ZroXt2P6HcIlNVRsu6ig2/g1x80eo64ieWEQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1702723817; c=relaxed/simple; bh=QqYZzZDebUPnLrntqsmsT3X0FByDjcix7uDT2zjzthE=; h=DKIM-Signature:Message-ID:Date:From:To:Subject:MIME-Version; b=eCXl/4xppoZw5AnhMEMSNI5elyc8OPFO1mf5ulie20jCJQx024fpWU4Qib2PIdqbrbbVeYXrVUtun5MiFQBjaBNSLazG46iJn+MKKgMJSDeGRezF0spPA/AabcphwxSYhzBQ6aCyYRHffNr/r9GZhvhYzGuPfWNdbUZUBr/9kxc= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-oo1-xc35.google.com with SMTP id 006d021491bc7-59067f03282so1073048eaf.0 for ; Sat, 16 Dec 2023 02:50:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1702723815; x=1703328615; darn=gcc.gnu.org; h=in-reply-to:content-disposition:mime-version:references:subject:cc :to:from:date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=anpMDIlK2xPbrH+w/Ou6LimQDIndRUG/9TefhMTBOuE=; b=XInoTfmgbKdcekp2hBYc/Xk5GJRTGRI8dCYTNz+yXdv7OJwYStWrVGNjnSrt+Ff4rT Efkx8m5Mo20yH3Ye9gLbdr9mVmYQ0MfqXOJKKLbCOJicLaUPoqJMYM5A4cddn1XtE8tK t4nXrjSzUDL63fqaaVCjuG6KLVdhp+V/lP+kgOw7rPZ2bQBVg/eJM9gGvSSfmXN+qCc0 S25MNmznNj5ErUzEPd2kSjJccyW1jgSCTyylbponIU6v5+2smXAJChAaIiD6ggH9V2Eo wGIuZ4fsg4WO6LgzYPtwooFCU9+DOFbIc79NyaJf2HpwBQiqCJyQ+D6KOUuwbnsdseI9 G8mQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1702723815; x=1703328615; h=in-reply-to:content-disposition:mime-version:references:subject:cc :to:from:date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=anpMDIlK2xPbrH+w/Ou6LimQDIndRUG/9TefhMTBOuE=; b=EU6zasL8Pibz6/JXhYvlpjQrP6RF6TmpikeS+5fYHUWvRTZ4i2jQzcAJxruKPgyaiA A1OgEcAZbOwjiR/XDg07n2PA3QI1v6HAIpxqPErPlmHtUkLmk3D8ZhWF1UFFOlhpXTZh NUG8NEcoNhUOKzGNXW8etDMCsd5ubsYTC6JwFpsRSPSxm0i8WVYSWHbjfEDWYyQMQOUe absd0tDIyOPDDIBeBoA10fG5ORHLf+6YX5OI4CeE1ueuyp/gT1nQoq4sdgcah3MQPavR u5l2uxzVcpKy852NrUQb6yIB9ZoRjDBX0Dj83SgECeux2a7Ngv51fqaCdwOwSMj0b0gO Vx1Q== X-Gm-Message-State: AOJu0Yx8TZa6b56jKH5Px5Pb2M8oZQ1JR9grlTpqPkC7X2lsB9NPdbeF FO4+AkhI8qHAm/O7VeUmYvoQIGeYIcg= X-Google-Smtp-Source: AGHT+IFdOrix4n5orLk4HrSfqv0H7GMQzVsYWWy5MaKAk62y77ZZDTIq/mjDCjKBEHRnioKsG7/3tA== X-Received: by 2002:a05:6358:9497:b0:170:cb4d:7fc0 with SMTP id i23-20020a056358949700b00170cb4d7fc0mr14930560rwb.43.1702723814890; Sat, 16 Dec 2023 02:50:14 -0800 (PST) Received: from Thaum. ([203.166.236.30]) by smtp.gmail.com with ESMTPSA id c16-20020a170903235000b001d337b8c0b2sm8486636plh.7.2023.12.16.02.50.13 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 16 Dec 2023 02:50:14 -0800 (PST) Message-ID: <657d80e6.170a0220.8f619.b47f@mx.google.com> X-Google-Original-Message-ID: Date: Sat, 16 Dec 2023 21:50:10 +1100 From: Nathaniel Shead To: gcc-patches@gcc.gnu.org Cc: Jason Merrill , Nathan Sidwell Subject: [PATCH] c++/modules: Prevent overwriting arguments when merging duplicates [PR112588] References: <655de700.170a0220.bbd9.fe31@mx.google.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <655de700.170a0220.bbd9.fe31@mx.google.com> X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,KAM_SHORT,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: Ping for https://gcc.gnu.org/pipermail/gcc-patches/2023-November/637768.html. (I've changed the summary message a little from that email but the patch is otherwise unchanged.) On Wed, Nov 22, 2023 at 10:33:15PM +1100, 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; > -- > 2.42.0 >