> > > 1. pid of lgen process that generated the encoding > > > 2. index returned by lto_symtab_encoder_encode > > > 3. varpool_node->name () > > > 4. the pointer address being pointed by varpool node > > Well, yes, during LGEN no WPA has run. Do you mean LTRANS after WPA? > Sure, the encoder numbers do not have to match up between different > LTRANS units but then they don't speak to each other so that shouldn't > matter, no?
No. I mean during WPA. On a different e-mail I clarified the following: ``` > > fopen $PID1 8 $ADDR1 > fopen $PID2 7 $ADDR2 > Just to clarify a bit further. $PID is generated and stored during LGEN. The encoding is obviously generated during LGEN. These are read during WPA. And the encoding is decoded and dyn_casted into a cgraph_node at WPA time. All these are printed during WPA. ``` > > I _think_ that it should work if you stream at LGEN constraint variables > as their varpool node (using the varpool encoder), get the nodes merged > at WPA time, and thus your constraints from different LGEN runs "merged" > properly, then stream them the same way to the LTRANS units? > The only reference to a varpool encoder is on the Changelog. The only encoder I know of is the symtab_encoder (which I believe should be the same as varpool_nodes and cgraph_nodes are both symtab_nodes). But again, I do not know what you mean by "merged" here, since they have different addresses. > > And the same solution should exist. For "merged" function definitions > (like multiple same inline definitions) you'd simply drop all but one set of > constraints. > Yes, this is what I would like, but I don't see how to detect "merged" function definitions. I can get their cgraphs but as I mentioned for every encoding I decode and dyn_cast all I get is a cgraph holding a different address. What does "merged" concretely mean?