ipa-sra: Avoid transitive splits with type mismatches (PR 96040)
commitb9a15a8325ba89b926e3c437b7961829a6b2fa2b
authorMartin Jambor <mjambor@suse.cz>
Fri, 3 Jul 2020 15:37:33 +0000 (3 17:37 +0200)
committerMartin Jambor <mjambor@suse.cz>
Fri, 3 Jul 2020 15:37:33 +0000 (3 17:37 +0200)
tree3183b83ea5aaa813b93c3e4ea754a6c3d56a2e08
parente7f3f7fe08bdd49367f682398e1d2f4e6b60ef84
ipa-sra: Avoid transitive splits with type mismatches (PR 96040)

PR 96040 revealed IPA-SRA, when checking whether an intended split is
the same as the one in a called function does not also check if the
types match and the transformation code does not handle any resulting
type mismatches.  This patch simply avoids the the split in the case
of mismatches, so that we do not have to be careful about invalid
floating-point values being passed in floating point registers and
related issues.

gcc/ChangeLog:

2020-07-03  Martin Jambor  <mjambor@suse.cz>

PR ipa/96040
* ipa-sra.c (all_callee_accesses_present_p): Do not accept type
mismatched accesses.

gcc/testsuite/ChangeLog:

2020-07-03  Martin Jambor  <mjambor@suse.cz>

PR ipa/96040
* gcc.dg/ipa/pr96040.c: New test.
gcc/ipa-sra.c
gcc/testsuite/gcc.dg/ipa/pr96040.c [new file with mode: 0644]