From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 20956 invoked by alias); 20 May 2015 21:45:25 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 20947 invoked by uid 89); 20 May 2015 21:45:25 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=0.2 required=5.0 tests=AWL,BAYES_50,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 20 May 2015 21:45:24 +0000 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id t4KLjNcc023573 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 20 May 2015 17:45:23 -0400 Received: from reynosa.quesejoda.com (vpn-59-26.rdu2.redhat.com [10.10.59.26]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t4KLjLwj018092; Wed, 20 May 2015 17:45:22 -0400 Message-ID: <555D0071.9000607@redhat.com> Date: Wed, 20 May 2015 22:11:00 -0000 From: Aldy Hernandez User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.6.0 MIME-Version: 1.0 To: Jan Hubicka CC: Richard Biener , Jason Merrill , gcc-patches Subject: Re: [patch 10/10] debug-early merge: compiler proper References: <554C060F.6000609@redhat.com> <555CAD35.5040304@redhat.com> <555CF12C.7080300@redhat.com> <20150520210149.GA22803@kam.mff.cuni.cz> In-Reply-To: <20150520210149.GA22803@kam.mff.cuni.cz> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit X-SW-Source: 2015-05/txt/msg01889.txt.bz2 On 05/20/2015 05:01 PM, Jan Hubicka wrote: >> >> commit 8824b5ecba26cef065e47b34609c72677c3c36fc >> Author: Aldy Hernandez >> Date: Wed May 20 16:31:14 2015 -0400 >> >> Set DECL_IGNORED_P on temporary arrays created in the switch >> conversion pass. >> >> diff --git a/gcc/tree-switch-conversion.c b/gcc/tree-switch-conversion.c >> index 6b68a16..a4bcdba 100644 >> --- a/gcc/tree-switch-conversion.c >> +++ b/gcc/tree-switch-conversion.c >> @@ -1097,6 +1097,7 @@ build_one_array (gswitch *swtch, int num, tree >> arr_index_type, >> DECL_ARTIFICIAL (decl) = 1; >> TREE_CONSTANT (decl) = 1; >> TREE_READONLY (decl) = 1; >> + DECL_IGNORED_P (decl) = 1; >> varpool_node::finalize_decl (decl); > > This looks obvious enough to me. Technically speaking the array type constructed > probalby should be TREE_ARTIFICAIL, but probably it does not matter. Yeah, that's what I thought. I ignored the type because it won't make it to the debugging back end if we stop things at the DECL itself. FWIW, Ada is filled with these temporaries and/or types that should really be ignored, and are currently causing grief. > If you grep for finalize_decl, there are several other calls: > asan.c: varpool_node::finalize_decl (var); > asan.c: varpool_node::finalize_decl (var); > cgraphbuild.c: varpool_node::finalize_decl (decl); > cgraphunit.c: - varpool_finalize_decl > cgraphunit.c: varpool_node::finalize_decl (decl); > cgraphunit.c:varpool_node::finalize_decl (tree decl) > coverage.c: varpool_node::finalize_decl (var); > coverage.c: varpool_node::finalize_decl (var); Etc etc. Hmmm, I bet mainline is generating dwarf for all this. I don't feel comfortable touching all this (ok, I'm lazy), but it would seem like almost all of these calls would benefit from DECL_IGNORED_P. Perhaps we could add an argument to finalize_decl() and do it in there. Aldy > coverage.c: varpool_node::finalize_decl (fn_info_ary); > coverage.c: varpool_node::finalize_decl (gcov_info_var); > omp-low.c: varpool_node::finalize_decl (t); > omp-low.c: varpool_node::finalize_decl (t); > omp-low.c: varpool_node::finalize_decl (decl); > omp-low.c: varpool_node::finalize_decl (vars_decl); > omp-low.c: varpool_node::finalize_decl (funcs_decl); > passes.c: varpool_node::finalize_decl (decl); > tree-chkp.c: varpool_node::finalize_decl (var); > tree-chkp.c: varpool_node::finalize_decl (bnd_var); > tree-profile.c: varpool_node::finalize_decl (ic_void_ptr_var); > tree-profile.c: varpool_node::finalize_decl (ic_gcov_type_ptr_var); > tree-switch-conversion.c: varpool_node::finalize_decl (decl); > ubsan.c: varpool_node::finalize_decl (decl); > ubsan.c: varpool_node::finalize_decl (var); > ubsan.c: varpool_node::finalize_decl (array); > varasm.c: varpool_node::finalize_decl (decl); > varpool.c: Unlike finalize_decl function is intended to be used > varpool.c: varpool_node::finalize_decl (decl); > > I would say most of them needs similar treatment (I am not 100% sure about OMP > ones that may be user visible) > > Honza >> >> fetch = build4 (ARRAY_REF, value_type, decl, tidx, NULL_TREE,