On January 24, 2018 6:40:25 PM GMT+01:00, Jakub Jelinek <ja...@redhat.com> 
wrote:
>On Wed, Jan 24, 2018 at 06:36:02PM +0100, Martin Jambor wrote:
>> > I think there's already a set of attributes that prevent cloning
>and
>> > or are adjusted by the IPA param machinery. The Martins or Honza
>> > should know better.
>> 
>> I am not sure I understand the problem but if
>> tree_versionable_function_p returns false, the local.versionable bit
>is
>> not set and no cloning for that function happens.
>> 
>> If it is sufficient that IPA-CP and other IPA passes do not change
>the
>> function type in any way (in practice that they don't remove
>> parameters), it is sufficient to clear the local.can_change_signature
>> cgraph flag in compute_fn_summary() in ipa-fnsummary.c.  That is how
>we
>> handle, or rather avoid handling, fnspec attributes.
>
>Well, "omp declare simd" is a part of the ABI just for the original
>exported
>functions, for everything else it is a pure optimization, but I'm not
>sure
>if we want to deoptimize e.g. callers of these functions outside of
>loops
>by disabling the signature changing cloning for those.  For calls from
>within OpenMP simd regions or other loops where we try hard to
>vectorize
>them, it might make sense not to change those callers, for callers from
>other loops, a question.

Until we can distinguish the cases I think not changing the signature by 
default might be a good thing. 

Richard. 

>       Jakub


Reply via email to