diff options
author | Martin Liska <mliska@suse.cz> | 2019-07-31 12:02:30 +0200 |
---|---|---|
committer | Martin Liska <marxin@gcc.gnu.org> | 2019-07-31 10:02:30 +0000 |
commit | f39b06395e90d8c70548eedadc30e880f6426b26 (patch) | |
tree | 565fccf0e741cdffcbafaf66e804d92ff13d7e87 /gcc | |
parent | 0fbdb0c08856e9c37373cf04faef3213c3903531 (diff) | |
download | gcc-f39b06395e90d8c70548eedadc30e880f6426b26.zip gcc-f39b06395e90d8c70548eedadc30e880f6426b26.tar.gz gcc-f39b06395e90d8c70548eedadc30e880f6426b26.tar.bz2 |
Mark necessary 2nd and later args for delete op.
2019-07-31 Martin Liska <mliska@suse.cz>
* tree-ssa-dce.c (propagate_necessity): Delete operator can
have size and (or) alignment as 2nd and later arguments.
Mark all of them as necessary.
From-SVN: r273929
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/tree-ssa-dce.c | 15 |
2 files changed, 15 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c7b99f2..564bd70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2019-07-31 Martin Liska <mliska@suse.cz> + + * tree-ssa-dce.c (propagate_necessity): Delete operator can + have size and (or) alignment as 2nd and later arguments. + Mark all of them as necessary. + 2019-07-31 Richard Biener <rguenther@suse.de> PR tree-optimization/91178 diff --git a/gcc/tree-ssa-dce.c b/gcc/tree-ssa-dce.c index bec13cd..80d5f5c 100644 --- a/gcc/tree-ssa-dce.c +++ b/gcc/tree-ssa-dce.c @@ -824,13 +824,16 @@ propagate_necessity (bool aggressive) || DECL_FUNCTION_CODE (def_callee) == BUILT_IN_CALLOC)) || DECL_IS_REPLACEABLE_OPERATOR_NEW_P (def_callee))) { - /* Some delete operators have size as 2nd argument. */ + /* Delete operators can have alignment and (or) size as next + arguments. When being a SSA_NAME, they must be marked + as necessary. */ if (is_delete_operator && gimple_call_num_args (stmt) >= 2) - { - tree size_argument = gimple_call_arg (stmt, 1); - if (TREE_CODE (size_argument) == SSA_NAME) - mark_operand_necessary (size_argument); - } + for (unsigned i = 1; i < gimple_call_num_args (stmt); i++) + { + tree arg = gimple_call_arg (stmt, i); + if (TREE_CODE (arg) == SSA_NAME) + mark_operand_necessary (arg); + } continue; } |