ipa-sra: Do not remove statements necessary because of non-call EH (PR 95113)
authorMartin Jambor <mjambor@suse.cz>
Thu, 4 Jun 2020 15:03:27 +0000 (17:03 +0200)
committerMartin Jambor <mjambor@suse.cz>
Thu, 4 Jun 2020 15:03:27 +0000 (17:03 +0200)
commit1980ffec48c6fa41396bea66366f2e591798e1e1
tree6d6a02b3b314205c6b1dd91fb644dafd4ee94753
parent9a810e57c4e6af54d29c325a013f451ade2b85e8
ipa-sra: Do not remove statements necessary because of non-call EH (PR 95113)

PR 95113 revealed that when reasoning about which parameters are dead,
IPA-SRA does not perform the same check related to non-call exceptions
as tree DCE.  It most certainly should and so this patch moves the
condition used in tree-ssa-dce.c into a separate predicate (in
tree-eh.c) and uses it from both places.

gcc/ChangeLog:

2020-05-27  Martin Jambor  <mjambor@suse.cz>

PR ipa/95113
* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move non-call
exceptions check to...
* tree-eh.c (stmt_unremovable_because_of_non_call_eh_p): ...this
new function.
* tree-eh.h (stmt_unremovable_because_of_non_call_eh_p): Declare it.
* ipa-sra.c (isra_track_scalar_value_uses): Use it.  New parameter
fun.

gcc/testsuite/ChangeLog:

2020-05-27  Martin Jambor  <mjambor@suse.cz>

PR ipa/95113
* gcc.dg/ipa/pr95113.c: New test.
gcc/ipa-sra.c
gcc/testsuite/gcc.dg/ipa/pr95113.c [new file with mode: 0644]
gcc/tree-eh.c
gcc/tree-eh.h
gcc/tree-ssa-dce.c