aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.h
diff options
context:
space:
mode:
authorMartin Jambor <mjambor@suse.cz>2023-08-07 19:13:41 +0200
committerMartin Jambor <mjambor@suse.cz>2023-08-07 19:13:57 +0200
commitda1a888b524d620c7a17f368b69c46934b69495c (patch)
treec404240998c4f970617678d617fa25580b10ab06 /gcc/tree-inline.h
parent8ae83274d8cc60547e8c92a41a4f4716b045f57a (diff)
downloadgcc-da1a888b524d620c7a17f368b69c46934b69495c.zip
gcc-da1a888b524d620c7a17f368b69c46934b69495c.tar.gz
gcc-da1a888b524d620c7a17f368b69c46934b69495c.tar.bz2
ipa-sra: Don't consider CLOBBERS as writes preventing splitting
When IPA-SRA detects whether a parameter passed by reference is written to, it does not special case CLOBBERs which means it often bails out unnecessarily, especially when dealing with C++ destructors. Fixed by the obvious continue in the two relevant loops and by adding a simple function that marks the clobbers in the transformation code as statements to be removed. gcc/ChangeLog: 2023-08-04 Martin Jambor <mjambor@suse.cz> PR ipa/110378 * ipa-param-manipulation.h (class ipa_param_body_adjustments): New members get_ddef_if_exists_and_is_used and mark_clobbers_dead. * ipa-sra.cc (isra_track_scalar_value_uses): Ignore clobbers. (ptr_parm_has_nonarg_uses): Likewise. * ipa-param-manipulation.cc (ipa_param_body_adjustments::get_ddef_if_exists_and_is_used): New. (ipa_param_body_adjustments::mark_dead_statements): Move initial checks to get_ddef_if_exists_and_is_used. (ipa_param_body_adjustments::mark_clobbers_dead): New. (ipa_param_body_adjustments::common_initialization): Call mark_clobbers_dead when splitting. gcc/testsuite/ChangeLog: 2023-07-31 Martin Jambor <mjambor@suse.cz> PR ipa/110378 * g++.dg/ipa/pr110378-1.C: New test.
Diffstat (limited to 'gcc/tree-inline.h')
0 files changed, 0 insertions, 0 deletions