This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [PATCH] Make strlen range computations more conservative
On 08/22/18 00:43, Jeff Law wrote:
> [ I'm still digesting, but saw something in this that ought to be broken
> out... ]
>
> On 08/19/2018 09:55 AM, Bernd Edlinger wrote:
>> diff -Npur gcc/tree-ssa-dse.c gcc/tree-ssa-dse.c
>> --- gcc/tree-ssa-dse.c 2018-07-18 21:21:34.000000000 +0200
>> +++ gcc/tree-ssa-dse.c 2018-08-19 14:29:32.344498771 +0200
>> @@ -248,6 +248,12 @@ compute_trims (ao_ref *ref, sbitmap live
>> residual handling in mem* and str* functions is usually
>> reasonably efficient. */
>> *trim_tail = last_orig - last_live;
>> + /* Don't fold away an out of bounds access, as this defeats proper
>> + warnings. */
>> + if (*trim_tail
>> + && compare_tree_int (TYPE_SIZE_UNIT (TREE_TYPE (ref->base)),
>> + last_orig) <= 0)
>> + *trim_tail = 0;
>> }
>> else
>> *trim_tail = 0;
> This seems like a good change in and of itself and should be able to go
> forward without further review work. Consider this hunk approved,
> along with any testsuite you have which tickles this code (I didn't
> immediately see one attached to this patch. But I could have missed it).
>
Sorry, for not being clear on this.
I needed both hunks "Don't fold away an out of bounds access, as this defeats proper
warnings" to prevent a regression on gcc.dg/Wstringop-overflow-5.c,
and surprise surprise, the xfail in gcc.dg/Wstringop-overflow-6.c suddenly popped up.
So without the unsafe range info, gcc.dg/Wstringop-overflow-5.c needs both hunks
to not regress, but gcc.dg/Wstringop-overflow-6.c only needs the other one I committed
yesterday.
So unfortunately I have no test case except gcc.dg/Wstringop-overflow-5.c for that.
Still OK?
Bernd.