Hi, I have a pass that is able to speculate the target of indirect function calls. This pass is an IPA_PASS. It:
1. generates summaries with the possible targets. 2. writes analysis summary 3. reads analysis summary 4. combines the results from multiple partitions and if needed fixes the targets 5. writes opt summary 6. reads opt summary 7. calls ipa_make_edge_direct_to_target with speculative=true This pass is successful in that I can observe the transformation in the generated gimple. (A function test and a direct function call in one branch and the indirect function call in the other.) However, I would like to make the edges in the call graph visible to other IPA passes, particularly ipa-cp. For this, I would need to create virtual clones during the WPA stage. I am a little unfamiliar with virtual clones. What kind of information would I need to store in the analysis summary and is there a way to create speculative virtual clones? Can someone point to a similar piece of code in GCC where this happens? Thanks!