> Hi,
> 
> interactions of IPA-CP and IPA-SRA on the same data is a rather big
> source of issues, I'm afraid.  PR 113964 is a situation where IPA-CP
> propagates an unsigned short in a union parameter into a function
> which itself calls a different function which has a same union
> parameter and both these union parameters are split with IPA-SRA.  The
> leaf function however uses a signed short member of the union.
> 
> In the calling function, we get the unsigned constant as the
> replacement for the union and it is then passed in the call without
> any type compatibility checks.  Apparently on riscv64 it matters
> whether the parameter is signed or unsigned short and so the leaf
> function can see different values.
> 
> Fixed by using useless_type_conversion_p at the appropriate place and
> if it fails, use force_value_to type as elsewhere in similar
> situations.
> 
> Bootstrapped and tested on x86_64-linux, the reporter has also run the
> testsuite with this patch on riscv64 and reported in Bugzilla there were
> no issues.
> 
> OK for master and GCC 13?
> 
> Thanks,
> 
> Martin
> 
> 
> gcc/ChangeLog:
> 
> 2024-04-04  Martin Jambor  <mjam...@suse.cz>
> 
>       PR ipa/113964
>       * ipa-param-manipulation.cc (ipa_param_adjustments::modify_call):
>       Force values obtined through pass-through maps to the expected
>       split type.
> 
> gcc/testsuite/ChangeLog:
> 
> 2024-04-04  Patrick O'Neill  <patr...@rivosinc.com>
>           Martin Jambor  <mjam...@suse.cz>
> 
>       PR ipa/113964
>       * gcc.dg/ipa/pr114247.c: New test.
OK,
thanks!
Honza

Reply via email to