On Fri, Jan 04, 2019 at 11:54:46PM +0100, Jakub Jelinek wrote:
> The following patch fixes ICU miscompilation, where an initial part of a
> buffer is initializer from non-zero terminated string literal (in ICU
> actually from an array of non-zero chars that the FE newly turns into
> non-zero terminated string literal), but the code recently added to
> tree-ssa-strlen.c doesn't consider the possibility of string literals that
> aren't zero terminated.
> 
> STRING_CSTs actually are always zero terminated, but if TREE_STRING_LENGTH
> doesn't include the terminating character, it is just bytes.
> 
> Fixed thusly, bootstrapped/regtested on x86_64-linux and i686-linux, ok for
> trunk?
> 
> I was considering using strnlen, but if all STRING_CSTs are actually zero
> terminated, it will mean it reads are most one further byte and on many
> targets strlen is more optimized than strnlen.

I mean hosts.

> 2019-01-04  Jakub Jelinek  <ja...@redhat.com>
> 
>       PR tree-optimization/88693
>       * tree-ssa-strlen.c (get_min_string_length): Don't set *full_string_p
>       for STRING_CSTs that don't contain any NUL characters in the first
>       TREE_STRING_LENGTH bytes.
> 
>       * gcc.c-torture/execute/pr88693.c: New test.

I'd like to ping this patch.  Thanks.

        Jakub

Reply via email to