On 09/12/2017 09:59 AM, Tsimbalist, Igor V wrote: > >> Q. Do we need to do anything with ICF (identical code folding) and CFE? >> Given two functions which have the same implementation in gimple, except >> that one has a notrack indirect call and the other has a tracked indirect >> call, >> what is proper behavior? I think we'd keep them separate which implies we >> need to make sure the notrack attribute is part of the ICF hashing >> implementation. It'd probably even be worth building a test for this :-) > Are you talking about a case when such two functions are inlined? Or there is > a possibility to merge > function bodies if they are identical? The latter. The compiler has a couple strategies when it finds identical bodies. I'm over-simplifying, but given two functions, A and B. If ICF hashing finds they are identical, then only one function definition would be emitted.
So given two functions A & B. They are identical except that A has an indirect call and the signature of the call target has the notrack attribute while B has an indirect call and the signature of the call target does not have the notrack attribute. A & B would be subject to ICF, but I don't think that's the right/safe thing to do. Or am I missing something? jeff