PR tree-optimization/86043 - strlen after memcpy partially overwriting a string not...
commite6562f4b1567f7b0a89ccf0accc30aa0c9a1a77b
authormsebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Jul 2018 16:45:43 +0000 (26 16:45 +0000)
committermsebor <msebor@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 26 Jul 2018 16:45:43 +0000 (26 16:45 +0000)
treebea2270f62332f8d85e1bcd3adcb0c246cb32648
parent0aeec5f169078b4a4e58983fcc302dae13a0eac1
PR tree-optimization/86043 - strlen after memcpy partially overwriting a string not optimized
PR tree-optimization/86042 - missing strlen optimization after second strcpy

gcc/ChangeLog:

PR tree-optimization/86043
PR tree-optimization/86042
* tree-ssa-strlen.c (handle_builtin_memcpy): Handle strict overlaps.
(get_string_cst_length): Rename...
(get_min_string_length): ...to this.  Add argument.
(handle_char_store): Extend to handle multi-character stores by
MEM_REF.
* tree.c (initializer_zerop): Use new argument.  Handle MEM_REF.
* tree.h (initializer_zerop): Add argument.

gcc/testsuite/ChangeLog:

PR tree-optimization/86043
PR tree-optimization/86042
* gcc/testsuite/gcc.dg/attr-nonstring-2.c: Xfail test cases due to
pr86688.
* gcc.dg/strlenopt-44.c: New test.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@263018 138bc75d-0d04-0410-961f-82ee72b054a4
gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.dg/attr-nonstring-2.c
gcc/testsuite/gcc.dg/strlenopt-54.c [new file with mode: 0644]
gcc/tree-ssa-strlen.c
gcc/tree.c
gcc/tree.h