aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-strlen.c
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2018-06-11 20:01:40 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2018-06-11 14:01:40 -0600
commit223c63e62ab44cb36102758dffd5ac8c9ab63bb1 (patch)
treec2cf4657e86b6d834d4725d513d683dbc6e29638 /gcc/tree-ssa-strlen.c
parent87cbbc45a950f382853e2e4cf494cdfab62f0e5b (diff)
downloadgcc-223c63e62ab44cb36102758dffd5ac8c9ab63bb1.zip
gcc-223c63e62ab44cb36102758dffd5ac8c9ab63bb1.tar.gz
gcc-223c63e62ab44cb36102758dffd5ac8c9ab63bb1.tar.bz2
PR tree-optimization/86083 - handle non-constant assignments in strlen
gcc/ChangeLog: PR tree-optimization/86083 * tree-ssa-strlen.c (handle_char_store): Use tree_expr_nonzero_p. gcc/testsuite/ChangeLog: PR tree-optimization/86083 * gcc.dg/strlenopt-44.c: New test. From-SVN: r261452
Diffstat (limited to 'gcc/tree-ssa-strlen.c')
-rw-r--r--gcc/tree-ssa-strlen.c4
1 files changed, 1 insertions, 3 deletions
diff --git a/gcc/tree-ssa-strlen.c b/gcc/tree-ssa-strlen.c
index 5056214..cc1f5f4 100644
--- a/gcc/tree-ssa-strlen.c
+++ b/gcc/tree-ssa-strlen.c
@@ -3073,9 +3073,7 @@ handle_char_store (gimple_stmt_iterator *gsi)
}
bool storing_zero_p = initializer_zerop (rhs);
- bool storing_nonzero_p = (!storing_zero_p
- && TREE_CODE (rhs) == INTEGER_CST
- && integer_nonzerop (rhs));
+ bool storing_nonzero_p = !storing_zero_p && tree_expr_nonzero_p (rhs);
/* Set to the length of the string being assigned if known. */
HOST_WIDE_INT rhslen;