diff options
author | Martin Sebor <msebor@redhat.com> | 2018-06-11 20:01:40 +0000 |
---|---|---|
committer | Martin Sebor <msebor@gcc.gnu.org> | 2018-06-11 14:01:40 -0600 |
commit | 223c63e62ab44cb36102758dffd5ac8c9ab63bb1 (patch) | |
tree | c2cf4657e86b6d834d4725d513d683dbc6e29638 /gcc/tree-ssa-strlen.c | |
parent | 87cbbc45a950f382853e2e4cf494cdfab62f0e5b (diff) | |
download | gcc-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.c | 4 |
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; |