https://gcc.gnu.org/bugzilla/show_bug.cgi?id=103121

--- Comment #9 from Andrew Macleod <amacleod at redhat dot com> ---
(In reply to Martin Sebor from comment #8)
> The [1, 1] range comes from a call to qry->range_of_expr (vr, exp, stmt) in
> in get_size_range() in pointer-query.cc:
>
> (gdb) 
> #7  0x000000000192c0df in strlen_pass::maybe_warn_overflow (
>     this=0x7fffffffd880, stmt=0x7ffff4de2730, call_lhs=true, 
>     len=0x7ffff78ff4e0, si=0x0, plus_one=false, rawmem=false)
>     at /src/gcc/master/gcc/tree-ssa-strlen.c:2038
> 2038    tree destsize = compute_objsize (dest, stmt, ostype, &aref, &ptr_qry);
> (gdb) dg stmt
> # .MEM_53 = VDEF <.MEM_36>
> *grp_name_37 = 0;
> $7 = (gimple *) 0x7ffff4de2730


and is this not from:

  <bb 12> [local count: 12992276]:
  *grp_name_37 = 0;
  goto <bb 14>; [100.00%]

which means we have taken the branch 4->12 and should expect:

4->12  (F) _1 :         unsigned int [0, 0]
4->12  (F) _4 :         unsigned int [1, 1]

which is exactly what you are getting?

Reply via email to