> On 4/16/07, Jan Hubicka <[EMAIL PROTECTED]> wrote:
> >Hi,
> >> Hello all,
> >>
> >> I'm doing in my IPA pass:
> >> for(node = cgraph_nodes; node; node = node->next) {
> >>    reg_cgraph_node(IDENTIFIER_POINTER(DECL_ASSEMBLER_NAME(node->decl)));
> >> }
> >>
> >> to get all the function names in the cgraph. I'm adding them to a list
> >> and I'm assuming that two nodes do not have the same
> >> DECL_ASSEMBLER_NAME but I'm wrong. In a C++ file I'm getting two
> >> functions with name _ZN4listIiE6appendEPS0_, DECL_NAME = append.
> >> Why is this? The code is at
> >> http://pastebin.ca/442691
> >
> >Callgraph is currently trying to avoid use of DECL_ASSEMBLER_NAME, the
> >motivation is that for C++, the DECL_ASSEMBLER_NAMEs are very long and
> >expensive and thus it is not good idea to compute them for symbols not
> >output to final assembly (DECL_ASSEMBLER_NAME triggers lazy construction
> >of the names).  So if you don't have good reason for using the names,
> >you should not do it.
> 
> My only reason to use DECL_ASSEMBLER_NAME is, when I'm transversing
> cgraph_nodes, to have an ID for the nodes I've already 'analyzed'.

Why you don't use something like cgraph->uid?
> 
> >
> >Cgraph rely on frontend that there are no duplicate FUNCTION_DECLs
> >representing the same function (with same assembler node), that seems to
> >be broken in your testcase.  Would be possible to have a small tewstcase
> >reproducing the problem?
> >
> 
> Sure, however, I'm developing over 4.1.1, still you might still have
> the error on current head, (I know 4.1.1 is quite old). What do you
> mean by a test case? Do you want a short version of my IPA pass which
> shows up the issue?
Either that or of you can just minimize the testcase (perhaps with
delta) so it can be inspected by hand, it is probably easiest for me ;)

Honza

Reply via email to