From patchwork Fri May 13 14:19:53 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Nathan Sidwell X-Patchwork-Id: 53949 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 47A01396E42D for ; Fri, 13 May 2022 14:20:50 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-qk1-x72f.google.com (mail-qk1-x72f.google.com [IPv6:2607:f8b0:4864:20::72f]) by sourceware.org (Postfix) with ESMTPS id 57EAE396E058 for ; Fri, 13 May 2022 14:19:56 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 57EAE396E058 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=acm.org Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-qk1-x72f.google.com with SMTP id c1so7110554qkf.13 for ; Fri, 13 May 2022 07:19:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=sender:message-id:date:mime-version:user-agent:content-language:to :from:subject; bh=WObF6IneE7yqwVtmuaOINJBuU1YzJujw6C1nH0JuYDE=; b=nq8tSWjonKlKOR2ezNClpWNS/aHtdjY0woFlYgFq+yLKpRNPZer1lVNu6iEYT7yEw7 3cRLFlFLLhOr+DUwVC6ucNFnulqSXIGHM6brTAFoWtvl7Qy2PkeO3uEPgU1JIFN4K4qE 2T7jIGQK2dUwaXIDAz6642/tl+cSXP8ljvY6C9lTotrsSOWBCCSE7+VwkSQ4lwWCjWkZ Kkr/nfw7qRyKGfCNZmvtdGzd4VIjy0w3g5PsNOo9dnawv52wWEWxuLE0X7Gl0XF7eQNR Pua3yRlx6VUOlMqCbfd/X/liTyOYM/gnEudfLz/wGMvbGb/MRUGMzmPpGt3ylc1yFvM+ 8jjA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:sender:message-id:date:mime-version:user-agent :content-language:to:from:subject; bh=WObF6IneE7yqwVtmuaOINJBuU1YzJujw6C1nH0JuYDE=; b=EfQY0OaeAu/5/EgPJGhDBEN+UvCfobwyprnFcl73qclrbeFh0YCx5vQ//7p6EX2o4Q bGs5knZo6ilKIs5nBQRa/w68JdbyZqaplJ+DMiK1MR5QvsPgxa8NqGmH9bCek6IQHeCK dXda4l/OrFd5rgOanHn/YLW2SbWkiFb0O9QkcFKzNNPqFp4qrIuPtbsZX33W8wI739Yp ouLgJwJI10tam6y/H9mBgaDhvp7u5vQ2M7IIW1FseTZgnnQ8dATvWdrVxSMVSS2daSGd bGRWfpFQgD5yD9MlaoUnNbrSk3XHHBPhO4JN6gNDtR9b1d8kbcJ6AkNS0sDd7EnU9/wa nEiQ== X-Gm-Message-State: AOAM531Um/IBv8fu8hDbg/0NBtcTvxPU8eb4yx/z/CThPLGpwBgGARdT 7ZFhIQLqHRRInqDRQRhZZEXfTBXW+KM= X-Google-Smtp-Source: ABdhPJyxUweAT8JsrTG42QYu/zJIB7tb24iXpPYccorjJzMu9gJHbxztQlS3fgqwJs9tHGU43BpAfA== X-Received: by 2002:a37:658f:0:b0:69f:d94e:46c4 with SMTP id z137-20020a37658f000000b0069fd94e46c4mr3723184qkb.52.1652451595427; Fri, 13 May 2022 07:19:55 -0700 (PDT) Received: from ?IPV6:2620:10d:c0a3:1407:75db:152f:a87e:3bb? ([2620:10d:c091:500::2:9a3c]) by smtp.googlemail.com with ESMTPSA id y5-20020ac87085000000b002f3d7c13a24sm1567766qto.4.2022.05.13.07.19.54 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 13 May 2022 07:19:54 -0700 (PDT) Message-ID: <924a0c71-774a-d39a-831d-bba27f85fdab@acm.org> Date: Fri, 13 May 2022 10:19:53 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.2.0 Content-Language: en-US To: GCC Patches From: Nathan Sidwell Subject: c++: Local symbols do not get module manglings X-Spam-Status: No, score=-3038.9 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 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: , Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" Internal-linkage entity mangling is entirely implementation defined -- there's no ABI issue. Let's not mangle in any module attachment to them, it makes the symbols unnecessarily longer. nathan From 8dc7e0287223bfe48f16cfc10ee87cd5ff05f277 Mon Sep 17 00:00:00 2001 From: Nathan Sidwell Date: Wed, 6 Apr 2022 06:37:12 -0700 Subject: [PATCH] c++: Local symbols do not get module manglings Internal-linkage entity mangling is entirely implementation defined -- there's no ABI issue. Let's not mangle in any module attachment to them, it makes the symbols unnecessarily longer. gcc/cp/ * mangle.cc (maybe_write_module): Check external linkage. gcc/testsuite/ * g++.dg/modules/mod-sym-4.C: New. --- gcc/cp/mangle.cc | 5 ++- gcc/testsuite/g++.dg/modules/mod-sym-4.C | 48 ++++++++++++++++++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/modules/mod-sym-4.C diff --git a/gcc/cp/mangle.cc b/gcc/cp/mangle.cc index eb53e0ebeb4..75388e99bfd 100644 --- a/gcc/cp/mangle.cc +++ b/gcc/cp/mangle.cc @@ -916,7 +916,10 @@ maybe_write_module (tree decl) if (!DECL_NAMESPACE_SCOPE_P (decl)) return; - if (TREE_CODE (decl) == NAMESPACE_DECL && DECL_NAME (decl)) + if (!TREE_PUBLIC (STRIP_TEMPLATE (decl))) + return; + + if (TREE_CODE (decl) == NAMESPACE_DECL) return; int m = get_originating_module (decl, true); diff --git a/gcc/testsuite/g++.dg/modules/mod-sym-4.C b/gcc/testsuite/g++.dg/modules/mod-sym-4.C new file mode 100644 index 00000000000..fbf54d00171 --- /dev/null +++ b/gcc/testsuite/g++.dg/modules/mod-sym-4.C @@ -0,0 +1,48 @@ +// { dg-additional-options -fmodules-ts } + +// internal linkage symbol mangling is unspecified, but let's try and +// be unchanged from non-module internal mangling. + +export module A; +// { dg-module-cmi A } + +// { dg-final { scan-assembler {_ZL6addonev:} } } +static void addone () {} +// { dg-final { scan-assembler {_ZL1x:} } } +static int x = 5; + +namespace { +// { dg-final { scan-assembler {_ZN12_GLOBAL__N_14frobEv:} } } +void frob () {} +// { dg-final { scan-assembler {_ZN12_GLOBAL__N_11yE:} } } +int y = 2; +struct Bill +{ + void F (); +}; +// { dg-final { scan-assembler {_ZN12_GLOBAL__N_14Bill1FEv:} } } +void Bill::F() {} +} + +// { dg-final { scan-assembler {_ZL4FrobPN12_GLOBAL__N_14BillE:} } } +static void Frob (Bill *b) +{ + if (b) b->F(); +} + +namespace N { +// { dg-final { scan-assembler {_ZN1NL5innerEv:} } } +static void inner() {} +// { dg-final { scan-assembler {_ZN1NL1zE:} } } +static int z = 3; +} + +// { dg-final { scan-assembler {_ZW1A6addsixv:} } } +void addsix () +{ + Frob(nullptr); + frob(); + addone(); + void(x + y + N::z); + N::inner(); +} -- 2.30.2