On Thu, Feb 17, 2022 at 1:23 PM Thomas Schwinge <tho...@codesourcery.com> wrote: > > Hi! > > On 2022-02-11T08:02:20+0100, Richard Biener <richard.guent...@gmail.com> > wrote: > > On Thu, Feb 10, 2022 at 11:20 PM Thomas Schwinge > > <tho...@codesourcery.com> wrote: > >> On 2022-02-10T16:36:51+0000, Michael Matz via Gcc-patches > >> <gcc-patches@gcc.gnu.org> wrote: > >> > On Thu, 10 Feb 2022, Richard Biener via Gcc-patches wrote: > >> >> On Wed, Feb 9, 2022 at 2:21 PM Thomas Schwinge > >> >> <tho...@codesourcery.com> wrote: > >> >> > OK to push (now, or in next development stage 1?) the attached > >> >> > "Consider 'TDF_UID', 'TDF_NOUID' in 'print_node_brief', 'print_node'", > >> >> > or should that be done differently -- or, per the current state (why?) > >> >> > not at all? > >> > >> First, thanks for (indirectly) having confirmed that my confusion is not > >> completely off, why this is currently missing. ;-) > >> > >> >> Hmm, I wonder if we shouldn't simply dump DECL_UID as > >> >> > >> >> 'uid NNN' > >> > > >> > Yes, much better in line with the normal dump_tree output. > >> > >> >> somewhere. For example after or before DECL_NAME? > >> > >> Heh -- that's what I wanted to do initially, but then I saw that we've > >> currently got in 'print_node_brief' (and very similar in 'print_node'): > >> > >> [...] > >> fprintf (file, "%s <%s", prefix, get_tree_code_name (TREE_CODE > >> (node))); > >> dump_addr (file, " ", node); > >> > >> if (tclass == tcc_declaration) > >> { > >> if (DECL_NAME (node)) > >> fprintf (file, " %s", IDENTIFIER_POINTER (DECL_NAME (node))); > >> else if (TREE_CODE (node) == LABEL_DECL > >> && LABEL_DECL_UID (node) != -1) > >> { > >> if (dump_flags & TDF_NOUID) > >> fprintf (file, " L.xxxx"); > >> else > >> fprintf (file, " L.%d", (int) LABEL_DECL_UID (node)); > >> } > >> else > >> { > >> if (dump_flags & TDF_NOUID) > >> fprintf (file, " %c.xxxx", > >> TREE_CODE (node) == CONST_DECL ? 'C' : 'D'); > >> else > >> fprintf (file, " %c.%u", > >> TREE_CODE (node) == CONST_DECL ? 'C' : 'D', > >> DECL_UID (node)); > >> } > >> } > >> [...] > >> > >> That is, if there's no 'DECL_NAME', we print 'L.[UID]', 'C.[UID]', > >> 'D.[UID]'. The same we do in 'gcc/tree-pretty-print.cc:dump_decl_name', > >> I found. But in the latter function, we also do it that same way if > >> there is a 'DECL_NAME' ('i' -> 'iD.4249', for example), so that's why I > >> copied that style back to my proposed 'print_node_brief'/'print_node' > >> change. > >> > >> Are you now suggesting to only print 'DECL_NAME' as '[NAME] uid [UID]', > >> but keep 'L.[UID]', 'C.[UID]', 'D.[UID]' in the "dot" form, or change > >> these to 'L uid [UID]', 'C uid [UID]', 'D uid [UID]' correspondingly? > > > > I'd say these should then be 'D.[UID] uid [UID]' even if that's > > somewhat redundant. > > Sure, that's fine for me. So, like in the attached > "Consider 'TDF_UID', 'TDF_NOUID' in 'print_node_brief', 'print_node'"; > OK to push? (... which evidently I forgot to send last week...)
'TDF_UID', 'TDF_NOUID' (now appends 'uid xxxx'): <var_decl 0x7ffff76bc120 iftmp.1 uid xxxx> <function_decl 0x7ffff7692400 main uid xxxx> <label_decl 0x7ffff76b9000 labl uid xxxx> <label_decl 0x7ffff76b7d00 L.xxxx uid xxxx> <label_decl 0x7ffff76b9100 D.xxxx uid xxxx> just not append 'uid ...' for NOUID, it doesn't add any useful information here. So diff --git a/gcc/print-tree.cc b/gcc/print-tree.cc index 0876da873a9..38dd032fbf7 100644 --- a/gcc/print-tree.cc +++ b/gcc/print-tree.cc @@ -158,6 +158,14 @@ print_node_brief (FILE *file, const char *prefix, const_tree node, int indent) TREE_CODE (node) == CONST_DECL ? 'C' : 'D', DECL_UID (node)); } + + if (dump_flags & TDF_UID) + { + if (dump_flags & TDF_NOUID) + fprintf (file, " uid xxxx"); + else + fprintf (file, " uid %d", DECL_UID (node)); + } just if (dump_flags & TDF_UID) fprintf (file, " uid %d", DECL_UID (node)); Asking for both at the same time is odd and I'd really not expect that. It should be a tri-state, UID (everywhere), default (in some places), NOUID (nowhere). + if (dump_flags & TDF_UID) + { + if (dump_flags & TDF_NOUID) + fprintf (file, " uid xxxx"); + else + fprintf (file, " uid %d", DECL_UID (node)); + } same here. But for print_node I think we should default to printing the UID. So if would be if (!(dump_flags & TDF_NOUID)) fprintf (file, " uid %d", DECL_UID (node)); note that UIDs can be negative, but decl_minimal.uid is unsigned but you are using a signed format. See DEBUG_TEMP_UID in tree.h. I don't have a well thought out opinion on how to present the uid here for debug temps, signed works for me but then I think you should have (int) DECL_UID (node) for the prints? Thanks, Richard. > > Grüße > Thomas > > > >> And also do the similar changes in > >> 'gcc/tree-pretty-print.cc:dump_decl_name' (as well as another dozen or so > >> places where such things are printed...), or don't change those? > > > > Don't change those - you were targeting the tree dumper, not the > > pretty printers. > > The tree dumpers generally dump attributes separately. > > > > > >> > >> I don't care very much which way, just have some slight preference to > >> keep things similar. > >> > >> > >> Grüße > >> Thomas > > > ----------------- > Siemens Electronic Design Automation GmbH; Anschrift: Arnulfstraße 201, 80634 > München; Gesellschaft mit beschränkter Haftung; Geschäftsführer: Thomas > Heurung, Frank Thürauf; Sitz der Gesellschaft: München; Registergericht > München, HRB 106955