On Tue, Oct 12, 2021 at 8:58 PM Erick Ochoa via Gcc <gcc@gcc.gnu.org> wrote: > > Hi, > > I have an LTO pass which stores information collected during "generate > function summary" in a map which is symtab_node* -> data*. I know that > the symtab_node*s are encoded by an lto encoder and can be decoded > back during the "read function summary". I also am aware that other > optimizations might be removing or adding cgraph_node*s to the program > and my pass uses the insertion and removal hooks to analyze or drop > these accordingly. However, I am confused about different function > versions. My current understanding is that different versions of the > same function share the same cgraph_node*. Is this correct?
No, they have a different cgraph_node. > If that's the case, that would mean that storing information on a map > where the key is the symtab_node* is probably not a good idea as a > specific version of the function might be dropped and in that case I > may be dropping information for all cases. > > This brings me to the field "order" in symtab_node. Is this field > constant through the linking process and can it be used to > differentiate between different versions of the same function? > > Thanks!