Please review writeup for fixing PR 78809 (inline strcmp for small constant strings)
Jeff Law
law@redhat.com
Sat Nov 18 01:32:00 GMT 2017
On 11/17/2017 03:45 PM, Qing Zhao wrote:
>>> do you think using this routine is good? or do you have other
>>> suggestions (since I am still not very familiar with the internals of
>>> GCC, might not find the best available one nowâ¦)
>> The range information attached to an SSA_NAME is global data. ie, it
>> must hold at all locations where the object in question might be
>> referenced. This implies that it will sometimes (often?) be less
>> precise than you might like.
>
> do you mean the âvalue_rangeâ attached to SSA_NAME?
>
> For my purpose, Iâd like to get the maximum length of char array s[100] is 100, which is larger than the size of constant string âabcâ, then
> I can safely apply the transformation to memcmp.
>
> can âvalue_rangeâ info serve this purpose?
No it can't. Sorry for leading you the wrong direction. What you're
looking for is the object size interfaces.
See tree-object-size.[ch]
That's a pass that tries to compute the sizes of various objects
referenced by the IL.
Note that the object size is different than say the length of a string
stored in an object for which you'll probably be looking at
tree-ssa-strlen's interfaces.
Ranges are more for integer objects. ie, i has the value [0,25] or ~[0,0].
>
>>
>> I am currently working towards an embeddable context sensitive range
>> analyzer that in theory could be used within tree-ssa-strlen pass to
>> give more precise range information. I'm hoping to wrap that work up in
>> the next day or so so that folks can use it in gcc-8.
>
> such context sensitive range info should be useful when we relax the constant âNâ to be an expression whose Min value is larger than the length
> of constant string, with it, we can catch more opportunities.
> let me know when this info is available.
Hoping to have the basics into the trunk within the next few days as
reviews flow in.
jeff
More information about the Gcc
mailing list