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 5C1173858C56 for ; Thu, 13 Oct 2022 14:46:44 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 5C1173858C56 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1665672404; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=3nbl93Dswi9cpcur6kT4c1s0ufaBNtrQ9ClsHcbiD4s=; b=WMQSUmU6GMxyPPdPUCeaSv154x7wsCS1k3mRvqvdCSYh674X5FTzt+Wf+09Q2XdNlOlcDF gU4d7o9pgjaug/YYBDNyWGNmu/V3biPsoNew1ltBJxWBFFlJsNOQz/HFtPAnYYemsczVVd vHijaTi9vPXIauT1gCsz5pEpJEpKeWA= 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.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-91-dtaiS_Y3MZqHHWbiAJm01A-1; Thu, 13 Oct 2022 10:46:43 -0400 X-MC-Unique: dtaiS_Y3MZqHHWbiAJm01A-1 Received: by mail-qv1-f72.google.com with SMTP id lu3-20020a0562145a0300b004b1d6f4130eso1491213qvb.1 for ; Thu, 13 Oct 2022 07:46:43 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=3nbl93Dswi9cpcur6kT4c1s0ufaBNtrQ9ClsHcbiD4s=; b=2AnzUHu46nnoxeUOYRSoZyDyjCNac8s7/eaeVJ1McH2ktNqIuZptK5moIMMel/SQAJ cho7E+UQBqAEAAbRBCsVNTrrJcNqjtGo7IbCCdN/b/DPQu6HnOSb5NROgr+PnMemN/bU 6g82Bt5AEGPlcHTngrFv2yGXM4fNESWzWwx0pINfAja8h16ynZRoaW6wm2cSt5RXNoqZ gbvcmEW5HljKC6gvqT0OKd39j73M/51bcPPNAT5qAcmjQN/gSvUdeOV1ss8WIseypR86 mdZ2yEL6mI25SWPPn/motf0BFmNsbMQF6xf6qVnuoDhym5tXDLHHmdGK1sfx25DtJgVX F64A== X-Gm-Message-State: ACrzQf0Eig7hO+TKzxdf+seZgB3YT7wm5Taa4Tquoipm5y1myRDPRa21 +blbdvJ6cKmsJE8LZrWuQif0VfCTPyq3JFfMSwEQB1PKSYpqV8/5Os6aBv0y/k9yPzGyJPK4+Gy 7azMvHp1/53mWFDN0IA== X-Received: by 2002:a05:6214:21e6:b0:4af:a811:6c69 with SMTP id p6-20020a05621421e600b004afa8116c69mr26460qvj.40.1665672402259; Thu, 13 Oct 2022 07:46:42 -0700 (PDT) X-Google-Smtp-Source: AMsMyM6UjuHJjXQXTRdKxWqSnO9+/7PD29w+qi3TawqWN/RjeftkGioyH1wpI+AeeyoZK6M/dAbHAg== X-Received: by 2002:a05:6214:21e6:b0:4af:a811:6c69 with SMTP id p6-20020a05621421e600b004afa8116c69mr26447qvj.40.1665672401946; Thu, 13 Oct 2022 07:46:41 -0700 (PDT) Received: from [192.168.1.101] (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 k6-20020ac80746000000b0035badb499c7sm72597qth.21.2022.10.13.07.46.41 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Thu, 13 Oct 2022 07:46:41 -0700 (PDT) Message-ID: <902f2778-ac8d-7b8a-0aeb-eb609b90729a@redhat.com> Date: Thu, 13 Oct 2022 10:46:40 -0400 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.2 Subject: Re: [PATCH] use proper DECL_INITIAL for VTV To: =?UTF-8?Q?Martin_Li=c5=a1ka?= , gcc-patches@gcc.gnu.org Cc: Richard Biener References: <79ffd1f4-684e-dead-9d77-f1567acbc1d8@suse.cz> From: Jason Merrill In-Reply-To: <79ffd1f4-684e-dead-9d77-f1567acbc1d8@suse.cz> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-13.3 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,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 List-Id: On 10/13/22 10:25, Martin Liška wrote: > Hi. > > I am working on the early debug info emission that would benefit from a late > use of asm_put_file. This is last blocker where C++ emits early a section directive > in assemble_vtv_preinit_initializer. We can use a proper DECL_INITIAL for that. > > Patch can bootstrap on x86_64-linux-gnu and survives regression tests. > with --enable-vtable-verify. > > Ready to be installed? OK. > gcc/cp/ChangeLog: > > * vtable-class-hierarchy.cc (vtv_generate_init_routine): Emit > an artificial variable that would be put into .preinit_array > section. > > gcc/ChangeLog: > > * output.h (assemble_vtv_preinit_initializer): Remove. > * varasm.cc (assemble_vtv_preinit_initializer): Remove. > --- > gcc/cp/vtable-class-hierarchy.cc | 14 ++++++++++++-- > gcc/output.h | 4 ---- > gcc/varasm.cc | 17 ----------------- > 3 files changed, 12 insertions(+), 23 deletions(-) > > diff --git a/gcc/cp/vtable-class-hierarchy.cc b/gcc/cp/vtable-class-hierarchy.cc > index 79cb5f8de02..cc1df1ebdb2 100644 > --- a/gcc/cp/vtable-class-hierarchy.cc > +++ b/gcc/cp/vtable-class-hierarchy.cc > @@ -1192,8 +1192,18 @@ vtv_generate_init_routine (void) > cgraph_node::add_new_function (vtv_fndecl, false); > > if (flag_vtable_verify == VTV_PREINIT_PRIORITY && !TARGET_PECOFF) > - assemble_vtv_preinit_initializer (vtv_fndecl); > - > + { > + tree vtv_var > + = build_decl (BUILTINS_LOCATION, VAR_DECL, > + get_identifier ("__vtv_preinit"), > + build_pointer_type (TREE_TYPE (vtv_fndecl))); > + TREE_STATIC (vtv_var) = 1; > + DECL_ARTIFICIAL (vtv_var) = 1; > + DECL_INITIAL (vtv_var) = build_fold_addr_expr (vtv_fndecl); > + set_decl_section_name (vtv_var, ".preinit_array"); > + > + varpool_node::add (vtv_var); > + } > } > pop_lang_context (); > } > diff --git a/gcc/output.h b/gcc/output.h > index 6dea630913a..6936bdeeb6c 100644 > --- a/gcc/output.h > +++ b/gcc/output.h > @@ -199,10 +199,6 @@ extern void assemble_end_function (tree, const char *); > initial value (that will be done by the caller). */ > extern void assemble_variable (tree, int, int, int); > > -/* Put the vtable verification constructor initialization function > - into the preinit array. */ > -extern void assemble_vtv_preinit_initializer (tree); > - > /* Assemble everything that is needed for a variable declaration that has > no definition in the current translation unit. */ > extern void assemble_undefined_decl (tree); > diff --git a/gcc/varasm.cc b/gcc/varasm.cc > index 423f3f91af8..a11184584a2 100644 > --- a/gcc/varasm.cc > +++ b/gcc/varasm.cc > @@ -2419,23 +2419,6 @@ assemble_variable (tree decl, int top_level ATTRIBUTE_UNUSED, > } > } > > - > -/* Given a function declaration (FN_DECL), this function assembles the > - function into the .preinit_array section. */ > - > -void > -assemble_vtv_preinit_initializer (tree fn_decl) > -{ > - section *sect; > - unsigned flags = SECTION_WRITE; > - rtx symbol = XEXP (DECL_RTL (fn_decl), 0); > - > - flags |= SECTION_NOTYPE; > - sect = get_section (".preinit_array", flags, fn_decl); > - switch_to_section (sect); > - assemble_addr_to_section (symbol, sect); > -} > - > /* Return 1 if type TYPE contains any pointers. */ > > static int